An AI chatbot is three products in a trench coat.
There is the UI — the chat window, message list, input field, streaming response rendering, markdown parsing, code blocks, error states, send button, retry button, all the little conversation-state mechanics users see. A web UI with harder-than-usual dynamics.
There is the conversation behavior — how the bot handles multi-turn context, remembers prior exchanges, resets when asked, handles interruptions, stays on topic, falls back gracefully when it doesn't know something.
And there is the model output itself — whether the answer is correct, helpful, safe, grounded in the source data, free of hallucinations, consistent across similar prompts.
Each layer has different failure modes. Each layer needs a different kind of testing. No single tool covers all three, and if a vendor claims otherwise, they are selling one layer as the whole product.
This article walks through how to test each layer, what to cover, and which tool category fits. It also flags the layer Agentiqa actually helps with — and the one it does not.
Layer 1: The UI around the chat
Before you worry about the model, make sure the chat interface itself works.
Chatbot UIs are unusually dynamic compared to most web apps. They stream text character by character. They render markdown inline. They update state constantly during a response. They show typing indicators, retry buttons, copy-to-clipboard affordances, and error banners. They need to scroll correctly as the conversation grows. They need to handle a user who sends a follow-up before the previous response finishes.
What to test at this layer:
- Streaming rendering. The message renders progressively, remains readable during streaming, and finalizes correctly when the stream completes. No half-rendered markdown, no code blocks that render broken until the last token arrives.
- Markdown and code blocks. Lists, tables, links, inline code, fenced code blocks all render correctly in both light and dark modes. Syntax highlighting applies.
- Conversation state. New messages append to the correct thread. Scroll follows the latest response. Previous messages remain intact during streaming.
- Error states. Network error mid-stream surfaces a retry option. Rate-limit responses produce a clear message. Model errors ("content was filtered") render with helpful text, not a raw error payload.
- Send button behavior. Disabled while streaming (if that's your behavior) or enabled but queues the next message. Predictable.
- Multi-session behavior. Opening two tabs, starting two conversations, switching between them. State does not leak.
This is a web UI testing problem with unusually complex dynamic content. Traditional screenshot testing tools struggle with streaming responses (the screenshot changes frame by frame). Real-UI AI testing tools — the category-2 tools in our buyer's map — handle streaming well because they verify outcomes against descriptions, not pixels.
Agentiqa tests this layer. You describe the flow in plain English: "send the message 'explain recursion,' wait for the streaming response to complete, verify the response contains the word 'function,' then send a follow-up 'give an example,' wait for the response to complete, verify the reply." Agentiqa runs it against your real chatbot UI and reports failures.
Layer 2: Conversation behavior
Behavior is what the bot does across turns, not what it says.
Model-level tests check the content of a single response. Behavior-level tests check whether the conversation makes sense — whether the bot remembers context, follows instructions, handles resets, and degrades gracefully when it cannot help.
What to test at this layer:
- Multi-turn context retention. "My name is Ana. What should I cook for dinner?" Later: "Thanks — can you remind me what I said my name was?" The bot should say Ana.
- Topic-switch handling. The user abruptly changes subjects. The bot should follow, not loop back to the previous thread.
- Reset and clear behaviors. "Forget everything I said and start over." The bot should comply; the next response should not reference the prior conversation.
- Refusal graceful paths. A user asks something out of scope. The bot should refuse, explain why briefly, and offer an alternative — not dump a raw guardrail message.
- Long conversation integrity. Fifty turns in, does the bot still remember the first message, or does context-window truncation break the thread silently?
- Tool-use flows. If the bot calls APIs or tools, does the response cleanly stitch tool output back into the conversation? What happens when a tool call fails?
- Interrupts. User sends a new message before the current response finishes. Does the new message queue, replace, or break state?
These are multi-turn flow tests. They look like integration tests on steroids — each test is a short scripted conversation with verifications at each step. Real-UI AI tools handle this well because they can drive the UI through real inputs and assert on real outputs. Model-eval platforms (LangSmith, Braintrust) handle parts of it well — they score single-response quality — but they do not usually drive the UI end to end.
Agentiqa tests this layer. Describe the conversation, run it, verify each turn. Regression-test the same conversation after every deploy to catch behavior changes before users do.
Layer 3: Model output quality
This is the layer Agentiqa does not touch. It is also the layer that gets the most attention in the category.
Model output testing asks: was this specific response correct, helpful, grounded, safe, consistent?
Subcategories:
- Correctness. The answer is factually right. Checked via golden test sets, regression suites of expected responses, or fact-grounding against your knowledge base.
- Hallucination. The answer invents facts. Caught by comparing against source documents (for RAG systems) or by adversarial prompting.
- Consistency. The same prompt returns similar answers across runs. Temperature, top-p, and model version all affect this.
- Safety. The bot refuses harmful requests, does not leak system prompts, does not produce biased output. Red-team suites and filtered eval sets.
- Alignment with system prompt. The bot stays in character, respects constraints, follows instructions that were baked in.
The tool category for this layer is model-eval platforms. Representative tools: LangSmith (LangChain), Braintrust, TruLens, Humanloop, Vellum, PromptLayer. Some teams roll their own using OpenAI evals, custom scoring, or human-in-the-loop pipelines.
This is a different buyer and a different toolchain from UI and behavior testing. You need both. A chatbot that produces perfect answers in a UI that silently breaks streaming on a certain browser is not a working product; a chatbot whose UI works beautifully but whose model output hallucinates customer support facts is also not a working product.
If you are evaluating the model-eval layer, start with LangSmith if you are already on LangChain, Braintrust for a framework-agnostic eval pipeline, and TruLens for open-source. Verify current positioning — the category moves fast.
A practical testing checklist
A minimum viable chatbot test plan covers all three layers. Some rough ranges.
UI layer (5–15 tests).
- Streaming renders correctly.
- Markdown renders correctly including code blocks.
- Error states render with clear user-facing messages.
- Send button state is correct during and after streaming.
- Scroll behavior is correct as conversation grows.
- Retry flow works when the user retries a failed message.
- Multi-session state does not leak across tabs.
Behavior layer (5–15 tests).
- Context retention over 5–10 turns.
- Topic switch handled cleanly.
- Reset/clear works.
- Refusal on out-of-scope is graceful.
- Long conversation (25+ turns) still references early context if available.
- Tool-call flows complete end-to-end, including failure handling.
- Interrupt behavior is predictable.
Model output layer (20–100 tests, depending on scope).
- Golden prompts return answers that match expected patterns.
- Factual accuracy on a known source-of-truth set.
- Hallucination rate on adversarial prompts below threshold.
- Safety refusals on a red-team suite.
- Consistency across runs at chosen temperature.
Each layer uses a different tool. The UI and behavior layers run on every deploy as fast regression. The model output layer runs on a slower cadence — often nightly or per release — because it is more expensive and often requires human review.
Where Agentiqa fits
Agentiqa tests layers 1 and 2. The chat UI and the conversation behavior.
You point Agentiqa at your chatbot's staging URL. You describe the conversation: "open the chat, send 'what are your store hours,' wait for the streaming response to finish, verify the response includes an hour or a day of the week, send 'can you list them,' wait, verify the response lists hours for each day." Agentiqa runs it in a real browser. It handles streaming, conversation state, retries, errors, markdown rendering. It verifies that each step completed as described.
What Agentiqa catches:
- UI regressions in chat-specific dynamics (streaming, state, markdown, errors).
- Multi-turn flow regressions (context drops, tool-call failures, state leaks).
- Authenticated chat flow bugs — the chat that works logged-out and breaks logged-in.
- Conditional UI issues that only surface under real conversation volume.
What Agentiqa does not replace:
- Model-output evaluation. For answer quality, hallucination, grounding, and consistency, use a model-eval platform.
- Unit tests on your prompt templates.
- Security audits of your chatbot's agentic tools.
If your chatbot has no test coverage today, the fastest path to confidence is: start with Agentiqa on the UI and behavior layers, add a model-eval platform for output quality, and keep unit tests on the model-adjacent code.
A note to YC-batch founders building AI products: you are the primary audience for this piece. If you are at an accelerator batch or looking for your first serious QA setup, testing the UI and behavior of your chatbot is cheap and high-leverage — especially before demo day. Cross-ref: how founders network and hire QA support in the US startup ecosystem.
FAQ
How do you test an AI chatbot? Treat testing as three layers. The UI around the chat (streaming, state, errors), the conversation behavior across turns (context, resets, tool calls), and the model output itself (accuracy, hallucination, safety). Each layer uses different tools. A complete test plan covers all three.
Can you automate AI chatbot testing? Yes, across all three layers. The UI and conversation behavior layers automate with real-UI AI testing tools. The model output layer automates with model-eval platforms. What does not fully automate: human judgment on answer quality and design intent — those still benefit from periodic review.
How do you test conversation flow? Write scripted multi-turn conversations with assertions at each step. "Send message A, verify response contains X; send message B, verify response contains Y." Run them against your chatbot's real UI. Regression-run after every deploy. Real-UI AI tools handle this well because they can drive the UI and assert on outcomes in plain language.
What tools test AI chatbot output quality? Model-eval platforms. Representative tools as of 2026: LangSmith, Braintrust, TruLens, Humanloop, Vellum, PromptLayer. Some teams build internal eval pipelines using OpenAI evals or custom scoring.
Can AI regression testing catch model drift? Partially. UI and behavior regressions caught by real-UI tools show you when flow breaks. Model drift — the same prompt returning different answers over time — needs model-eval platforms with scoring against golden sets.
How do you test streaming chatbot responses? Real-UI AI tools (category 2 in our buyer's map) handle streaming well because they wait for outcomes rather than comparing pixel-perfect screenshots. DOM-snapshot tools struggle with streaming because the DOM changes every frame. For streaming UI, use a tool that verifies outcomes in plain language: "wait until the response is complete, then verify it contains X."
How often should I regression-test my chatbot? UI and behavior layers: every deploy. Fast tests, cheap to run. Model output layer: nightly or per release, depending on how volatile your model and prompts are. If you ship prompt changes weekly, run model evals weekly.
