AI-testgevallen Genereren uit Requirements: de Prompt die Uitvoerbare Tests Oplevert

U hebt veertig user stories in de sprint backlog en één QA-engineer met drie dagen. Iemand heeft al voorgesteld de acceptatiecriteria in ChatGPT te plakken, en iemand anders heeft dat geprobeerd en kreeg dertig testgevallen terug die prettig lezen en niet uit te voeren zijn.

Beiden hebben gelijk. AI-testgevallen genereren levert in minuten een bruikbaar eerste concept, en het stort in op een prompt van één regel, omdat een model zonder outputcontract optimaliseert op behulpzaam klinken in plaats van uitvoerbaar zijn. De oplossing zit in de structuur van de prompt en niet in de keuze van het model: vier vaste onderdelen in de input, daarna een kritiekronde die het concept beoordeelt langs zes risicolenzen en alleen de hiaten opnieuw genereert.

Wat terugkomt is Gherkin, één scenario per geval, getagd P0 tot P2, elke rij herleidbaar naar het criterium dat het dekt, klaar voor de importer van Xray, TestRail of Jira. Hieronder vindt u het template, de lus, de reviewrubriek en het eerlijke omslagpunt.

Waarom AI-testgevallen Genereren Onzin Oplevert op een Prompt van Eén Regel

De prompt waarmee de meeste teams beginnen is een variant van “genereer testgevallen voor dit requirement”, en die levert een lijst op die een manager accepteert en een tester niet kan gebruiken. Stack Overflow vond dat de meestgenoemde frustratie met AI-tools “AI-oplossingen die bijna goed zijn, maar niet helemaal” was, gemeld door 66% van de respondenten.

De Vier Dingen Die een Prompt van Eén Regel Mist

  • Inputstructuur. Met alleen proza verzint het model de grenzen van de feature en gokt het wat een “tenant” in uw product betekent.
  • Outputformaat. Vrije tekst levert “Controleer of de gebruiker kan inloggen”, waar Gherkin een Given, When en Then oplevert die een tester kan uitvoeren.
  • Tagging. Ongetagde gevallen komen als platte lijst binnen, terwijl een risicokolom er een P0-subset van maakt die u bij elke build draait.
  • Bereik van randgevallen. Blijft dit open, dan produceert het model happy paths en één null-check in plaats van sessieverloop en tenantisolatie.

Waarom de Output “redelijk” Lijkt maar Niet Uitvoerbaar Is

Gevallen dubbelen over stories heen, omdat het model geen geheugen heeft van de story die het een minuut eerder verwerkte, en niets is herleidbaar naar een criterium, waardoor dekking niet te rapporteren is. Stappen komen binnen als verhalende zinnen die twee testers op twee manieren lezen, en elk geval draagt dezelfde impliciete prioriteit, waardoor de suite niet ingekort kan worden als de datum schuift.

De Lat Die Dit Artikel Zichzelf Oplegt

Deze gids legt zich drie artefacten op: één prompttemplate, één kritieklus, één reviewrubriek. Plak alle drie in Claude, ChatGPT of Gemini en u zou testgevallen uit requirements moeten genereren die gededupliceerd, risicogetagd en herleidbaar terugkomen.

Het Vierdelige Prompttemplate

Elk onderdeel hieronder haalt één specifieke fout weg die hierboven is benoemd. De volgorde doet ertoe, want het model leest het inputcontract eerst en de grenzen als laatste, en juist bij die grenzen treedt een maximum op het aantal gevallen in werking.

Inputstructuur

Vier inputs, in deze volgorde: de requirementtekst, de acceptatiecriteria als opsomming in plaats van een alinea, de context van de techstack, en de zes klassen randgevallen hieronder. De stackcontext is het onderdeel dat teams overslaan en het onderdeel dat de output het meest verandert.

Een model dat “Next.js app router, JWT met accesstokens van 15 minuten, Postgres row-level security, negen locales inclusief Arabisch” krijgt, genereert testgevallen uit user stories die het vernieuwingsvenster van het token en de rechts-naar-links lay-out benoemen. Haal die context weg en u krijgt gevallen die op elk product passen en geen enkel product testen.

De Opdracht

Vraag om een tabel waarin elke rij één scenario in Given/When/Then-vorm is, plus twee kolommen die het model nooit ongevraagd toevoegt: een risicokolom met P0, P1 of P2, en een traceerbaarheidskolom die het gedekte criterium benoemt. Die tweede kolom maakt dekking rapporteerbaar en deduplicatie mogelijk, want het model ziet welke criteria al drie gevallen dragen.

Gherkin, gespecificeerd door het Cucumber-project, verdient zijn plek om een tweede reden. Het is het formaat dat de importer van Xray native leest.

Rol- en Toonbeperking

De rolregel doet echt werk aan omvang en aan triage-oordeel. De onze luidt: “Act as a QA engineer with 8 years of enterprise SaaS experience. Write test cases a human engineer will run today, and skip smoke coverage the CI pipeline already handles.”

Outputgrenzen

Dedupliceer tegen de criteria voordat er iets terugkomt, en laat elk happy-pathgeval vallen waarvan de Then-clausule alleen een criterium woord voor woord herhaalt, want dat test de zin en niet de software. De derde grens maximeert de output op drie gevallen per criterium, tenzij een risicolens aanslaat.

AI-testgevallen Genereren uit Requirements: de Prompt die Uitvoerbare Tests Oplevert
# PART 1 - INPUT
REQUIREMENT:


ACCEPTANCE CRITERIA:
- AC1: 
- AC2: 
- AC3: 

TECH-STACK CONTEXT:
- Framework:  
- Auth model: 
- Data store: 
- i18n scope: 

EDGE-CASE CLASSES TO COVER:
auth | permissions | concurrency | network | i18n | data-integrity

# PART 2 - THE ASK
Return a table. One row per test case. Columns:
  | ID | Title | Given | When | Then | Risk | Traces to |
- Given/When/Then: one line each, no supporting narrative.
- Risk: P0 (release blocker), P1 (this sprint), P2 (backlog).
- Traces to: the exact AC id this case covers.

# PART 3 - ROLE
Act as a QA engineer with 8 years of enterprise SaaS experience.
Write test cases a human engineer will run today.
Skip smoke coverage the CI pipeline already handles.

# PART 4 - GUARDRAILS
- Deduplicate against the acceptance criteria before returning.
- Drop any happy-path case whose Then only restates an AC verbatim.
- Cap at 3 cases per AC, unless an edge-case class above fires,
  then lift the cap for that AC only.
- Output the table and nothing else. No preamble, no summary.

De Lus met Zes Lenzen

De meeste gidsen over testgevallen schrijven met AI stoppen bij de eerste prompt, en juist daar begint het interessante werk. Een eerste concept dekt wat de criteria hardop zeiden, en de lus hieronder vindt wat ze stilzwijgend aannamen.

De Zes Lenzen

  • Auth. Sessieverloop midden in een actie, tokenvernieuwing op een lopend verzoek, rolescalatie na een rechtenwijziging.
  • Rechten. RBAC-grensgevallen, tenantisolatie, een gebruiker die toegang verliest met een open pagina.
  • Gelijktijdigheid. Dubbel verzenden, twee tabs die één record bewerken, conflicten bij optimistic locking, races op een gedeelde teller.
  • Netwerk. Time-outs, retry storms, offlinemodus, een gedeeltelijk antwoord dat 200 teruggeeft met de helft van de payload.
  • i18n. Rechts-naar-links lay-out, datum- en getalnotaties per locale, teksten die een besturingselement met vaste breedte breken.
  • Data-integriteit. Velden die null mogen zijn, grenswaarden, emoji in namen, vrije tekst die tegen injectie aanschurkt.
AI-testgevallen Genereren uit Requirements: de Prompt die Uitvoerbare Tests Oplevert

De Kritiekprompt

Plak de tabel van het eerste concept terug in hetzelfde gesprek en vraag het model zijn eigen output te auditen tegen elke lens bij naam. Genummerde instructies werken hier beter dan een alinea, want het model beantwoordt elk punt op zijn beurt terwijl een verzoek in proza één samenvattende zin oplevert.

Here is the suite you just generated: 

For each of the six edge-case classes (auth, permissions, concurrency,
network, i18n, data-integrity):
  1. List which of my cases cover that class. Cite case IDs.
  2. Score coverage of that class: none | partial | adequate.
  3. Name what a senior tester would expect to see that I am missing.

Then return ONLY the missing cases, in the same table format.
Do not restate cases I already have.

De laatste regel is wat de tijd bespaart. Zonder “return only the missing cases” nummert het model alles opnieuw en verliest u de review die u al had gedaan.

Wanneer U de Lus Stopt

Stop na twee rondes, of eerder wanneer het model adequate dekking meldt op vier van de zes lenzen. Een derde ronde levert betrouwbaar gevallen op die technisch geldig en commercieel zinloos zijn.

Wat de Lus Vindt op een Echte User Story

Neem een eenvoudige story: als terugkerende gebruiker kan ik inloggen met e-mail en wachtwoord en kom ik op mijn dashboard. Het eerste concept leverde geldige inloggegevens, een ongeldig wachtwoord, een geblokkeerd account en een check op leeg veld, waarna de kritiekronde auth als gedeeltelijk scoorde, i18n als geen en gelijktijdigheid als geen.

Scenario: Sessie verloopt terwijl het dashboard open staat        [P0, AC3]
  Given ik ben ingelogd en inactief voorbij de TTL van 15 minuten van het accesstoken
  When ik een dashboardactie start die de API aanroept
  Then vernieuwt het refreshtoken de sessie stil en wordt de actie afgerond

Scenario: Gelijktijdig inloggen vanaf een tweede apparaat            [P1, AC1]
  Given ik ben ingelogd op apparaat A
  When ik met dezelfde inloggegevens inlog op apparaat B
  Then blijven beide sessies geldig en toont geen van beide dashboards verouderde data

Scenario: Inlogformulier in een rechts-naar-links locale             [P1, AC2]
  Given mijn locale is ar-SA
  When ik het inlogformulier open
  Then spiegelen labels, de knop om het wachtwoord te tonen en de validatietekst correct

Geen van de drie is exotisch. Alle drie halen productie precies omdat de acceptatiecriteria ze nooit noemden.

Promptfragmenten voor Claude, GPT-4o en Gemini

Het template draait onveranderd op alle drie de grote chatmodellen, en elk heeft één correctieregel nodig. Die regels kosten niets en veranderen de output meer dan van model wisselen.

Claude Sonnet, Aanpassingen en Kosten per Suite

Claude draait de kritieklus met de minste sturing en respecteert “return only the missing cases” het meest betrouwbaar. Zijn gewoonte is verhalende opvulling, dus voeg “one line per Given/When/Then, no supporting narrative” toe aan deel twee. Anthropic vermeldt Claude Sonnet 5 op $2 per miljoen inputtokens en $10 per miljoen outputtokens.

GPT-4o, Aanpassingen en Kosten per Suite

GPT-4o levert het snelste eerste concept en de zwakste lenskritiek wanneer de lenzen als alinea binnenkomen. Plak ze in plaats daarvan als opsomming, de nuttigste correctie bij testgevallen genereren met ChatGPT. OpenAI vermeldt GPT-4o op $2,50 per miljoen inputtokens en $10 per miljoen outputtokens.

Gemini 2.5 Pro, Aanpassingen en Kosten per Suite

Gemini gebruikt de context van de techstack het beste en produceert data-integriteitsgevallen op ORM-niveau die de andere modellen missen. Zijn zwakte is Gherkin-discipline, dus voeg “strict Given/When/Then, no free-text preamble” toe aan deel twee. Google vermeldt Gemini 2.5 Pro op $1,25 per miljoen inputtokens tot 200.000 tokens en $10 per miljoen outputtokens.

Gepubliceerde API-tarieven en de ene regel om toe te voegen, per augustus 2026
Model
Input, per 1M tokens
Output, per 1M tokens
De ene regel om aan deel twee toe te voegen
Model

Claude Sonnet 5

Input, per 1M tokens

$2,00

Output, per 1M tokens

$10,00

De ene regel om aan deel twee toe te voegen

One line per Given/When/Then, no supporting narrative

Model

GPT-4o

Input, per 1M tokens

$2,50

Output, per 1M tokens

$10,00

De ene regel om aan deel twee toe te voegen

Plak de zes lenzen als opsomming, niet als alinea

Model

Gemini 2.5 Pro

Input, per 1M tokens

$1,25 (prompts tot 200k)

Output, per 1M tokens

$10,00

De ene regel om aan deel twee toe te voegen

Strict Given/When/Then, no free-text preamble

Alle drie rekenen dezelfde $10 per miljoen outputtokens, en een run met twee rondes wordt gedomineerd door output, dus laat de outputkwaliteit de keuze bepalen in plaats van de prijs. Lees de echte tokenaantallen uit de usage-respons van elke API, en let erop dat Anthropic waarschuwt voor een tokenizer die op nieuwere modellen ruwweg 30% meer tokens oplevert voor dezelfde tekst.

De Menselijke Reviewstap

De vraag onder deze paragraaf, zoals die in een zoekbalk wordt getypt, is of AI handmatige testers kan vervangen, en het eerlijke antwoord is nee. Het model schrijft sneller dan welke mens ook, en een tester bepaalt wat er live gaat en voegt de domeinranden toe die het model niet kan kennen.

De enquêtecijfers ondersteunen die voorzichtigheid. Stack Overflow meldt dat 46% van de ontwikkelaars de nauwkeurigheid van AI-output actief niet vertrouwt, tegen 33% die het wel vertrouwt.

De Scorerubriek met Drie Dimensies (Uitvoerbaarheid, Uniciteit, Waarde)

Scoor elk gegenereerd geval 1 tot 3 op drie dimensies en verwijder daarna alles onder 6 van 9. Een 6 houdt gevallen over die op twee dimensies sterk zijn en op één zwak, en ruimt het middenveld op dat AI-concepten opgevuld laat aanvoelen.

  • Uitvoerbaarheid. Kan een tester dit vandaag uitvoeren met de data die er al is? Een fixture die niemand heeft gebouwd scoort 1.
  • Uniciteit. Dekt het iets dat geen ander geval dekt? Bijna-duplicaten worden hier gevonden.
  • Waarde. Doet een fout hier ertoe? Een gebroken tenantgrens scoort 3, een verschoven tooltip in een kleine locale scoort 1.

De Domeinranden Die Alleen een Mens Vindt

Drie categorieën komen in elke review terug, en geen ervan is uit een ticket af te leiden. Bedrijfsregels die in supporttickets leven, regressies uit recente sprints waarvan het model geen geheugen heeft, en randgevallen die specifiek zijn voor een enterprise-integratie, zoals een partner-API die 200 teruggeeft met een foutbody.

Dit is waar een uitbestede ronde eruitziet als een QA-functie en niet als een transcriptiedienst. Het past dezelfde scoringsdiscipline toe als ons proces voor handmatig testen.

Wat de Review Werkelijk Kost

Reserveer de review expliciet, want dit is de stap die het eerst wordt geschrapt. Op een batch van 40 stories levert de lus een paar honderd ruwe gevallen op, en scoren gaat met ongeveer één geval per vijftien seconden, dus reken op ongeveer de helft die overleeft en bijna negentig die binnen een uur wordt opgeleverd. Zie dat als een scopingschatting en niet als een gemeten benchmark, en voor een idee van wat de onderhouden suite wordt: onze Granola-casestudy documenteert meer dan 1.100 testgevallen en 76% van de regressiesuite geautomatiseerd op een AI-kladblokproduct.

De Gevallen in Jira, TestRail of Xray Krijgen Zonder Herschrijfronde

Het outputformaat is speciaal voor deze paragraaf gekozen. Een Gherkin-tabel staat één transformatie af van de ingebouwde importer van elke grote tracker, en alle drie de routes hieronder gebruiken first-party tooling die de meeste teams al in licentie hebben.

Xray op Jira (Cucumber-importer)

Sla de scenario’s op als .feature-bestanden en post ze naar het importeindpunt van Xray op /api/v2/import/feature, dat ook een zip accepteert. Scenariotags worden labels op het aangemaakte Test-issue, dus de risicokolom komt binnen als @P0, en een tag voor de Feature-regel koppelt de Test aan een bestaand Jira-requirement. Xray vermeldt dat de Feature-beschrijving bij het importeren wordt overgeslagen.

TestRail (CSV-importer en kolomtoewijzing)

Exporteer dezelfde tabel naar CSV en open het dialoogvenster Import CSV via de werkbalk van de testgevallenrepository. TestRail wijst kolommen toe aan casevelden in stap twee en ondersteunt waardetoewijzing voor dropdowns, waarmee de teksten P0/P1/P2 echte prioriteitswaarden worden. Houd één geval per rij aan, zodat de indeling met één rij van toepassing is.

De toewijzing die werkt: Title naar Title, Given naar Preconditions, When naar Steps, Then naar Expected Result, Risk naar Priority, traceerbaarheid naar References. Wijs elk verplicht veld toe, anders rondt de wizard niet af.

Jira Native (ScriptRunner / Forge)

Zonder Xray maakt u elk geval aan als eigen issue, gekoppeld aan de story. Een script in ScriptRunner loopt door de CSV en maakt de issues aan, en een Forge-app doet hetzelfde via de issue link API van Jira Cloud, waarvoor Atlassian de scope write:issue-link:jira documenteert.

Wat U Kunt Overslaan

Sla de AI-naar-tracker integratieplatformen over die voor deze overdracht worden aangeprezen. De promptoutput is door het ontwerp al bijna CSV, en elke importer hierboven is first-party en gedocumenteerd, dus die laag lost een probleem op dat het outputformaat al had weggehaald.

Wanneer een Gewone LLM Niet Meer Genoeg Is

Vier signalen markeren het punt waarop de lus niet meer meeschaalt, en ze komen doorgaans samen. Let daarop en niet op een woordenaantal in uw requirementsdocument.

  • Het corpus groeit uit de context. Voorbij ruwweg 500 stories wordt traceerbaarheid over sprints heen het knelpunt en kan een chatvenster niet zien wat al gedekt is.
  • Promptonderhoud wordt een baan. Vier uur per week of meer aan prompts afstemmen hoort in de vergelijking met een platformlicentie.
  • Compliance vraagt een audittrail. Scopes voor SOC 2, HIPAA en ISO 27001 willen het model en de promptversie op elk geval gestempeld zien.
  • Recente regressies blijven verdwijnen. Testgevallen genereren met LLM-prompts draagt geen geheugen van de incidenten van vorige sprint, dus dezelfde hiaten komen terug.

Vanaf daar versmalt de keuze tot twee routes: draai de rondes zelf op een daarvoor gebouwd platform, waarbij onze review van de beste AI-testtools de agentische inventaris behandelt, of geef de ronde uit handen aan een QA-team dat die al draait, wat onze AI-testdiensten dekken, inclusief ondersteuning bij prompt engineering en review van LLM-output. Die tweede route wordt geprijsd als Time and Material tegen een vaste scope, dus een eerste batch is een begrensde uitgave.

Wanneer de Lus Eindigt en de Sprint Begint

De vierdelige prompt en de lus met zes lenzen brengen het eerste concept tot uitvoerbaar, en de scoringsronde en de trackerimport brengen het in de sprint. Die laatste twee stappen bepalen of de suite wordt gebruikt of stil wordt opgegeven.

Draai het vanmiddag op één story en tel hoeveel gevallen de scoring overleven. Dat getal zegt u meer over uw requirements dan over het model, want de criteria die opvulling opleveren waren doorgaans al vaag.

Een QA-team kan de lus ook elke sprint draaien en de gevallen in uw tracker zetten. Is dat de betere besteding van de week van uw engineers, neem dan contact met ons op en we scopen de eerste batch tegen uw backlog.

Veelgestelde Vragen

Hoe krijg ik ChatGPT zover dat het goede testgevallen schrijft?

Geef het de vier dingen die een standaardprompt weglaat: het requirement plus de criteria als opsomming, een expliciet outputformaat (een Gherkin-tabel met kolommen voor risico en traceerbaarheid), een rolregel die zegt dat het dekking moet overslaan die uw CI al doet, en grenzen die het aantal gevallen per criterium maximeren.

Draai daarna één kritiekronde waarin u het vraagt zijn eigen output te scoren tegen zes risicoklassen en alleen terug te geven wat ontbreekt. Die ronde scheidt een lijst die u kunt uitvoeren van een lijst die prettig leest.

Wat is de beste prompt om testgevallen te genereren met AI?

Een vierdelige structuur verslaat elke slimme losse zin: het inputblok (requirement, criteria, context van de techstack, klassen randgevallen), de opdracht (een Gherkin-tabel, één rij per geval, risicotag, traceerbaarheidskolom), een rolbeperking die smoke-checks overslaat die de CI al dekt, en grenzen die dedupliceren en per criterium maximeren. Laat daar een kritiekronde langs zes risicoklassen op volgen, en merk op dat het geheel één kopieerbare prompt is waarvoor geen account nodig is.

Hoe zet ik een user story om in testgevallen?

Plak de storytekst, de criteria als opsomming en uw stackcontext (framework, authmodel, datastore, localebereik) in de vierdelige prompt. Draai de kritiekronde zodat het model zijn concept audit tegen auth, rechten, gelijktijdigheid, netwerk, i18n en data-integriteit, en scoor daarna elk overgebleven geval op uitvoerbaarheid, uniciteit en waarde, waarbij u alles onder 6 van 9 verwijdert.

Kan AI betere testgevallen schrijven dan mensen?

Nee. Een model schrijft een suite sneller dan welke mens alleen ook, en een tester is wat die suite het uitvoeren waard maakt, door opvulling te verwijderen, bijna-duplicaten te vinden en domeinranden toe te voegen die het model nooit heeft gezien.

Op een batch van 40 stories mag u verwachten dat een paar honderd ruwe gevallen terugvallen tot ruwweg negentig opgeleverde gevallen, binnen ongeveer een uur scoren. De combinatie verslaat elke kant alleen, en daarom hoort review in de schatting.

Werkt dit in Jira, TestRail of Xray zonder herschrijven?

Ja, via first-party importers in alle drie. Xray neemt de Gherkin als .feature-bestanden via zijn Cucumber-importeindpunt, waar scenariotags labels worden en een tag op featureniveau de test aan zijn requirement koppelt.

TestRail neemt dezelfde tabel als CSV via de ingebouwde wizard met kolom- en waardetoewijzing. Native Jira maakt elk geval aan als gekoppeld Test-issue via ScriptRunner of een Atlassian Forge-app op de REST API van Jira Cloud.

Bekijk hoe we meer dan 1.100 testgevallen bouwden en onderhielden voor Granola, een AI-kladblok, en 76% van de regressiesuite automatiseerden

Voer uw zakelijke e-mailadres in