View all services
Talk to QA Advisor
/Blog/How to Use ChatGPT for Software Testing (2027): What It Can Do Now, Tested
AI TestingInsights10 min read

How to Use ChatGPT for Software Testing (2027): What It Can Do Now, Tested

How to use ChatGPT for software testing in 2027, from four real tests: reading code, running it, finding current versions and repeating a prompt, plus where it fits in your workflow.

Published April 11, 2023Last updated October 29, 2026
On this page

The earlier version of this post listed four reasons ChatGPT could not help much with testing. It said ChatGPT could not understand code, could not run tests, could not grasp context and might miss edge cases. On 29 October 2026 we tested each claim in ChatGPT's Free plan, using fresh temporary chats with memory and custom instructions switched off.

Three of the four claims failed. ChatGPT found planted bugs, executed Python and used the context we gave it. The real limits today are different, and more useful to know: it predicts when it is not asked to run something, and the same prompt gives a different answer in a new chat. This guide shows each test, what came back and how to use ChatGPT in a testing workflow with those limits in mind.

Figure 1 · Claims tested
Three of four old limits failed our tests
Each quote is from the earlier version of this post. Each test ran in ChatGPT's Free plan.
"ChatGPT is unable to understand any sort of code"
Given a pagination function with two planted bugs and no hint, it found both and fixed them.
No longer true
"it will not be able to execute the tests"
Asked to run Python, it returned a SHA-256 prefix that matched our own run character for character.
No longer true
"doesn't have the ability to recognize the context"
It used our note that page numbers start at 1 to flag page 0 as invalid input.
No longer true
"may not have the capability to build those edge tests"
It tested 29, 30 and 31 minutes and flagged 30:00 as undefined, but a matrix tagged "Boundary" had no boundary case.
Partly true
Source: ChatGPT Free, temporary unpersonalised chats, 29 October 2026; our checks in Python 3.14.7 and Node 26.7.0.

How to set up ChatGPT for testing work

A few settings change how much you can trust what comes back. These are the ones we used for every test in this guide.

Start a temporary chat for each task

Each test ran in a new temporary chat. ChatGPT's screen describes it plainly: "This chat won't appear in history." A fresh chat matters for testing because an earlier conversation can shape a later answer, and you want each answer to stand on the prompt you just wrote.

Switch off personalisation

Temporary chats offer a setting called Unpersonalized, which the interface describes as: "This chat will ignore memory, plugins, and custom instructions." We used it so that nothing saved in the account could steer the results. For your own work, decide deliberately: custom instructions about your stack can help, but they also make results harder to compare between testers.

Know the Free plan's limits

Everything in this guide worked on the Free plan, including code execution and web search. Uploads are the tight limit: three files a day on Free. For testing tasks, paste small inputs as text instead: a requirement, a function, a failing log. Keep credentials and real customer data out of the chat entirely.

Where ChatGPT fits in a testing workflow

ChatGPT Interface
ChatGPT Interface

ChatGPT is a draft partner. It can review a requirement, propose test cases, write test data and automation code, review code and look up current facts. At every one of those steps in our runs, the answer was either good or confidently wrong, and the two looked alike. The step that separated them was always a check against something real.

Figure 2 · Workflow
Use it at every step, check it at every step
What ChatGPT did at each stage of testing in our runs, and the one check that caught its mistakes.
Requirement review
Lists open questions and assumptions
Check: Send its questions to the product owner
Test design
Broad coverage, which varies between chats
Check: Run the prompt twice and merge
Test data
Correct format, some wrong labels
Check: Validate every row by script
Automation code
Current APIs; can miss an import or guess a URL
Check: Run it against a known app
Code review
Finds real bugs; may predict outputs wrongly
Check: Ask it to execute, then run it yourself
Versions and facts
Searches the web and cites sources
Check: Open the source it cites
Source: our 16 ChatGPT chats on 29 October 2026, across this post and our prompt library.

The screenshots in this guide come from the earlier version of this post and show an older ChatGPT interface. The chat window has changed; the way you work with it has not: you write a prompt, read the answer and decide what to keep.

For ready-to-use prompts with the answers we got back, see our tested list of ChatGPT prompts for software testing. This guide covers what sits around those prompts: what ChatGPT can do now, where it slips, and how to check it.

Test 1: can it read code and find a bug?

Here's How ChatGPT will Make Testing Better
Here's How ChatGPT will Make Testing Better

The old post said: "ChatGPT is unable to understand any sort of code." We gave it two short JavaScript functions for paginating an orders list, with two bugs planted and no hint about them. We told it only that page numbers start at 1.

function paginate(items, page, size) { const start = (page - 1) * size; const end = start + size + 1; return items.slice(start, end); } function totalPages(count, size) { return Math.floor(count / size); }

ChatGPT found both bugs. It explained that end adds one too many, so paginate returns "up to size + 1 items", and that Math.floor "undercounts the required pages whenever the number of items is not evenly divisible by the page size." It gave the right fixes, start + size and Math.ceil, and wrote a corrected version with input checks. We ran that version: five items at two per page gave three pages with every item exactly once, and page 0 threw "page must be a positive integer".

It also used our context. Because we said pages start at 1, it flagged page 0 as invalid input and noted that this was "a robustness concern rather than necessarily a bug" if callers always pass valid pages. That is a judgement a tester would make.

What to watch: the outputs it claims. For each bug, we asked for an input with the expected and actual output. Two of its three "actual" outputs were right. For page 0 it said the function returns ["B", "C"]. We ran it in Node 26.7.0, and the real result is an empty array.

Figure 3 · Run or predict
Right when it ran the code, wrong when it guessed
ChatGPT can execute Python, but it only does so when the prompt asks. Otherwise it predicts what code will do.
Asked to run the code
2 of 2 outputs correct
It ran the code and said so. Both values matched ours.
Asked for the actual output, not told to run
2 of 3 outputs correct
For page 0 it claimed ["B", "C"]. Node returns [], because slice(-2, 1) on three items is slice(1, 1).
Source: ChatGPT Free, temporary unpersonalised chats, 29 October 2026; outputs checked in Node 26.7.0 and Python 3.14.7.

The reason is in MDN's documentation for slice(): for a negative start, "start + array.length is used". With three items, slice(-2, 1) becomes slice(1, 1), which is empty. ChatGPT explained the negative index correctly and then got the arithmetic wrong, because it predicted the output instead of running it.

Turn the finding into a regression test. A bug ChatGPT finds is only fixed once a test would catch it coming back. We wrote three checks with Node's built-in test runner, one for each behaviour the bugs broke:

// Regression tests for the pagination bugs ChatGPT found (Test 1). Run: node --test pagination.test.js
// IMPL=buggy runs them against the original code; default is ChatGPT's corrected version.
const test = require("node:test");
const assert = require("node:assert/strict");
const { paginate, totalPages } = require(process.env.IMPL === "buggy" ? "./pagination-buggy.js" : "./pagination-fixed.js");

const items = ["A", "B", "C", "D", "E"];

test("a page never holds more than the page size", () => {
  assert.deepEqual(paginate(items, 1, 2), ["A", "B"]);
});

test("a partial last page still counts as a page", () => {
  assert.equal(totalPages(5, 2), 3);
});

test("walking every page returns every item exactly once", () => {
  const seen = [];
  for (let p = 1; p <= totalPages(items.length, 2); p++) seen.push(...paginate(items, p, 2));
  assert.deepEqual(seen, items);
});
Figure 4 · Regression run
Three tests, 0 of 3 passing, then 3 of 3
The same three tests against the original pagination code and against ChatGPT's corrected version.
a page never holds more than the page size
Original: fail
Fixed: pass
a partial last page still counts as a page
Original: fail
Fixed: pass
walking every page returns every item exactly once
Original: fail
Fixed: pass
Source: our run with Node's built-in test runner, Node 26.7.0, 29 October 2026.

Against the original code, all three tests failed. Against ChatGPT's corrected version, all three passed on Node 26.7.0. The third test is the one worth copying: walking every page and checking each item appears exactly once catches both bugs, and any future one that drops or repeats an item.

Test 2: can it actually run code?

The old post said that ChatGPT "will not be able to execute the tests". We asked it to run two lines of Python and tell us whether it had executed them or predicted the result. The first line prints part of a SHA-256 hash, which nobody can predict, so a guess would show at once.

import hashlib; print(hashlib.sha256(b'qable-48-29oct').hexdigest()[:16]); print(sum(i*i for i in range(1, 2027)) % 9973)

ChatGPT returned 52f2812bd3d950de and 7467, and said: "I actually executed your Python code using a Python execution environment, rather than predicting the output." Our own run on Python 3.14.7 gave the same two values. The hash match is the proof: it ran the code.

How to use it: put "run this and show the output" in the prompt whenever an answer depends on what code does. Test 1 shows what happens when you do not: it reasons about the code and can get the result wrong. We tested this with Python; for other languages and for browser tests, run the code yourself.

Test 3: can it find today's version of a tool?

Older guides, including the earlier version of our prompt list, said ChatGPT knew nothing after 2021. Today OpenAI's Free tier FAQ lists the ability to "Search the web and obtain up-to-date information". We asked for the latest stable version of the Playwright npm package and its release date, with a source.

ChatGPT answered 1.64.1, released on 14 October 2026, and cited the npm registry. It also noted that the 1.65.0 alpha builds "are prereleases, not stable releases." We checked the Playwright package on npm from the command line the same afternoon: 1.64.1, published on 14 October 2026.

The check itself takes one command. npm view playwright version prints the version npm tags as latest, and npm view playwright time lists every release with its timestamp. We ran both before asking ChatGPT, so we knew the answer it had to match. That is a good habit for any factual question you put to a model: decide how you will check the answer before you read it, so the confident tone of the reply cannot do the persuading.

How to use it: for version numbers, deprecations and release notes, ask for the source and open it. Here the source was right. The habit matters because a version mismatch in a test environment costs more time than the lookup saves.

Test 4: does the same prompt give the same answer?

A test suite should not change because you asked twice. We sent the identical password-reset prompt from our prompt library in two fresh chats about an hour apart. The prompt asked for test cases covering positive, negative, boundary and security checks, and told ChatGPT not to invent requirements.

Figure 5 · Repeatability
Same prompt, same day, different test suite
We sent the identical password-reset prompt in two fresh chats about an hour apart.
Test cases
First chat: 20
Second chat: 22
Assumptions listed
First chat: 10
Second chat: 12
Found in only one chat
First chat only: the reset token leaking to other sites through the Referer header.
Second chat only: using one user's link to reset another user's password, and whether a new link cancels older ones.
Source: ChatGPT Free, temporary unpersonalised chats, 29 October 2026. Both chats left the exact 30:00 boundary for the product owner.

Both chats were good, and both refused to decide whether the link is valid at exactly 30:00. But they were different suites. The first had 20 cases and 10 assumptions; the second had 22 cases and 12 assumptions. Only the first tested the token leaking through the Referer header. Only the second tested whether one user's link can reset another user's password, and asked whether a new link should cancel older ones.

How to use it: for test design, run the prompt twice and merge the unique cases. Then compare the result with a published standard for that feature. For password resets, the OWASP Forgot Password Cheat Sheet asks for tokens that are "Single use and expire after an appropriate period", rate-limiting on a per-account basis and a consistent message "for both existent and non-existent accounts". Both chats listed rate limiting as unspecified rather than testing it, so the standard, not the model, is what flags it as a gap.

Using ChatGPT across the testing lifecycle

With those four results in mind, here is how ChatGPT helps at each stage, and what to do with what it gives you.

Reviewing requirements

Ask ChatGPT to list the questions a requirement leaves open before you design anything. In our runs this was its most reliable strength: it found the undefined 30:00 boundary twice, and asked what "works once" means. Send those questions to the product owner, and you fix gaps before they become defects.

Writing test cases

Test Case Generation With ChatGPT
Test Case Generation With ChatGPT

ChatGPT turns a requirement into a structured set of cases quickly, and it is useful in automating the routine part of writing the test cases. Give it the exact requirement, the columns you want and a guardrail such as "do not invent requirements". Then remove duplicates; in one run, 3 of 20 cases repeated others.

Writing test scenarios

Test Scenario Generation with ChatGPT
Test Scenario Generation with ChatGPT

Scenarios and exploratory charters were among the strongest answers in our prompt runs. The risks it suggested were specific: a copied link that still works after sharing is switched off, or edit controls hidden in the interface while the action still works from an open session. Each scenario it writes tends to be broad, so split it into sessions a tester can finish.

Generating test data

ChatGPT writes CSV and JSON test data in the format you ask for. Check every row before use. In one of our runs, 2 of the 6 rows labelled as invalid broke no rule at all. A second chat that we gave the rules in writing found both mistakes, so ask for the data, then ask for a check against written rules.

API and mobile test scripts

For API testing, ChatGPT can draft request collections and assertions for tools such as Postman and REST Assured, and for testing various mobile applications it can draft Appium scripts. Treat both as a first draft: in our prompt runs, generated test code missed an import in one case and asserted a URL it had guessed in another. Run every script against a known build before it joins a suite.

Reviewing automation code

Paste a failing or flaky test and ask for problems in order of severity. In our prompt runs, ChatGPT's review of a Playwright login test named the real faults: fixed sleeps, a visibility check that does not retry, brittle selectors and hard-coded credentials. Its rewrite ran in 256 to 286 ms against 8,201 to 8,234 ms for the original on our local login page.

Then read its additions, not only its fixes. The rewrite added an assertion on a post-login URL it had guessed, and it failed as soon as our app redirected somewhere else. A review is only as good as the assumptions it does not state, so ask ChatGPT to list every assumption it made about your app.

Turning notes into bug reports

A good bug report is reproducible, and a vague note is not. Given "checkout kinda broke on iphone when i used a coupon, total went weird", ChatGPT wrote a structured report, marked the iOS version, browser and amounts "Unknown" rather than inventing them, and asked first whether the customer was actually charged the wrong amount.

It asked 14 follow-up questions, which is more than any reporter will answer. Pick the four or five that unblock reproduction: device and browser, coupon code, totals before and after, and whether a card was charged.

Drafting test summary reports

ChatGPT writes a clear summary report from the numbers you give it, and when we told it not to add numbers, it added none. It also recommended no-go for an open major defect, with formal risk acceptance as the alternative.

It did not question our inputs. We described 412 cases as executed while 6 were blocked, and a blocked case did not run. The report repeated our figure without comment. Before you share an AI-written report, check the totals yourself: the model reports your mistakes faithfully.

Checking tool versions and release notes

Version questions are where web search earns its place. When we asked for Playwright's latest stable release, ChatGPT gave 1.64.1 with its release date, cited npm, and separated the 1.65.0 alpha builds from the stable line. That distinction matters in testing, because a prerelease in a shared environment can change behaviour under your suite. Ask for the source every time, and pin the version your tests ran against in your project file.

Also Read: AI in Software Testing: Where is it now & where it will be

Prompts that ask for the check, not just the answer

The pattern behind every good answer in our tests was the same: ChatGPT had something real to check against. You can build that into the prompt. Three patterns did the work.

Ask it to execute. When an answer depends on what code does, say "run this and show the output, and tell me whether you executed it". In Test 2 that produced a verified result; in Test 1, without it, one output was wrong.

Give it written rules to check against. Our test-data run labelled two valid rows as invalid. A second chat, given the rules in writing, found both mistakes and flagged none of the correct rows. This is the prompt we sent, with the phone and postcode format details shortened and the rows left out:

Check this sign-up test data. Rules: first_name and last_name are required;
email must be an address at example.com; phone must match the country;
postcode must match the country's format; country must be UK, US or India.
Each row below is labelled with the one rule it is meant to break. For each
row, say whether it really breaks exactly that rule and nothing else, then
list any rows whose label is wrong.

Ask twice for anything that designs coverage. Test 4 showed that two chats give two different suites. Merge them, then compare the result with a standard for the feature.

None of these patterns needs a paid plan. All of our runs used ChatGPT's Free plan.

A worked example: one feature from requirement to test suite

Here is how the pieces fit on a single feature, using the password-reset requirement from Test 4: "A user can reset their password via an emailed link that expires after 30 minutes and works once."

Step 1: questions before cases. Both chats refused to decide two things the requirement leaves open: whether the link still works at exactly 30:00, and whether "works once" means once opened or once used. The second chat added a third: whether requesting a new link cancels older ones. Those three questions go to the product owner first, because every expiry and reuse test depends on the answers.

Step 2: two chats, merged. The first chat produced 20 cases and the second 22. Most overlapped: both covered success, expiry at 29 and 31 minutes, reuse after success, tampered and missing tokens, and server-side enforcement. Each also had something the other lacked, so the merged suite is stronger than either.

Step 3: compare with a standard. Neither chat tested rate limiting or account enumeration, and both listed rate limiting as unspecified because the requirement did not mention it. The OWASP cheat sheet covers both. It also asks for an email telling the user their password changed, which the second chat listed only as unspecified, and says not to log the user in automatically afterwards, which neither chat raised.

Figure 6 · Merged suite
Two chats and a standard beat one chat
Where each check in the password-reset suite came from. Checks marked OWASP only appeared in neither chat as a test case.
Both chats
• Reset succeeds with a valid link
• Link accepted at 29 minutes, rejected at 31
• Link rejected after a successful reset
• Tampered and missing tokens rejected
• Expiry and reuse enforced on the server
First chat only
• Token not leaked to other sites in the Referer header
• Two sessions racing to use one link
Second chat only
• One user's link cannot reset another user's password
• Question: does a new link cancel older ones?
OWASP only
• Rate limiting per account
• Same message for existing and unknown accounts
• Email the user after the password changes
• Do not log the user in automatically
Source: ChatGPT Free, temporary unpersonalised chats, 29 October 2026; OWASP Forgot Password Cheat Sheet, read 29 October 2026.

Step 4: data and code. With the suite agreed, ChatGPT can draft the test data and the automation. That is where our other runs found the most mistakes: rows labelled wrongly, a missing import, a guessed URL. Run the code and validate the data before any of it reaches a pipeline.

The whole sequence took a handful of prompts. The questions, the merge and the standards check are where the tester added the value that made the suite complete.

Will ChatGPT replace testers?

Not on the evidence of our tests. ChatGPT drafted plans, test cases, data, scripts and reports in seconds, and some of them were usable after a read. But four of the ten prompt answers we checked held a mistake, and in every case the mistake surfaced only when someone ran the code, validated the data or compared the output with the requirement.

Its errors also looked exactly like its correct answers. The wrong page-0 output came with a confident, correct-sounding explanation. The guessed URL sat inside an otherwise better test. A tester who knows the product catches these; a reader who trusts the format does not.

What changes is where testers spend time. Less goes into typing first drafts, and more goes into the parts our runs showed ChatGPT skipping: deciding what the requirement means, checking against standards and proving that generated tests test the right thing.

Mistakes that cost us time, and how to avoid them

Some of what went wrong in our runs had nothing to do with the model. These are the habits we changed.

Figure 7 · Input check
Read the message you sent, not the one you meant
Three times the chat box changed our input. Twice, ChatGPT's main review finding came from the change.
Code in a fenced block
We typed
```js then test('login', ...) on new lines
It received
jstest('login', ...) on one line
Top finding: jstest() is not a Playwright API
A URL inside code
We typed
page.goto('https://example.com/login')
It received
The URL became a link
Top finding: Markdown link syntax in goto()
Placeholders in angle brackets
We typed
Explore <target> with <resources>
It received
Explore with to discover
No effect: it knew the charter format
Source: our prompt runs, ChatGPT Free, temporary unpersonalised chats, 29 October 2026.
  • Check what the chat box sent. When we typed code into ChatGPT, the box dropped line breaks, turned a URL into a link and deleted words in angle brackets. Twice, ChatGPT's top code-review finding was a problem the input box had created. Read your sent message before you trust a review of it.
  • Do not reuse one long chat for many tasks. We started a new temporary chat for every test so that one answer could not shape the next. Comparing results is only fair when each prompt starts clean.
  • Do not ask for a verdict without the facts. In our report run, ChatGPT repeated an inconsistency in the numbers we gave it. It reports what you supply, so check your inputs first.
  • Do not stop at a green run. A rewritten test that passes may still assert something the model guessed. Read every assertion, then break the app on purpose and confirm the test fails.

The limits that matter now

The old limits are mostly gone. These are the ones we hit in our runs, and the habit that handles each.

Limit we sawExample from our runsHabit that handles it
Predicts when not asked to runClaimed ["B","C"] for page 0; Node returned []Ask it to execute, then run it yourself
Answers vary between chats20 cases in one chat, 22 in anotherRun design prompts twice and merge
Fills gaps with its own guessesAsserted a post-login URL it made upSearch the answer for numbers and URLs
Mislabels its own output2 of 6 "invalid" rows were validCheck against written rules
Free plan upload limits3 file uploads a day on the Free planPaste small inputs as text

The upload limit comes from OpenAI's file uploads guide: "Free users are limited to 3 file uploads per day." Keep confidential code, credentials and customer data out of prompts altogether. Even the temporary chat we used shows the notice: "For safety, we may keep a copy of this chat for up to 30 days."

From our work
Across 16 ChatGPT chats on 29 October 2026, the answers we could trust had one thing in common: ChatGPT checked itself against something real. It executed the code, searched npm, or applied rules we wrote out.
The answers that went wrong were predictions: an output it did not run, a URL it guessed, a data label it did not test. This is an observation from one day's work, not a measured rate, but it now shapes how we write prompts: we ask for the check as well as the answer.
Source: ChatGPT Free, temporary unpersonalised chats, 29 October 2026.

Make ChatGPT a reviewer you can check

ChatGPT now reads code, runs Python, searches the web and uses the context you give it. That makes it a fast first pass at almost every testing task. It does not make its answers right. In our tests it was reliable when it checked itself against something real, and wrong when it predicted.

So write prompts that ask for the check as well as the answer, run whatever it writes, and keep a tester's judgement on what ships. Start with one task this week, such as reviewing a requirement, and add its check before you hand ChatGPT the next one. If you want a team that works this way on your product, talk to QAble's manual testing team.

Frequently Asked Questions

How can ChatGPT be used in software testing?

Use it as a first-draft partner at each stage: list open questions in a requirement, propose test cases and scenarios, generate test data, draft automation scripts, review code and look up current tool versions. Check every answer against something real, such as running the code or validating the data, because correct and incorrect answers look equally confident.

Can ChatGPT understand and review code?

Yes. In our test it found two planted bugs in a JavaScript pagination function without a hint and wrote a working fix. It did get one claimed output wrong, because it predicted the result of a slice() call instead of running it. Ask it to execute code where it can, and run the result yourself.

Can ChatGPT run test scripts?

It can execute Python in its own environment when you ask it to. Our test returned a SHA-256 hash prefix that matched our own run exactly, which a guess could not do. It does not run your browser tests or connect to your application, so automation scripts still need to run in your own environment.

Is ChatGPT good for manual testing?

It helps with the thinking parts of manual testing: finding gaps in requirements, drafting test cases, writing exploratory charters and turning vague notes into bug reports. It does not use the product for you. A tester still runs the checks, judges what matters and decides what to report.

Does ChatGPT give the same test cases every time?

No. We sent the same prompt in two fresh chats and got 20 test cases in one and 22 in the other, each with checks the other missed. Run important design prompts twice, merge the unique cases and compare the result with a standard such as the OWASP cheat sheet for that feature.

Will QA testers be replaced by AI?

Our runs suggest it changes the work rather than replacing it. ChatGPT drafted plans, cases, data and code quickly, but four of the ten prompt answers we checked needed fixing before use, and only running or validating the output revealed the problems. Testers who check AI output well become faster, not redundant.

Free Assessment

Get a free QA audit for your project

Identify quality gaps before they become production bugs.

Get Free Audit

Ship software with confidence

Talk to a QA advisor and find out how QAble can help your team build quality in at every stage.

No sales pitch
Technical walkthrough
No lock-in commitment

Talk to QA Advisor

Direct access to QAble's QA specialists.

Response within 24 hours