Functional and intent testing
Checks that the bot understands what the customer is asking, including paraphrases, typos, and vague requests, and answers from your source of truth. Most teams start here, and most happy-path questions pass.
How to test a chatbot in 8 steps: scope the risks, write positive, negative and edge cases, script multi-turn and pressure tests, log evidence, and retest.
Last updated . For the full evidence standard, read the testing methodology.
The steps run in order, and each one ends with a result you can check before moving on. Only test a chatbot you own or have written permission to test, preferably on a staging copy.
Write down what the bot is for, which channels and languages it serves, and which answers would cost you money, trust, or safety if they were wrong: a refund it cannot grant, a price it invents, a private detail it reveals, a handoff it blocks. Rank the customer journeys by that cost.
Expected result: A one-page test scope that names the bot's job, the three to five highest-risk journeys, and what counts as a failure on each.
Pull questions from support tickets, chat logs, sales calls, site search, and your FAQ, and keep the customers' own wording, typos included. Group them by journey and note the source of truth each answer has to match.
Expected result: A question bank per journey, with every question linked to the policy, price list, or help article that defines the right answer.
For each journey, write a positive case (a normal request the bot should handle), a negative case (a request it should refuse or redirect, such as a refund outside the window), and edge cases (vague wording, missing details, a policy you never documented, a message in another language). Write the expected behavior before you run anything.
Expected result: Every test case has an input, an expected behavior, and a pass condition written down before the first run.
Many failures appear on the third turn, not the first. Write scripts of three to eight turns that correct a detail, ask the same thing a different way, switch topic and come back, or repeat a request after the bot has refused it.
Expected result: Scripts that show whether the bot keeps context, uses the corrected detail, and gives the same policy answer late in the conversation as it did early.
Push the way difficult customers do: ask for exceptions, claim authority you do not have, ask for account details before any verification, demand a human, and try to get the bot to ignore its instructions. Describe the pressure in your test plan rather than saving reusable exploit text, and run the security checklist separately.
Expected result: A set of pressure cases, each mapped to one risk (policy, authority, privacy, scope, handoff, or prompt tricks) and the safer behavior you expect.
Run the first pass by hand to calibrate your expectations and catch problems the scripts missed. Then automate the stable cases so the same set runs the same way after every change. AI replies vary between runs, so run the important cases more than once.
Expected result: A baseline run with every reply captured, and an automated set you can rerun without rewriting it.
Mark each reply pass or fail against its written expectation, give every failure a severity based on business impact, and save the exact customer turn and bot reply. A note that says it failed is not evidence.
Expected result: A findings log where every high or critical failure can be reproduced from its saved transcript and has a severity and an owner.
Fix the prompt, knowledge base, workflow, or permissions behind each failure, most severe first. Then rerun the failed cases, a paraphrase of each, and the cases that already passed.
Expected result: The fixed cases pass, nothing that passed before has broken, and the launch call (ship, fix first, or wait) rests on that rerun.
Use the free chatbot test-case CSV to record expected behavior, actual replies, owners, and retest results. Then inspect a sample evidence-backed report or compare chatbot testing tools for your workflow.
Use it to move from vague chatbot review to evidence-backed launch testing: customer pressure, expected safer behavior, transcript proof, severity, fixes, and a retest path.
Chatbot testing is not one activity. Each type below answers a different question, and a bot can pass one while failing another. The first seven apply to almost any customer-facing bot; performance and multilingual testing depend on your traffic and your customers.
A Bot Roast covers part of this list: customer-pressure scenarios with deterministic scoring for policy, authority, privacy, scope, handoff, conversion, and prompt tricks. The bundled catalogue holds 214 authored scenarios across 5 packs in 8 risk families, and one automated run sends up to 12 of them, spread across the families. It does not do load or latency testing, check how replies render in each channel, or verify that a backend action such as a refund or an address change actually happened. It flags a reply that claims one did.
Checks that the bot understands what the customer is asking, including paraphrases, typos, and vague requests, and answers from your source of truth. Most teams start here, and most happy-path questions pass.
Checks that each journey reaches a useful end: a booking, an order lookup, a clear answer, or a handoff. Look for loops, dead ends, and questions the bot keeps asking after it already has the answer.
Checks behavior across a whole conversation: whether corrections stick, whether the policy answer stays the same, and whether context from one topic leaks into another. The multi-turn section below has the method.
Reruns a fixed set of cases after any prompt, knowledge-base, model, or workflow change to confirm the fixes held and nothing that passed before has broken.
Checks that the bot does not invent refunds, discounts, prices, or rules, does not approve what only staff can approve, and does not give medical, legal, or financial advice outside its role.
Covers prompt injection, system-prompt disclosure, access to private data, and the permissions of connected tools. It deserves its own pass, with written authorization and a defined scope.
Checks that the bot offers a person at the first clear request or when a question is outside its scope, and that the conversation reaches the agent so the customer does not have to repeat it.
Measures response time, timeouts, and behavior under many simultaneous conversations. It needs load-testing tools pointed at your own infrastructure, not conversation scripts.
Checks that answers stay correct and on policy when the customer writes in another language or mixes two, and that the bot says plainly which languages it supports.
Pick metrics that match the question you are answering. Before launch you are counting test outcomes, because there is no real traffic yet. After launch, traffic metrics such as containment, resolution, fallback rate, customer satisfaction, and response time take over, and a pre-launch test cannot produce them.
Pre-launch metrics that are worth tracking in your own test log:
Manual testing means a person talks to the bot and judges each reply. It is the best way to explore a new bot, judge tone and brand fit, spot an answer that technically passes but would confuse a customer, and decide how much a failure matters. It is also slow and hard to repeat the same way twice.
Automated testing sends a stored set of scenarios to the bot and scores the replies against written rules or expectations. It is repeatable and cheap to rerun, but it only finds what its scenarios and rules were written to find, and it cannot decide whether a finding matters to your business.
Most teams need both: a manual pass to shape the test set, automation to rerun it after every change, and a person to review the failures and make the launch call.
| Question | Manual testing | Automated testing |
|---|---|---|
| Best for | Exploring a new bot, tone, brand fit, and unusual context. | Rerunning the same cases after every change. |
| Repeatability | Low: two testers rarely phrase a request the same way. | High: the same inputs run the same way each time, though AI replies can still vary. |
| Evidence | Notes and screenshots unless you save the transcripts. | A transcript and a result stored for every case. |
| Coverage | Limited by tester time. | Limited by the scenarios and rules you wrote. |
| Judgment | Strong: a person decides what matters. | Weak: a rule flags a reply; a person still sets severity and makes the launch call. |
| Cost of a rerun | The same effort every time. | Low once the set exists. |
Chatbot regression testing reruns a stable set of customer scenarios after a change to confirm the bot did not break behavior that was safe before. Prompt edits, knowledge-base updates, workflow changes, model swaps, and policy rewrites can all fix one path while breaking another.
AI chatbot replies vary, so compare behavior, not exact wording. The regression question is whether the bot still protects policy, privacy, handoff, and the customer outcome. Use exact-match checks only where the wording itself matters, such as a legal disclaimer or a price.
A bot can answer the first question correctly and still fail when the customer challenges, clarifies, switches language, or repeats the request. Refund exceptions, unsafe claims, prompt injection, and escalation failures often appear only after the customer pushes twice.
Memory should be useful and bounded: the bot keeps relevant context without leaking private details, over-assuming identity, or carrying a bad instruction forward. For launch testing, three to eight turns often reveal policy, escalation, and memory failures better than a single prompt.
Building a bot with a no-code or AI website builder is fast, but the failures are the same: invented refunds, wrong policy, leaked details, unsafe advice, and dead-end conversations. No-code bots can also inherit prompt-injection and content risks from the underlying model and any third-party chat widget.
You do not need a developer eval framework to test one. Script the conversations in a spreadsheet and run them by hand, or point a tester at the live website widget or a public API endpoint and read a plain-English report. WhatsApp, Instagram, and voice bots are not supported today, and a widget behind a login may need the API or transcript path instead.
Chatbot testing tools fall into a few groups, and the right one depends on who runs the tests and what decision follows. Developer evaluation frameworks run code-owned test suites and red-team probes. AI security tools focus on adversarial findings. Conversational QA platforms test journeys across channels. Some platforms add production monitoring, and some produce a one-time launch report. The tools in our comparison, by what each is best for:
Sample only. This excerpt comes from Agent Torture Lab's illustrative sample API report for a fictional store bot, ShopBot Support API. The data is fabricated to show the report format; it is not a real customer's bot. The sample run is labelled "Automated API Bot Roast · 12 scenarios (2 core + 10 industry)".
The case combines step 4 and step 5: a multi-turn script where the customer asks for a person, gets troubleshooting instead, and asks again.
A rule-based bot follows fixed flows, so one run of each path tells you what it will do. An AI chatbot generates its replies, so the same question can get different answers. Test paraphrases, run important cases more than once, judge behavior rather than exact wording, and rerun the set after every prompt, knowledge-base, or model change.
There is no fixed number. Start with a positive, a negative, and an edge case for each high-risk journey, add multi-turn and pressure scripts, and add a regression case for every serious failure you find. Cover every risky journey before adding more variations of a safe one.
Yes. Script the conversations in a spreadsheet, run them by hand in the live widget, and log each reply and result. Tools that accept a public website widget or API endpoint can also run automated scenarios without code and return a report in plain English.
Only with permission. Adversarial tests apply the pressure a difficult customer would, so run them against your own bot or one you have written authorization to test, preferably on a staging copy rather than a live service.