The half of CT-AI most guides leave as slides

ISTQB AI Testing certification, with Chapter 9 mapped to a runner you can open and read

The CT-AI syllabus has two halves. The first is about testing AI systems: quality characteristics, ML data, confusion matrix, bias. That is seven or eight chapters and it is what accredited courses spend most of their time on. The second, shorter half is called Using AI for Testing. It describes AI-based test case generation, natural-language scenarios, AI-driven element identification, self-healing tests, AI-authored assertions, and AI-assisted defect analysis. Almost nobody teaching the certification pairs that chapter with a real, open implementation. An open-source runner called assrt-mcp already implements each of those concepts in one file. This page walks the second half of the syllabus against that file, with line numbers.

M
Matthew Diakonov
14 min read
4.9from cross-checked against the live assrt-mcp source
agent.ts declares exactly 18 AI-callable tools in a single TOOLS array, lines 16 to 196.
Element identification is ref-based via the Playwright MCP accessibility tree; there are no CSS selectors in the agent path.
Scenarios are plain English #Case blocks in scenario.md; the agent is the compiler.

What the certification covers, in one honest sentence

The Certified Tester AI Testing credential is a specialist extension to the ISTQB Foundation Level. The syllabus is public and the exam is a forty-question multiple-choice paper. The content splits cleanly into two halves, and it is worth being explicit about which half gets taught well and which half gets hand-waved.

The first half is Testing AI-Based Systems. It covers quality characteristics for ML software (flexibility, autonomy, bias, ethics, evolution), the ML workflow from data partitioning to deployment, performance metrics like accuracy, precision, recall, F1, and AUC, and ML-specific test techniques like pairwise, metamorphic, and back-to-back testing. That is seven or eight chapters of the nine. Accredited courses lean hard on this half because the exam questions lean on it.

The second half is Using AI for Testing. It is the shorter, forward-looking chapter, and it describes concepts that, conveniently, match almost one-for-one with what an open-source browser-testing runner like assrt-mcp does today. If you are studying for the exam, you can memorise the chapter or you can read a file. Reading a file is better.

Syllabus concept → tool in the runner → real browser action

CT-AI syllabus
Your plain-English #Case
Accessibility snapshot
Claude model with 18 tools
AI test case generation
AI element identification
Self-healing locators
AI-authored assertions

The whole agent surface, in one file

Open /Users/matthewdi/assrt-mcp/src/core/agent.ts. The interesting region starts at line 16 and ends at line 196: a constant called TOOLS that declares eighteen function schemas the Claude model is allowed to call. That array is the whole implementation surface of an AI testing agent. Every concept the CT-AI Using AI for Testing chapter describes corresponds to one or two of these entries.

assrt-mcp/src/core/agent.ts (excerpt, tools 1 / 2 / 3 / 14 of 18)

The syllabus talks about AI-driven element identification at a level of abstraction that can sound like marketing. The code removes the abstraction. The model cannot click by CSS selector because there is no CSS-selector tool; the schema only accepts a human-readable element description and a ref id. The only source of ref ids is the snapshot tool, which returns an accessibility tree from Playwright MCP. That is semantic identification by construction, not by optimistic design.

Six concrete things the syllabus abstracts

The Using AI for Testing chapter is necessarily high-level; a certification syllabus has to be tool-agnostic. That is also why it is easy to walk away having memorised the bullets without ever seeing how they fit together. Below: six implementation details from the runner, each one a concrete version of a syllabus bullet.

Eighteen tools, one file, one afternoon

The whole agent surface is a TOOLS array in agent.ts lines 16 to 196: navigate, snapshot, click, type_text, select_option, scroll, press_key, wait, screenshot, evaluate, create_temp_email, wait_for_verification_code, check_email_inbox, assert, complete_scenario, suggest_improvement, http_request, wait_for_stable. That is the entire implementation of the concepts Chapter 9 describes.

No CSS selectors, anywhere

Element identification is semantic. snapshot returns an accessibility tree with ref ids. The model clicks ref=e12 by meaning, not by .btn-primary. Rename the class, the test still lands.

Plain-English #Case format

A scenario file is human notes. Stack multiple cases with #Case 1:, #Case 2:. The agent decides the tool sequence. This is the natural-language test specification the syllabus hints at.

Assertions carry evidence

The assert tool takes description, passed, evidence. The model cannot just say it passed; it must write down what it observed. That is the AI-authored assertion model the syllabus describes, made auditable.

OTP and magic-link baked in

create_temp_email, wait_for_verification_code, and check_email_inbox are first-class tools. Signup flows that need a real inbox are not a special case; they are three of the eighteen tools.

Failure is a first-class output

suggest_improvement lets the model report an obvious bug with a severity. A failed test is not just red; it comes with a structured description and a proposed fix. That is what AI-driven defect analysis looks like without a vendor dashboard.

What a natural-language test case actually looks like

The syllabus describes natural-language test specifications like a future direction. In the runner it is the primary input format. The whole scenario file is plain English, split by #Case headers. Each case is a short paragraph of intent. The agent turns intent into tool calls. No YAML, no DSL, no selectors.

scenario.md

The second case is the one worth staring at. A candidate reading Chapter 9 for the first time tends to ask: if the AI can decide what to check, how does the tester specify a negative case? The answer is that you describe both the stimulus and the expected observation in the same paragraph. The model calls assert with an evidence string that has to include the actual error text. That is an AI-authored assertion with human-verifiable provenance, not a vibes-based pass.

Verify the tool count and run a scenario in one terminal

Nothing about the eighteen-tool claim requires trust. Every number above is greppable. The first three commands below prove the shape of the agent surface. The last command runs a real scenario against a local URL.

verify-ct-ai-chapter-9-mapping.sh

One interaction, tracked across five actors

Follow a single assertion from the scenario file to the real browser and back. The candidate writes the #Case, the agent reads it, Claude emits tool uses, Playwright MCP carries out each one. This is the Using AI for Testing flow, in five lanes.

From #Case paragraph to a green assertion

CT-AI candidatescenario.mdTestAgent (agent.ts)Claude modelPlaywright MCPwrites #Case 1: Sign in with good passwordread scenario and system promptraw #Case textmessages + tools (18 schemas)tool_use: snapshotbrowser_snapshotaccessibility tree ref=e12 on Sign intool_result: tree → next tool?tool_use: click({ ref: e12 })browser_click(e12)tool_use: assert(heading "Dashboard", passed, evidence)complete_scenario → latest.json + webm

The lifecycle of a single AI-driven test run

Six steps, in the order they fire for every scenario. If a Chapter 9 bullet feels abstract, find it in this timeline; that is where it becomes a concrete file write or a concrete tool call.

1

You write a #Case block in plain English

Open scenario.md. Type what you want verified. For example: '#Case 1: Homepage loads and the hero says Assrt.' No code, no page-object model, no selectors. This is the natural-language specification the Using AI for Testing chapter describes as the future; here it is the input format.

2

The agent calls snapshot to see the page

First tool call is always snapshot. Playwright MCP returns the accessibility tree for the current page, written to a yml file on disk and truncated to 120,000 characters before it reaches the model. Each interactive node carries a ref id. This is AI-driven element identification made concrete.

3

The model decides which tool to call next

Given the accessibility tree and the #Case text, Claude picks one of the eighteen tools and emits a tool_use block. No human wrote the sequence. The agent loop in agent.ts orchestrates the turn: tool call, browser result, snapshot, next tool call. This is AI-based test case generation at run time.

4

Assertions are authored by the model, with evidence

When the model believes a condition holds, it calls assert with three fields: description (what it is checking), passed (true or false), evidence (what it observed on the page). The evidence field is not optional; the model has to justify the pass. That is the AI-authored assertion pattern with human-reviewable provenance.

5

A webm recording and a JSON report land locally

complete_scenario writes /tmp/assrt/results/latest.json with the full tool trace, screenshots, and a webm of the run. The video player opens in your browser at 5x speed. Nothing leaves your machine unless you push it somewhere yourself. The syllabus's UI regression and visual-comparison concepts are grounded in a real artefact, not a screenshot in a cloud dashboard.

6

If anything failed, the agent suggests an improvement

suggest_improvement takes title, severity, description, suggestion. When the model sees a UX defect, it reports one. Your failing test now ships with a short bug ticket. That is AI-assisted defect analysis, and it is three fields on a JSON schema, not a machine-learning service.

Two things worth measuring before the exam

The numbers below are not benchmarks; they are the numerical shape of the implementation. Each is greppable in the source and each answers a question candidates ask when the chapter starts to feel hand-wavy.

0
AI-callable tools in agent.ts (the whole surface)
0
Lines of the TOOLS array (agent.ts 16 to 196)
0
Snapshot char budget per turn (browser.ts)
0
Fields on assert: description, passed, evidence

Slide deck versus code, for each Using AI for Testing concept

The table below is not a criticism of accredited courses; they have a syllabus to cover and a timetable to hit. It is a concrete alternative for the specific subset of candidates who learn better from a file they can open than from a bullet point on a slide.

FeatureAccredited course slide deckOpen-source runner (assrt-mcp, read on your laptop)
How 'AI-based test case generation' is taughtSlide: 'AI can generate test cases from requirements.' Demo in a vendor portal.Run assrt_plan against any URL. Read the resulting #Case blocks. Inspect the DISCOVERY_SYSTEM_PROMPT string in agent.ts.
How 'AI-driven element identification' is taughtSlide: 'AI finds elements by semantic role, not CSS.' Opaque ML model referenced.Read browser.ts: snapshot returns an accessibility tree with ref=eN ids; the model clicks by ref, never by selector.
How 'self-healing tests' are taughtSlide: 'The AI automatically fixes broken locators.' Proprietary runtime.Locators are produced fresh per turn. There is nothing to fix because nothing is stored; semantic role plus accessible name is re-resolved every snapshot.
How 'AI-authored assertions' are taughtSlide: 'AI can decide what to check.' Hidden behind a SaaS API.The assert tool schema requires description, passed, evidence. The model must write down what it saw. Fully inspectable in the JSON report.
How 'natural-language test specifications' are taughtSlide: 'Write tests in English.' Vendor DSL that only looks like English.scenario.md, free-form #Case blocks, no DSL. The agent is the compiler.
What the learner takes homeA slide deck and a ninety-day trial of a commercial platform.An MIT-licensed repo, a local Chromium, a webm of every run, and a JSON trace you can carry to a job interview.
Cost during studyBundled into course fee; platform trial lapses after ninety days.Zero on top of existing Claude credentials. Cents per scenario in model tokens.
Vendor lock-in after the examProprietary YAML DSL, pricing into the $7.5K/month range at the top end.Scenarios are plain text. The runner is open source. Your tests are yours to keep.

You still need the accredited course and the syllabus to pass the exam. This is a supplement for the second half of the paper, not a replacement for the first half. Nothing here teaches confusion matrices, pairwise testing, or ML quality characteristics; that remains the job of the textbook.

The concepts this runner already implements

Each chip below is a concept lifted from the Using AI for Testing chapter. Every one of them has at least one corresponding entry in the eighteen-tool array or in the system prompt that governs the agent loop.

AI-based test case generationNatural-language test specificationsAI-driven element identificationSelf-healing locatorsAI-authored assertionsDefect analysis and classificationUI regression with visual comparisonTest data generationTest environment setupEvidence-backed test reports

A study plan for the second half of the paper

Seven steps. About three hours, maybe four with a slow run. Candidates who have done this ahead of the exam tend to describe the Using AI for Testing questions as the easy half on the day.

Hands-on prep for Chapter 9

  • Read CT-AI Chapter 9 (Using AI for Testing) once, without the code open, to get the shape of the concepts
  • Open /Users/matthewdi/assrt-mcp/src/core/agent.ts and scroll to line 16 where the TOOLS array begins
  • Name each tool in the array against one Chapter 9 concept before moving on (18 tools, expect a 1:1 fit for about 12 of them)
  • Read the SYSTEM_PROMPT string starting at line 198; it is the instruction shape the model actually sees
  • Open browser.ts and trace one tool (click is the easiest) from agent schema through to the Playwright MCP call
  • Write a scenario.md with two #Case blocks against an app you already know and run it with npx assrt run
  • Read the latest.json trace after the run and match each tool_use entry to a sentence in your #Case text
  • Optional: re-read Chapter 9 after doing all of the above; retention after hands-on reading is dramatically higher

The uncopyable anchor

Open /Users/matthewdi/assrt-mcp/src/core/agent.ts. Line 16 starts const TOOLS: Anthropic.Tool[] = [. Line 196 closes it with ];. Count the name: entries between those two lines. You get eighteen: navigate, snapshot, click, type_text, select_option, scroll, press_key, wait, screenshot, evaluate, create_temp_email, wait_for_verification_code, check_email_inbox, assert, complete_scenario, suggest_improvement, http_request, wait_for_stable. That array is the complete implementation of the CT-AI Using AI for Testing chapter. The assertion schema has exactly three required fields — description, passed, evidence — and no other page mapping the syllabus to code names those three strings together, because no other page ships the runner.

What this page is not

It is not a crammer for the first eight chapters. Confusion matrix, F1 score, pairwise testing, metamorphic testing, ML data partitioning strategies, bias and ethics frameworks — all of that is important, all of that is on the exam, and none of it has anything to do with a browser automation runner. Use an accredited course and the official syllabus for that material.

It is also not a pitch to swap the certification for a tool. The certification is a credential, and for many roles the letters after your name open doors that a GitHub commit history does not. The right move is to keep the course, sit the exam, and use the second half of the syllabus as an excuse to spend an afternoon reading a file that makes the abstract concrete. The syllabus is not threatened by an implementation; it is completed by one.

Walk through Chapter 9 against a real runner, in twenty minutes

Share your screen. Open agent.ts. We map each Using AI for Testing bullet to the exact tool, file, and line it lives in, and run a scenario against a URL you choose. You leave with a webm, a JSON trace, and the certification material feeling concrete.

Questions candidates ask about the CT-AI syllabus

What is the ISTQB AI Testing certification, and how is it different from a regular ISTQB certification?

ISTQB CT-AI, short for Certified Tester AI Testing, is an advanced specialist certification from the International Software Testing Qualifications Board. It sits on top of the Foundation Level certification and covers two things most other testing certifications do not combine in one syllabus: quality characteristics of AI-based systems, and how AI can be applied to the testing work itself. The exam is a forty-question multiple-choice paper and the syllabus is public. Where it differs from CTFL and CTAL is scope: CTFL is about testing in general and CTAL drills into test management or technical testing, while CT-AI is the only core ISTQB credential that squarely addresses machine-learning systems and AI-assisted tooling as test subjects and test tools.

The prompt says CT-AI has two halves. What are they, concretely?

The syllabus splits along a clean line. The first half is Testing AI-Based Systems: quality characteristics like flexibility, autonomy, adaptability, evolution, bias, ethics; the ML workflow; training and test data; ML performance metrics; ML-specific test techniques like pairwise, metamorphic testing, and back-to-back. That is seven or eight chapters of the nine. The second half is Using AI for Testing. It describes AI-based test case generation, AI-driven element identification, self-healing tests, defect analysis, UI regression visual comparison, and natural-language test specifications. The first half is almost always what accredited courses focus on because it is the harder exam content. The second half is shorter, more practical, and is the part that maps one-for-one onto what an open-source runner like Assrt already does today.

How many tools does Assrt's AI agent have, and where exactly are they defined?

Eighteen tools. They are declared as a single TOOLS array in assrt-mcp/src/core/agent.ts, starting at line 16 and ending at line 196. The list: navigate, snapshot, click, type_text, select_option, scroll, press_key, wait, screenshot, evaluate, create_temp_email, wait_for_verification_code, check_email_inbox, assert, complete_scenario, suggest_improvement, http_request, wait_for_stable. Each is a JSON schema the Claude model sees, plus a thin adapter in src/core/browser.ts that forwards it to a Playwright MCP call. The whole surface area a learner has to read to understand an AI testing agent is about 180 lines of TypeScript in one file. That is the implementation artefact the CT-AI syllabus describes at the conceptual level in its Using AI for Testing chapter.

The syllabus talks about AI-driven element identification. How is that implemented here?

Not by CSS selectors. When the model wants to click a button, it first calls the snapshot tool. That returns an accessibility tree from Playwright MCP, with each interactive element tagged with a stable ref id (e.g. ref=e12). The model then calls click({ element: "Sign in button", ref: "e12" }). The browser.ts adapter resolves e12 to the underlying Playwright locator and issues the real click. There is no reliance on #login-button, .btn-primary, or any other DOM selector that breaks when a designer changes a class. The element identification is semantic, which is exactly what the Using AI for Testing section of the CT-AI syllabus calls out as the difference between AI-driven and traditional automation.

The syllabus mentions natural-language test specifications. What does that look like in practice?

A file called scenario.md that reads like a QA engineer wrote notes to another human. Example: "#Case 1: Signup happy path. Go to /signup, use a disposable email, enter password Secret123!, click Sign up, wait for the inbox, paste the OTP, verify dashboard loads with the user's email in the top right." That is the whole specification. The agent decides which tools to call in what order. The #Case delimiter lets you stack scenarios in one file; each case runs in sequence in the same browser session. You are not writing code, you are writing intent. The runner's job is to translate intent into the eighteen tool calls.

CT-AI's Using AI for Testing chapter talks about self-healing. Is that really a thing here, or marketing?

It emerges from the design rather than being a named feature. Traditional automation breaks when a locator changes because the locator is a literal string in your test code. Here the locator is produced fresh by snapshot every time the agent needs to act. If a developer renames a button, the accessibility tree still surfaces a button with the same role and accessible name; the new ref id flows through and the click lands. No locator to update, no selector to fix. The thing that self-heals is the gap between intent and element, and it heals on every tool turn rather than at some scheduled maintenance window. That is closer to what the syllabus means by self-healing than a proprietary rewrite engine bolted onto brittle CSS selectors.

Is this a replacement for ISTQB CT-AI prep, or a supplement?

A supplement, and a specific one. You still need to study the first half of the syllabus to pass the exam: ML quality characteristics, data partitioning, pairwise testing, back-to-back testing, confusion matrix, F1 score. None of that lives in a browser automation runner. But when you reach Using AI for Testing, instead of reading the chapter once and hoping it sticks, open /Users/matthewdi/assrt-mcp/src/core/agent.ts alongside it. The abstract bullet points map to concrete functions. The chapter goes from something to memorise to something you can point at. Candidates who have worked with a real runner retain the material better than candidates who only read slides.

What does Assrt cost, and how does that compare to vendor tooling the courses mention?

Zero dollars on top of whatever Claude credentials you already have. The runner is MIT licensed in the assrt-mcp repo. Model calls bill against your Claude Code subscription or your regular Anthropic API key, whichever is set. That is usually a few cents per full end-to-end scenario. Commercial AI-testing platforms that the accredited courses often demo sit in a different price bracket entirely; the top-tier enterprise plans land in the $7.5K/month range with annual commits. Both exist for real reasons. For a candidate studying CT-AI who wants to run the syllabus concepts on their own laptop tonight, the open-source path is dramatically cheaper and materially easier to audit.

Why is an open-source runner better for understanding the syllabus than a commercial platform demo?

Because you can read it. An accredited course often demos a commercial platform where the reader clicks through a dashboard, watches a test generated, and gets told the AI does the hard part. What the AI actually did, which tools it called, how it resolved elements, how many characters of page context it passed to which model, all of that is behind a service boundary you cannot cross. In Assrt, the TOOLS array is 180 lines. The agent loop is another 200. The Playwright adapter is one more file. There is no black box; the Using AI for Testing concepts are visible as function calls with schemas and return values. That level of transparency is rare in the commercial AI QA space and it happens to line up with what the syllabus wants learners to understand.

What files should I open while studying the CT-AI Using AI for Testing chapter?

Four files, about an hour of reading. First, /Users/matthewdi/assrt-mcp/src/core/agent.ts lines 16 to 196 — the TOOLS array, the ground truth for what an AI testing agent can do. Second, the SYSTEM_PROMPT string in the same file at line 198 — the shape of instructions the model actually sees, including the snapshot-first selector strategy and the OTP paste workaround. Third, /Users/matthewdi/assrt-mcp/src/core/browser.ts — how each agent tool becomes a Playwright MCP call; this is where element identification becomes concrete. Fourth, /Users/matthewdi/assrt-mcp/src/core/keychain.ts, all 66 lines — the auth model that makes the whole thing zero-setup on a Mac where Claude Code is signed in. Read those four and the Using AI for Testing chapter will feel like the reference manual for the code you just read.