Tests genereren met een prompt
Laat AI betekenisvolle tests schrijven.
Tests genereren met een prompt is een gratis Vibe-coding-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Vibe-coding. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Vibe-coding bevat in totaal 4 lessen.
Tests zijn je vangnet
Wanneer AI het grootste deel van je code schrijft, worden tests het contract dat ervoor zorgt dat de code betrouwbaar blijft. Elke bewering is een belofte die de assistent niet stilletjes kan breken.
Het doel is niet omwille van zichzelf 100 procent dekking te bereiken. Het doel is het gedrag vast te leggen dat je belangrijk vindt, zodat toekomstige generaties daar niet van afwijken.
Deze les gaat over hoe je met prompts een testsuite maakt die vertrouwen verdient.
Beschrijf gedrag, niet implementatie
Zwakke prompts vragen het model om "tests voor deze functie te schrijven". Het resultaat weerspiegelt de implementatie en slaagt triviaal, zelfs wanneer de code verkeerd is.
Sterke prompts beschrijven het verwachte gedrag in je eigen woorden. De test legt dan de bedoeling vast en niet de interpretatie van het model van de bestaande code.
Specificeer invoer, uitvoer en invarianten zoals een productspecificatie dat zou doen.
Write tests for the checkout function based on these rules, not on the current implementation: total must equal sum of line items minus discount; discount can never exceed subtotal; an empty cart must throw. Cover the boundary at exactly zero and at the discount cap.Begin met de falende situatie
Tests die alleen het gewenste pad bevestigen, geven een vals gevoel van zekerheid. Vraag eerst om de situaties die waarschijnlijk het snelst stukgaan: null-waarden, lege waarden, limieten en ongeldige invoer.
Een testsuite die foutscenario's doorloopt, ontdekt echte regressies. Het saaie succesgeval verrast zelden iemand.
Door de randgevallen voorop te zetten, zet je ook de fouten voorop.
Generate tests that focus on failure and boundary conditions for this parser: empty string, whitespace only, max length plus one, invalid unicode, and deeply nested input. For each, assert the exact error type and message the code should produce.Pas op voor tests die fouten vastleggen
Als je een model vraagt om tests tegen bestaande code te schrijven, kan het huidige foutieve gedrag als correct worden vastgelegd. De testsuite wordt groen terwijl de fout blijft bestaan.
Dit is de grootste valkuil bij het genereren van AI-tests. De test documenteert het defect in plaats van het te ontdekken.
Controleer altijd of elke bewering weerspiegelt wat je wilt, en niet alleen wat de code nu doet.
For each test you generated, tell me explicitly whether the expected value is derived from my stated requirements or from observing the current code's output. Flag any assertion that simply mirrors existing behavior so I can verify it is actually correct.De structuur Arrange-Act-Assert
Leesbare tests volgen een duidelijke vorm: bereid de toestand voor, voer één actie uit en controleer één uitkomst. Modellen vervallen in megatests met meerdere beweringen die moeilijk te debuggen zijn wanneer ze falen.
Vraag om gerichte tests met beschrijvende namen die als specificaties lezen.
Een falende test moet alleen al aan zijn naam precies vertellen welk gedrag is gebroken.
Refactor these tests so each one follows arrange-act-assert, tests a single behavior, and has a descriptive name that reads like a sentence describing the expected outcome. Split any test that contains unrelated assertions.De juiste grenzen mocken
AI mockt vaak te veel en haalt juist de logica die wordt getest eruit, totdat de test niets echts meer controleert. Of het mockt te weinig en maakt verbinding met een actieve database.
Mock op de systeemgrens: netwerk, klok, bestandssysteem en betaalprovider. Houd je eigen bedrijfslogica echt.
Geef de grens expliciet aan, zodat het model niet hoeft te gokken.
Write these tests so that only external boundaries are mocked: the HTTP client, the system clock, and the payment provider. Do NOT mock our own pricing or validation logic; that logic must run for real so the test exercises it.Denken in eigenschappen
Voorbeeldtests controleren specifieke invoer; eigenschapstests controleren invarianten voor veel gegenereerde invoer. "Een lijst twee keer omkeren levert de oorspronkelijke lijst op" geldt voor elke lijst.
Als je het model om eigenschapstests vraagt, komen fouten aan het licht die handmatig gekozen voorbeelden missen, omdat het framework naar tegenvoorbeelden zoekt.
Gebruik ze waar invarianten duidelijk zijn: encoders, sorteerders, serializers en wiskunde.
Write property-based tests for the serializer using a generative testing library. Assert the round-trip invariant that decode(encode(x)) equals x for any valid input, and let the framework search for the smallest failing case.Dekking zonder toneelspel
Het dekkingspercentage is een kaart, niet het gebied zelf. Je kunt elke regel uitvoeren zonder iets betekenisvols te controleren. Modellen vullen testsuites graag op om een getal te halen.
Gebruik dekking om ongeteste vertakkingen te vinden en beoordeel daarna elke vertakking handmatig: is het de moeite waard om dit pad vast te leggen?
Richt je op tests die falen als het gedrag verkeerd is, niet op tests die de code alleen maar uitvoeren.
Run coverage and list the uncovered branches in this module. For each one, tell me whether it represents a meaningful behavior worth testing or trivial code I can ignore, and propose a focused test only for the meaningful ones.Mutatie: je tests testen
Een groene testsuite die elke codewijziging overleeft, is waardeloos. Mutatietests brengen kleine fouten aan en controleren of je tests die opmerken.
Als een mutant overleeft, leggen je tests dat gedrag niet echt vast. Het model kan mutaties voorstellen en jij controleert of je tests ze allemaal laten falen.
Zo meet je de kwaliteit van tests en niet alleen de hoeveelheid.
Propose five small mutations to this function, such as flipping a comparison or removing a guard, that would represent real bugs. For each mutation, tell me whether the current test suite would catch it, and write a new test for any mutation that survives.Maak tests deterministisch
Onbetrouwbare tests ondermijnen het vertrouwen, totdat mensen fouten volledig negeren. De gebruikelijke boosdoeners zijn echte tijd, willekeurige zaden, netwerkoproepen en de volgorde van tests.
Vraag om deterministische tests: injecteer de klok, leg het zaad vast en isoleer de toestand tussen uitvoeringen. Een testsuite die je niet kunt vertrouwen, is erger dan geen testsuite.
Betrouwbaarheid is een eigenschap van de tests zelf.
Make this test suite fully deterministic: inject a fixed clock instead of reading current time, seed all randomness, remove any reliance on test execution order, and ensure each test resets shared state in setup and teardown.Tests als levende specificatie
Een goede testsuite doet ook dienst als documentatie. Nieuwe bijdragers, mens of AI, leren de regels van het systeem door de beweringen te lezen.
Houd testnamen en structuur duidelijk genoeg, zodat de testsuite het bedoelde gedrag zelfstandig uitlegt. Het model leest ze ook en schrijft daardoor betere code.
Je tests worden het duurzame geheugen dat het model mist.
Korte controle
Test je begrip van promptgestuurde testgeneratie.
Samenvatting
Schrijf prompts voor tests op basis van gedrag en vereisten, niet op basis van de implementatie, zodat ze fouten ontdekken in plaats van vastleggen. Behandel fout- en grensgevallen als eerste, mock alleen op grenzen en gebruik eigenschaps- en mutatietests om de werkelijke sterkte te meten.
Houd de testsuite deterministisch en leesbaar, zodat die als levende specificatie dient. Vervolgens ga je op zoek naar beveiligingslekken die het model heeft achtergelaten.
Leer JavaScript met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 25
- Lessen
- 100
Veelgestelde vragen
Is de les “Tests genereren met een prompt” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Vibe-coding, waaronder “Tests genereren met een prompt”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Vibe-coding bevat in totaal 4 lessen.
Wat leer ik in “Tests genereren met een prompt”?
Laat AI betekenisvolle tests schrijven. Je oefent met Vibe-coding door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Vibe-coding te beginnen?
Ervaring vooraf is niet nodig. Vibe-coding op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Tests genereren met een prompt”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Vibe-coding?
Ja. Elke les over Vibe-coding bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Waarom AI-code controle nodig heeft
- Tests genereren met een prompt
- Beveiligingslekken opsporen
- Klaarmaken voor productie