Next-Gen App & Browser Testing Cloud
Trusted by 2 Mn+ QAs & Devs to accelerate their release cycles

AI evals score AI outputs against a fixed dataset instead of asserting pass or fail. Learn the four parts of an eval, the main types, and how to gate a release.

Samyak Goyal
Author

Anubhav Singhmaar
Reviewer
Published on: August 31, 2026
A support chatbot that answered refund questions correctly all last week can start inventing a renewal date today, with no code change behind it. The prompt is the same, the retrieval index is the same, and every unit test in the pipeline is still green.
That blind spot is what AI evals exist to close. McKinsey's The state of AI in 2026 survey, published in August 2026, found that 40 percent of respondents at large organizations report scaling AI agents, up from 27 percent a year earlier. Those systems ship into production faster than assertion-based test suites can say anything useful about them.
TL;DR
An AI eval is a scored test for an AI system. You send a fixed set of inputs through the system, apply grading logic to each output, and aggregate the scores into one number. Evals report a score instead of pass or fail because the same input can produce different valid answers on different runs.
What Are the Parts of an AI Eval?
Are AI Evals the Same as Benchmarks?
No. Benchmarks score general model capability on a public dataset everyone shares, while evals score your application on your own data and requirements. A model can top a public leaderboard and still fail your eval set. TestMu AI Agent Testing applies the same idea to deployed chat and voice agents, scoring them on nine quality dimensions.
An AI eval is a scored test for an AI system: a fixed dataset of inputs, grading logic applied to every output, and an aggregate score tracked across releases. The word is shorthand for evaluation, and it stretches from a ten-case script a developer runs locally to a scheduled suite scoring thousands of production conversations.
The reason evals exist as a separate practice is that AI output is non-deterministic. Ask a support agent the same question twice and you get two different sentences, both correct. An equality assertion fails on the second one even though nothing regressed, so the assertion has to be replaced with something that scores degree of correctness.
Swapping the boolean for a score changes three things downstream. A score has no natural pass mark, so somebody has to choose a threshold and own it. One case proves almost nothing on its own, which moves the unit of measurement to the aggregate across a dataset. Scores are also only meaningful next to earlier scores, making evals comparative by design: you are always measuring this version against the last one.
Every eval, from a scratch script to a managed platform, is built from the same four parts. If one is missing, what you have is a demo.
Graders split into two families with different costs. Code-based graders are cheap, instant, and completely deterministic, but they only catch what you can express as a rule: a required phrase, a forbidden phrase, valid JSON, a number in range. Model-based graders handle judgment calls like tone and helpfulness, but they cost tokens, add latency, and need their own validation against human labels. Most working eval suites use code graders for the mechanical checks and reserve model graders for the subjective dimensions, a split covered in depth in our guide to LLM-as-a-judge evaluation.
If you already own a test suite, most of an eval maps onto something you have. The mapping is close enough to be useful and different enough to matter.
| Test suite concept | Eval equivalent | What changes |
|---|---|---|
| Test data | Eval dataset | Versioned as a product artifact, since editing it silently invalidates every historical score you have recorded. |
| Test case | One row of the dataset | A single row proves nothing on its own. Signal lives in the aggregate across dozens of rows. |
| Assertion | Grader | Returns a score between 0 and 1 instead of a boolean, so partial credit is normal. |
| Pass criteria | Threshold | Chosen by a human based on tolerable failure rate, not implied by the code. |
| Regression suite | Baseline comparison | Compares scores between two versions rather than checking a fixed expected value. |
| Flaky test | Expected variance | Run-to-run variation is a property of the system, not a defect to quarantine. |
The last row is where most QA teams get stuck. In a deterministic suite, a test that passes and fails on identical input is broken and gets quarantined. In an eval, that variation is the measurement itself, and quarantining it removes exactly the signal you built the eval to capture. The practical answer is to run the same case several times and score the distribution rather than a single sample.
Note: Non-deterministic output breaks assertion-based suites, which is why TestMu AI built evaluation into the platform rather than bolting it onto a test runner. Start free!
Evals are usually grouped by what is under test, because that decides what the dataset contains and what the grader can see. The four groups below cover most production work, and a single application often needs three of them.
Model evals score the raw model on your task, holding the prompt fixed. They answer whether switching from one model version to another helps or hurts, which matters most when a provider deprecates a version and gives you a migration window. Because the prompt is held constant, any score movement is attributable to the model itself. Our guide to model evaluation for QA engineers covers the underlying metrics in detail.
Prompt evals hold the model fixed and score prompt changes. They matter because prompt edits look harmless in a diff and regress silently: tightening one instruction routinely loosens behaviour somewhere the author never looked. This is the cheapest eval to build and the one with the fastest payback, since prompts change far more often than models do. See prompt evaluation and drift for the versioning workflow.
For retrieval-augmented systems, retrieval evals score the documents fetched before the model ever writes a word. Splitting retrieval scoring from generation scoring is what makes a failure diagnosable: a wrong answer built on the right documents is a generation problem, while a fluent answer built on the wrong documents is a retrieval problem. Grade the two separately or you will tune the prompt to compensate for a broken index.
Agent evals score a multi-step run rather than one reply: which tools the agent called, how it recovered from an error, and whether it reached the user's goal. An agent can produce a well-written final message after taking an expensive wrong path, and only trajectory-level scoring catches that.
This is where a platform saves real work. TestMu AI Agent Testing deploys autonomous testing agents against chat, voice, and phone agents, and scores chat and voice runs on nine quality dimensions: hallucination detection, bias detection, completeness, context awareness, response quality, conversation flow, tone consistency, positive user outcome, and root-cause understanding. Phone agents add more than 30 call-specific metrics covering first call resolution, intent recognition accuracy, accent handling, and background noise resilience.
As the quality dimensions documentation sets out, every score also carries a confidence level of high, medium, or low based on how many scenarios produced it, and low-confidence scores are marked indicative only. That is the honest version of a metric, and it is the detail most homegrown harnesses omit: a 92 percent score from eight scenarios and a 92 percent score from four thousand are not the same claim. For deeper coverage of trajectory scoring, see our guide to AI agent evaluation.
Benchmarks and evals both score model output, which is why the words get swapped. They answer different questions. A benchmark scores general capability against a public dataset that everyone shares, so results are comparable across labs. An eval scores your application against your data, and the results mean nothing to anyone else.
The consequence for a release decision is direct: a public benchmark score cannot tell you whether a model upgrade will break your refund policy responses, because the benchmark has never seen your refund policy. Benchmarks narrow the shortlist of models worth trying; evals decide which one ships. Our breakdown of LLM benchmarks versus evals covers what each one can and cannot gate.
A first eval does not need a framework. It needs a dataset, a grader, and a threshold, and it can be a single script. The steps below produce something that runs in CI on day one and grows from there.
OpenAI's evaluation best practices guidance is to ensure eval data includes typical cases, edge cases, and adversarial cases.
Here is a working harness at that scale. It scores ten recorded support-agent responses with a code-based grader, compares a candidate prompt against a saved baseline, and exits non-zero when the aggregate drops below 0.80.
const THRESHOLD = 0.80;
// One row: the input, what the answer must contain, and what it must never contain.
const cases = [
{ id: 'no-invented-date',
mustInclude: ['check', 'Billing'],
mustNotInclude: ['15th', 'January'] },
{ id: 'multi-turn-recall',
mustInclude: ['A-4417'],
mustNotInclude: ['what is your account number'] },
// ...20 to 50 rows pulled from real transcripts
];
function grade(output, c) {
const text = output.toLowerCase();
const missing = c.mustInclude.filter((t) => !text.includes(t.toLowerCase()));
const leaked = c.mustNotInclude.filter((t) => text.includes(t.toLowerCase()));
const checks = c.mustInclude.length + c.mustNotInclude.length;
// Partial credit, not a boolean: this is what makes it an eval.
const score = checks === 0 ? 1 : (checks - missing.length - leaked.length) / checks;
return { score, missing, leaked };
}
const passRate = cases.reduce((sum, c) => sum + grade(c.candidate, c).score, 0) / cases.length;
if (passRate < THRESHOLD) {
console.log('EVAL GATE FAILED');
process.exit(1); // the line that turns a report into a gate
}Running that harness against a candidate prompt that introduced a hallucinated renewal date produced this output:
baseline (v1) pass_rate=1.00
candidate (v2) pass_rate=0.80 threshold=0.80
REGRESSED no-invented-date missing=["check"] leaked=["15th"]
REGRESSED out-of-scope leaked=["better than"]
REGRESSED multi-turn-recall missing=["A-4417"] leaked=["what is your account number"]
EVAL GATE PASSEDRead the last line carefully, because that run is a working demonstration of the most common eval bug. Three cases regressed, including an invented renewal date and a lost account number, and the gate still reported a pass. The seven untouched cases scored a perfect 1.00 each, which pulled the mean up to exactly 0.80, and 0.80 is not below a threshold of 0.80.
The run above shows why a single aggregate threshold is not enough on its own. A mean is a lossy summary, and adding easy cases to a dataset raises it, which means an eval suite can get less sensitive as it grows. Layering gates catches what the mean alone lets through.
Trigger the suite on every prompt edit, model version bump, and retrieval index rebuild, since all three change behaviour without touching application code and none of them fire a normal test. OpenAI's guidance calls this continuous evaluation and recommends running evals on every change rather than only ahead of a launch. For metric selection and CI wiring at production scale, our guide to LLM evaluation metrics and methods goes deeper than this article does.
Note: TestMu AI Agent Testing applies configurable thresholds to scored quality dimensions and returns a go-live readiness verdict per agent. See the metrics behind the scores
Most failing eval programs fail the same handful of ways, and none of them are about picking the wrong metric.
Automated scoring also has a hard ceiling: it only catches failure modes somebody already wrote a grader for. Reading a sample of real transcripts each week is what surfaces the modes nobody anticipated, and each one found that way becomes a new row in the dataset. Teams tracking behaviour after release should pair this with LLM observability, which captures the production traces the weekly sample is drawn from.
Open your last three production incidents and turn each into three dataset rows: the exact input that failed, a paraphrase of it, and the neighbouring case you suspect is broken too. Give every row its required and forbidden phrases. That is a nine-case eval built entirely from failures you have already paid for, and it runs as a script this afternoon. Add the baseline comparison and the non-zero exit, and it is a release gate by the end of the week.
When the agent under test has multiple turns, tool calls, or a voice channel, a homegrown harness stops paying for itself. TestMu AI Agent Testing covers that surface with scored dimensions and confidence levels out of the box, and the Agent Testing platform documentation walks through connecting an agent and reading its first results. Teams testing LLM features inside a broader QA process can start from our LLM testing learning hub.
Author
Samyak Goyal is a Senior Member of Technical Staff at TestMu AI engineering Kane CLI, the command-line tool that runs browser automation from the terminal, where a flow described in natural language executes in a real Chrome browser and returns pass or fail with shareable proof. He is a backend engineer with 4+ years of experience, previously an SDE at Innovaccer, where he built APIs, introduced Kafka, and cut deployment from weeks to hours. Samyak also builds multi-agent systems, skill-orchestration frameworks, and a personal copilot that indexes 200+ microservice repositories.
Reviewer
Anubhav Singhmaar is an AI Product Manager at TestMu AI driving Kane CLI, the command-line tool that brings browser automation to the terminal, turning natural-language flows into runs in a real Chrome browser that return pass or fail with shareable proof. He owns the roadmap and prioritization and works with engineering to ship developer-facing features. Before TestMu AI, he spent over four years at Sprinklr owning enterprise voice AI across APAC and EMEA. A mechanical engineer turned product manager, he grounds guidance in real QA workflows.
Did you find this page helpful?
More Related Blogs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance