World’s largest virtual agentic engineering & quality conference
How to test a WhatsApp bot without code: AI evaluators message it like real customers and score every conversation across nine quality metrics.

Sushrut Kumar Mishra
Author
Aman Chopra
Reviewer
Last Updated on: July 23, 2026
A support lead forwarded me one screenshot and a single line of context. A customer had written that their order was late for the third time, and the WhatsApp bot answered with a bright greeting and a link to the returns FAQ. Nothing errored. No status code went red. The bot simply read the room wrong, and the customer never wrote back.
So I blocked out an afternoon to work out how to test a WhatsApp bot properly, without standing up a test framework first. What follows is the whole session, from connecting the bot to gating it in a pipeline. The short version is that I described conversations in plain English and let a set of AI evaluators from TestMu AI play the customer, message the bot, and score every reply across nine quality metrics, the same way you would when testing a chatbot without code on any other channel.
There was no SDK to install and no browser extension to deploy. I connected the bot by pasting its chat endpoint, then uploaded the two documents that already existed for it: a short PRD and the knowledge base the support team maintains. The platform parsed both and pulled out the policies the bot follows, the topics it covers, and a set of scenario seeds.
The one input that took real thought was the agent-under-evaluation prompt, a plain description of what good behavior looks like. I wrote a few lines: the bot is a customer service agent for an online store, it helps with orders and returns, it stays concise and empathetic, and it must never invent policies or delivery dates. That prompt becomes the baseline the evaluators grade against. The whole setup ran under thirty minutes, and none of it needed a line of code.
I started with the dull happy path, because if that breaks nothing else matters. A customer asks to track an order, the bot asks for the number, the customer gives it, the bot returns a status. Had I scripted that against the WhatsApp Business API, it would have looked like this:
const url = "https://graph.facebook.com/v20.0/" + PHONE_NUMBER_ID + "/messages";
const send = await axios.post(url, {
messaging_product: "whatsapp",
to: "15551234567",
type: "text",
text: { body: "I need to track my order" }
}, { headers: { Authorization: "Bearer " + WHATSAPP_TOKEN } });
const reply = await waitForWebhookReply(send.data.messages[0].id);
assert.strictEqual(
reply.text.body,
"Sure! Please share your 5-digit order number and I will look it up."
);A dozen lines, and fragile before it even runs. The assertion demands one exact sentence, but the bot is generative, so the wording moves every run and a perfectly correct answer fails the check. On top of that I would own the webhook plumbing, a dedicated WhatsApp test number, and a growing pile of string matches, plus someone on the team who reads JavaScript. Instead, I described the same exchange as steps the evaluators follow:
With TestMu AI chatbot testing, that description is the check. The evaluators message the bot the way a real customer would and grade the exchange by meaning rather than by matching a fixed string. When the wording changes but the intent holds, it passes. When the bot forgets the order number or invents a policy, it fails, and the exact turn that went wrong comes attached.
Running it looked less like a test suite and more like watching a shift of testers work at once. Behind the single check, more than fifteen specialized testing agents ran in parallel, each probing a different failure mode, and each scored the reply against the nine quality metrics. The order-tracking path came back clean.
What made the result usable was the evidence next to every score. Each metric carried a confidence level of High, Medium, or Low, plus an excerpt from the conversation that drove the verdict, so I could open the exact turn behind any number instead of trusting a figure in a vacuum. All of it rolled up into one production-readiness verdict, Green, Yellow, or Red, that a support lead or a product manager can read in a few seconds.

The happy path passing told me the plumbing worked. It told me nothing about the screenshot that started my afternoon. The failures that lose customers hide in the conversations a string match cannot see, so I added four more, each phrased the way I would brief a new support agent rather than the way I would write code.
Writing four scenarios by hand is fine. Writing a hundred is not, which is where the earlier document upload paid off. From that PRD and knowledge base, the platform generated more than sixty scenarios on its own, spread across happy paths, edge cases, adversarial inputs, and persona variants like the Angry User and the Multi-Lingual User. One angry-customer sketch became a systematic sweep, and the second run came back Yellow, with the failing turn pointing straight at a cold reply the demo had never surfaced.
Functional coverage still left one gap. A WhatsApp number that anyone can message also invites the messages no honest customer sends, so before I called the session done I ran a red-team pass over the same bot. The point was to treat the bot as something an attacker would poke at, then read what it gave up.
The red-team run pointed prompt-injection, jailbreak, and PII-leakage probes at the endpoint, driven by the Security Researcher and Data Privacy Guardian among the evaluators. One probe tried to talk the bot into reading back another customer's order details; another buried a hidden instruction inside a normal-looking order query to see whether the bot would follow it. The result came back as a letter grade with a per-category breakdown, and every flagged turn carried the message that triggered it, so a leak was a transcript I could open with the exact words that caused it.
This is the part of WhatsApp chatbot testing that a functional check never reaches. A bot that quotes the real return policy but hands a stranger someone else's phone number is not production-ready, and the red-team grade made that call for me instead of leaving it to a friendly demo.
A one-time verdict fades the moment someone edits the prompt or the underlying model ships an upstream update. To keep the afternoon from being a one-off, I moved the same plain-English scenarios into the pipeline. The testmu-a2a-cli installs with pip, authenticates from environment variables, and outputs JUnit XML, so it drops into an existing CI job without a custom plugin. It exits 0 when the run passes and 1 when it fails, which is all a build needs to block a bad merge.
On top of the gate, I scheduled a weekly run so a quiet model change or a stale knowledge-base answer cannot degrade the bot between releases, and pointed failure alerts at Slack with the offending transcript annotated by turn and metric. Because this bot sits behind a corporate firewall, I used the secure tunnel through HyperExecute, which opens an encrypted connection to the endpoint without ever exposing it to the public internet.
By the end of the session the bot had a verdict, a widened scenario set, a nightly heartbeat, and a gate in CI. The same TestMu AI agent testing approach covers voice and phone agents from the same platform, so when this bot grows a phone line, the same plain-English scenarios you would use to test a voice agent follow it there.
Note: Point the evaluators at your own WhatsApp bot and read the first verdict in an afternoon. Start with TestMu AI free.
Author
Sushrut Mishra is a developer and freelance technical writer with 4 years of experience in content creation, developer advocacy, and B2B growth marketing. He has authored 200+ blogs, contributed technical content at TestMu AI, and ghostwritten posts crossing 5M+ impressions. On LinkedIn, he is followed by 5,000+ professionals from QA, automation testing, tech leadership, and AI innovation.
Reviewer
Aman Chopra is a DevOps Engineer and Community Contributor with over 7 years of experience in cloud technologies, software development, and software testing. Currently working at TestMu AI, Aman specializes in optimizing Azure cloud infrastructure, enhancing API accessibility, and integrating cloud platforms like AWS and GCP. With expertise in Git, Docker, Kubernetes, and CI/CD practices, Aman has contributed to various open-source projects and authored guides on cloud computing, containers, and CI/CD. He holds a B.Tech in Computer Science.
Did you find this page helpful?
More Related Blogs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance