← Back to the blog

How to test a voice AI agent before production

Clay diorama of Peach, the PeachDesk mascot, inspecting tiny clay telephone booths with a magnifying glass on a test bench

Teams catch voice agent failures before callers do by testing in layers: text chat for conversation logic, AI-simulated callers for scenario coverage at scale, browser voice for the full speech pipeline, and real phone calls for telephony behaviour. Each layer costs more than the one below it and catches a class of failure the one below it cannot see.

What are the four layers of voice agent testing?

The four layers are text chat, simulated callers, browser voice, and real phone calls, ordered from the cheapest, fastest loop to the most realistic and most expensive. You test a voice AI agent by climbing this ladder: fix what each layer exposes before you pay for the next one.

  1. 1. Text chatType messages to the agent. Exercises conversation logic, prompts, tools, and workflow branches. It does not exercise the speech stages.Cheapest loop, instant iteration
  2. 2. Simulated callersAI personas play the customer: the angry caller, the rambler, the one who changes topic mid-sentence. Runs whole scenarios without human testers.Scenario coverage at scale
  3. 3. Browser voiceTalk to the agent from the browser. Exercises speech-to-text, the language model, and text-to-speech as one live pipeline, with real latency and interruptions.Full speech pipeline, no phone line
  4. 4. Real phone callsCall the agent on a real number through your connected telephony provider. The only layer that exercises number routing, transfers, and carrier audio.Full realism, carrier costs apply

Realism and cost rise with each step. The rule of thumb: never discover a problem on a paid phone call that a text chat would have caught.

All four layers exist in PeachDesk, the voice AI platform, so a team can run the whole ladder in one place instead of stitching together separate tools. For how the pipeline under test fits together, see voice agent architecture.

What should you evaluate at each testing layer?

Each layer has its own failure class: conversation logic and persona in text-based testing, turn-taking and speech behaviour in browser voice, and telephony behaviour in real calls. Evaluate for the failures that layer can actually produce.

Conversation logic and task completion

Script the calls your agent must handle: the happy path, the caller who gives information out of order, the caller who asks for something the agent cannot do. Check that the agent follows the workflow, calls the right tools with the right arguments, and reaches a completed task or a clean exit. Text chat and simulated callers carry this load; run the whole suite before you touch audio.

Persona drift

Persona drift is the agent slowly slipping out of role: getting casual where it should stay formal, inventing policies, or apologizing for things your business never promised. It shows up in long and adversarial conversations, which is exactly what simulated callers are for. Run extended personas that push, plead, and change subject, then read the transcripts for tone and factual consistency.

Interruption handling

Real callers barge in. On browser voice and phone calls, interrupt the agent mid-sentence and check three things: playback stops promptly, the pending reply is discarded instead of spoken over the caller, and the agent answers the interruption rather than resuming its old script. Interruption quality is an orchestration property, so it only appears once the speech stages are live.

Telephony behaviour

The final layer is the only one that touches the phone network. Verify that your inbound number routes to the right agent, that keypad navigation works where your flow uses it, and that transfers to a human or an external number complete with the outcome reported back into the conversation. Carriers meter these calls, which is why this layer comes last and runs a short, deliberate script.

Which metrics matter in voice agent evaluation?

Five metrics predict production behaviour: task completion, turn latency, interruption recovery, correct tool calls, and transfer correctness. Together they answer the only question that matters: did the call do what the caller needed, at a pace a real caller would tolerate?

Capture surfaces are PeachDesk platform features as documented on 2026-08-05. No external benchmarks or third-party figures are cited.
MetricWhat it measuresHow to capture it
Task completionWhether the call achieved the caller's goal: booking confirmed, question answered, message taken.Review transcripts of test conversations; score recorded calls automatically with a configurable QA step.
Turn latencyThe pause between the caller finishing and the agent starting to reply, per turn.Timestamps in call traces; route call and LLM traces to your own Langfuse project for per-stage timing.
Interruption recoveryWhether the agent stops speaking when the caller barges in and answers the new input.Scripted barge-in scenarios on browser voice and phone calls; confirm the transcript picks up the interrupt.
Correct tool callsWhether the agent invoked the right tool with the right arguments: the booking API, a knowledge base lookup, an SMS.Inspect the tool-call records in the transcript and trace for each test scenario.
Transfer correctnessWhether transfers fire on the intended triggers and the outcome returns into the conversation.Test calls that trigger transfer to a staging number; confirm the reported answer outcome matches what happened.

Track these per scenario, not as one platform-wide average. An agent that completes the booking flow every time but stalls on the complaint flow has a complaint-flow problem, and only per-scenario numbers will show it.

How do you stop new changes from breaking a working agent?

Publish immutable versions and keep every call pinned to the exact version that served it. Then re-run your scenario suite against each new version before it takes traffic, so a prompt edit can never silently change live behaviour.

In PeachDesk, publishing creates an immutable agent version, and every call records which version handled it. That pin is what makes testing meaningful: the agent you tested on Tuesday is provably the agent that answered calls on Wednesday. When you change a prompt, a workflow branch, or a provider for any pipeline stage, you publish a new version, run the same ladder of tests against it, and only then route traffic to it.

The discipline that makes this work is a fixed scenario suite: a named set of text conversations, simulated-caller personas, and phone-call scripts that every candidate version must pass. Treat the suite the way you treat regression tests in software. When a real call surfaces a failure, add that call to the suite so the failure class stays covered forever.

Version history is an audit trail, not an undo button: it tells you exactly which version served which call, which is what you need to compare behaviour across versions.

Peach, the PeachDesk mascot, thinking through a test plan

What belongs on the pre-launch checklist?

The checklist is the ladder, run end to end against the exact version you intend to publish, with a named pass signal per layer. If any row fails, the agent is not ready, regardless of how good the demo sounded.

Layers and surfaces as implemented in PeachDesk, verified 2026-08-05.
CheckLayerPassing looks like
Happy-path tasksText chatAgent completes every primary task on the scripted scenarios.
Persona and toneSimulated callersAgent stays in role through long, adversarial, off-script dialogues.
Edge casesSimulated callersOut-of-scope requests get a clean fallback, not improvisation.
Speech qualityBrowser voiceAccented and noisy speech parses without stalls; replies start promptly.
Barge-inBrowser voiceInterruptions stop playback and the agent answers the new input.
Telephony behaviourReal phone callsNumber routes to the right agent; transfers complete with outcomes reported.
Version pinPublish stepThe version that passed the suite is the version that takes traffic.

For the full product walkthrough behind these layers, see how PeachDesk works; unfamiliar terms are defined in the voice AI glossary.

Test the agent before your callers do

The documentation covers text chat, simulated callers, browser voice, phone-call testing, and version publishing in implementation detail.

How do you test a voice AI agent?

In layers, from cheapest to most realistic. Start with text chat to check conversation logic, then run AI-simulated callers to cover many scenarios at scale, then talk to the agent through browser voice to exercise the speech pipeline, and finish with real phone calls over your telephony provider. Measure task completion, turn latency, interruption recovery, and tool-call accuracy at every layer.

What is a simulated caller?

A simulated caller is an AI persona that plays the customer in a test conversation with your agent. Instead of recruiting human testers for every scenario, you define personas and situations, an angry caller, a confused caller, a caller who changes topic mid-sentence, and let the simulator run the conversations. It lets a small team cover far more scenarios before launch than manual testing ever could.

Can you test a voice agent without making phone calls?

Yes, most of it. Text chat validates dialogue logic but does not exercise the speech stages. Browser voice runs the full speech pipeline, speech-to-text, language model, and text-to-speech, without a phone line. Only telephony-specific behaviour, such as number routing, call transfers, and real network audio, genuinely requires a live phone call.

How often should you re-test a voice agent?

Every time anything the agent depends on changes: a prompt edit, a workflow change, a new tool, or a different provider for any pipeline stage. Re-run the same scenario suite against the new version before you publish it, so every production call stays pinned to a version you have actually tested.

Talk to an expert

Tell us about your calls and we will come back with a straight answer on fit, sourcing, and deployment. Your message goes to the team at sales@bibha.ai.

Start free

Tell us where to reach you and what you are building, and we will set up your workspace access. Your message goes to the team at sales@bibha.ai.