Testcase versus testscenario: Belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken
Een scenario vertelt wat er getest moet worden. Een casus vertelt precies hoe. Volg één functie voor het opnieuw instellen van wachtwoorden, van vereiste tot scenario’s tot volledige testcases, en ontdek hoeveel details uw team werkelijk nodig heeft.
- Een testscenario is een verklaring van één regel waarin wat moet worden geverifieerd.
- Een testcase geeft de stappen, gegevens en het verwachte resultaat en laat zien hoe je dit kunt verifiëren.
- Eén scenario levert doorgaans meerdere testgevallen op.
- Stem de details af op het risico: lichte scenario’s voor snelle teams, volledige cases voor kritisch of gereguleerd werk.
Nieuwe testers horen deze twee termen vaak gebruiken alsof ze hetzelfde betekenen. Dat doen ze niet. Het verschil tussen een testcase en een testscenario heeft vooral te maken met de mate van detail. Als u dit begrijpt, kunt u beslissen hoeveel u moet schrijven voordat u begint met testen.
Deze handleiding legt ze allemaal uit en werkt vervolgens via één enkele functie voor het opnieuw instellen van wachtwoorden, van vereisten tot scenario’s tot volledige testcases. De functie en de bijbehorende regels zijn een verzonnen voorbeeld. De terminologie varieert ook enigszins tussen teams en tools, dus spreek af wat deze woorden betekenen in je eigen team.
Het korte antwoord
Een testscenario beschrijft een situatie die moet worden gecontroleerd, zoals ‘controleren of een gebruiker een vergeten wachtwoord opnieuw kan instellen’. Het is meestal één regel en laat de details over aan de tester.
In een testcase wordt precies beschreven hoe je één voorwaarde binnen die situatie kunt controleren: randvoorwaarden, stappen, testgegevens en het verwachte resultaat. Twee testers die het volgen, zouden tot hetzelfde oordeel moeten komen.
Denk aan het plannen van een reis. Het scenario is “reizen van Pune naar Delhi”. De testcase is het volledige reisschema, met het vluchtnummer, de vertrektijd en wat u in elke etappe moet doen.
Testcase versus testscenario naast elkaar
| Aspect | Testscenario | Testgeval |
|---|---|---|
| Vraag beantwoord | Wat moeten we testen? | Hoe testen we het precies? |
| Details | Hoog niveau | Laag niveau en specifiek |
| Typische lengte | Eén regel | Verschillende velden en trappen |
| Afgeleid van | Vereisten, gebruikersverhalen | Testscenario’s |
| Inclusief testgegevens? | Zelden | Ja |
| Inclusief verwacht resultaat? | Impliciet | Ja, expliciet |
| Tijd om te schrijven | Minuten | Veel langer |
| Onderhoud | Laag | Hoger, omdat details veranderen |
| De vrijheid van de tester | Hoog | Laag |
| Beste voor | Dekkingsoverzicht, snelle teams | Kritieke stromen, audits, overdrachten |
Wat is een testscenario?
Een testscenario is een korte beschrijving van iets dat een gebruiker zou kunnen doen, of van een situatie die het systeem moet afhandelen. Het richt zich op wat er van buitenaf toe doet, en komt meestal rechtstreeks voort uit een vereiste of gebruikersverhaal.
Scenario’s zijn waardevol omdat ze snel zijn. Je kunt er dertig opsommen in de tijd die nodig is om drie gedetailleerde cases te schrijven, wat ze een geweldige manier maakt om de berichtgeving met een producteigenaar te bespreken: “Hebben we aan alles gedacht?” Een niet-technische lezer kan zonder problemen een lijst met scenario’s volgen.
Wat is een testcase?
Een testcase is een reeks specifieke voorwaarden en stappen die worden gebruikt om te bepalen of iets werkt. Een typische testcase bevat:
- Een unieke ID en duidelijke titel
- Voorwaarden, dat wil zeggen wat waar moet zijn voordat je begint
- Genummerde stappen
- Specifieke testgegevens
- Een verwacht resultaat
- Het werkelijke resultaat en status, ingevuld tijdens de uitvoering
Testgevallen schitteren wanneer consistentie ertoe doet. Een nieuw teamlid kan ze uitvoeren, de resultaten kunnen tussen releases worden vergeleken en u heeft een overzicht van wat er is geverifieerd. In onze gids gaan we dieper in op het schrijven van testcases.
Eén functie, van begin tot eind
Stap 1: De vereiste
Gebruikers die hun wachtwoord vergeten, kunnen per e-mail een resetlink aanvragen. De link werkt eenmalig en vervalt na 30 minuten. Een nieuw wachtwoord moet minimaal 8 tekens lang zijn.
Stap 2: De testscenario’s
| Identiteitskaart | Testscenario |
|---|---|
| TS-01 | Controleer of een geregistreerde gebruiker een wachtwoord kan resetten via de per e-mail verzonden link |
| TS-02 | Controleer het gedrag wanneer de e-mail niet is geregistreerd |
| TS-03 | Controleer of een verlopen link niet kan worden gebruikt |
| TS-04 | Controleer of een link niet tweemaal kan worden gebruikt |
| TS-05 | Controleer of de nieuwe wachtwoordregels worden afgedwongen |
Kijk naar TS-02. De vereiste zegt nooit wat er moet gebeuren met een onbekende e-mail, en het schrijven van het scenario heeft die leemte blootgelegd. Moet uit de pagina blijken dat het adres niet geregistreerd is? Uit veiligheidsoverwegingen zou dit meestal niet moeten gebeuren, omdat aanvallers hierdoor geldige accounts kunnen ontdekken. Het vroegtijdig vinden van deze vragen is een van de grootste voordelen van het schrijven van scenario’s.
Stap 3: De testgevallen
Nu breiden we alleen TS-05 uit naar testgevallen. Eén scenario wordt meerdere:
| Identiteitskaart | Titel | Testgegevens | Verwacht resultaat |
|---|---|---|---|
| TC-051 | Accepteert een wachtwoord van precies 8 tekens | abcd1234 |
Het wachtwoord verandert en er verschijnt een bevestiging |
| TC-052 | Weigert een wachtwoord van 7 tekens | abcd123 |
Fout: minimaal 8 tekens nodig |
| TC-053 | Weigert een leeg wachtwoord | (blank) | Fout: wachtwoord vereist |
| TC-054 | Weigert niet-overeenkomende bevestiging | abcd1234, abcd9999 |
Fout: wachtwoorden komen niet overeen |
Deze waarden waren niet willekeurig. TC-051 en TC-052 bevinden zich aan weerszijden van de limiet en maken gebruik van grenswaardeanalyse, en de andere komen voort uit equivalentiepartitionering.
Een testcase-sjabloon
Hier is TC-052 volledig uitgeschreven. Kopieer deze indeling als jouw team nog geen standaard heeft:
ID: TC-052
Title: Reset rejects a password of 7 characters
Scenario: TS-05 New password rules are enforced
Priority: High
Preconditions: Account asha@example.com exists
A valid, unused reset link has been requested
Test data: New password: abcd123
Steps:
1. Open the reset link from the email
2. Enter abcd123 in New password
3. Enter abcd123 in Confirm password
4. Click Reset password
Expected: Error "Password must be at least 8 characters"
Password is unchanged, and the link stays valid
Actual: (filled in during the run)
Status: (Pass / Fail / Blocked)
Merk op dat het verwachte resultaat meer controleert dan het foutbericht. Het bevestigt ook dat het oude wachtwoord nog steeds werkt en dat de link bruikbaar blijft. Zwakke testgevallen stoppen vaak bij wat op het scherm zichtbaar is.
Tip: Test één voorwaarde in elke testcase. Als een zaak die vijf dingen omvat mislukt, weet je niet welke kapot is gegaan. Korte, gerichte cases zijn later ook veel gemakkelijker te automatiseren.
Waar ze passen in het grotere geheel
| Niveau | Antwoorden | Voorbeeld |
|---|---|---|
| Strategie testen | Wat is onze algemene aanpak? | Automatiseer regressie, ontdek nieuwe functies |
| Testplan | Wat gaan we doen voor deze release? | Accountfuncties, getest van 3 tot 7 maart |
| Testscenario | Wat gaan we controleren? | Wachtwoordregels worden afgedwongen |
| Testgeval | Hoe gaan we het controleren? | TC-052 en zijn stappen |
| Testscript | Hoe controleert een machine dit? | Geautomatiseerde code voor TC-052 |
Traditioneel worden scenario’s en cases geschreven tijdens de testontwerpfase van de levenscyclus van softwaretests.
Wanneer moet u ze allemaal gebruiken?
Scenario’s zijn vaak voldoende wanneer:
- Het team is klein, ervaren en kent het product goed.
- De tijd is kort, of de eisen veranderen regelmatig.
- De functie heeft een laag risico.
- U wilt de dekking snel met belanghebbenden beoordelen.
- Je begeleidt verkennende tests.
Gedetailleerde testgevallen zijn de moeite waard wanneer:
- Een mislukking zou kostbaar zijn, net als bij betalingen, beveiligings- of gezondheidsgegevens.
- Regelgevers of auditors hebben bewijs nodig van wat er is getest.
- Nieuwe of uitbestede testers moeten de tests uitvoeren.
- Resultaten moeten exact worden herhaald, zoals in een regressiesuite.
- De stappen worden geautomatiseerde tests.
De meeste volwassen teams gebruiken beide. Ze vermelden voor alles scenario’s en schrijven alleen volledige cases voor de hoogste risico’s. Het is niet nodig om elke stap van een instellingenpagina met een laag risico op dezelfde manier te documenteren als bij een bankoverboeking.
Scenario’s, cases en automatisering
Een goed geschreven testcase komt vrijwel direct overeen met een geautomatiseerde test. Randvoorwaarden worden instellingen, stappen worden acties en het verwachte resultaat wordt een bewering. Gedragsgestuurde ontwikkelingsframeworks gebruiken zelfs het woord ‘Scenario’ voor hun uitvoerbare specificaties:
Scenario: Reset rejects a short password
Given I have opened a valid reset link
When I submit the new password "abcd123"
Then I see "Password must be at least 8 characters"
And my password is unchanged
Het is verwarrend dat wat BDD een scenario noemt, veel dichter bij een testcase ligt, omdat het over specifieke gegevens en uitkomsten beschikt. Dat is een goede herinnering om het eens te worden over de voorwaarden. Als je deze controles wilt automatiseren, bekijk dan onze Tutorial voor toneelschrijvers of pytest-tutorial.
Wat maakt ze goed
| Een goed scenario | Een goede testcase |
|---|---|
| Beschrijft een gebruikersdoel of -situatie | Test één specifieke voorwaarde |
| Terugkoppeling naar een vereiste | Heeft een nauwkeurig verwacht resultaat |
| Bestrijkt zowel mislukkingen als successen | Geeft een overzicht van de randvoorwaarden en gegevens |
| Bevat geen onnodige details | Kan worden gerund door een nieuw iemand |
| Past in één lijn | Is niet afhankelijk van andere tests |
Veel voorkomende fouten
- Alleen gelukkige paden schrijven. De meeste bugs bevinden zich in de foutcondities, dus vermeld ook wat zou moeten mislukken.
- Gebruik vage verwachte resultaten. ‘Het zou goed moeten werken’ laat elke tester alles beslissen.
- Alles volledig documenteren. Duizenden zaken die niemand onderhoudt, zijn erger dan een nuttig klein stel.
- Scenario’s overslaan. Als je meteen op zaken ingaat, kun je hele gebieden vergeten.
- Koffers laten verouderen. Als het product verandert, misleiden oude koffers mensen. Bekijk ze regelmatig.
- Stappen koppelen aan fragiele details. ‘Klik op de blauwe knop bovenaan’ breekt met elk herontwerp.
Tot slot
Scenario’s geven je breedte, en testcases geven je diepgang. Begin met scenario’s voor uw volgende functie en bespreek deze met een ontwikkelaar en een producteigenaar. Breid vervolgens alleen de risicovolle gevallen uit naar volledige gevallen. U zult eerder hiaten ontdekken en uw schrijftijd besteden daar waar het telt.
Veelgestelde vragen
Wat is het belangrijkste verschil tussen een testcase en een testscenario?
Een testscenario is een verklaring op hoog niveau van wat er moet worden getest. Een testcase geeft de specifieke stappen, gegevens en het verwachte resultaat voor het testen ervan.
Wat komt eerst: testscenario of testcase?
Meestal het scenario. Scenario’s komen voort uit vereisten, en vervolgens worden testgevallen geschreven op basis van de scenario’s die meer details nodig hebben.
Hoeveel testgevallen heeft één scenario?
Er is geen vast aantal. Het hangt af van de regels en de risico’s die ermee gepaard gaan, en een typisch scenario kan er meerdere hebben, waaronder succes, mislukking en grenzen.
Hebben Agile-teams gedetailleerde testcases nodig?
Niet altijd. Velen vertrouwen op scenario’s, acceptatiecriteria en automatisering, en houden gedetailleerde cases alleen bij voor kritieke stromen of nalevingsbehoeften.
Is een testscript hetzelfde als een testcase?
Niet helemaal. Een testcase beschrijft wat er moet worden gecontroleerd, terwijl een testscript meestal code is die deze controles automatisch uitvoert, hoewel sommige teams de termen losjes gebruiken.
Blijf leren
Hulp nodig met testen, WordPress of SEO?
We helpen teams betere software te leveren en hun sites te laten groeien. Vertel ons waar u mee bezig bent en wij stellen een duidelijke volgende stap voor.
Meer handleidingen over testen, AI en moderne ontwikkeling
Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.
AI-hallucinaties uitgelegd: waarom taalmodellen dingen verzinnen en hoe ze te verminderen
AI-hallucinaties uitgelegd: wat ze zijn, waarom taalmodellen ze produceren, veelvoorkomende typen, hoe je ze kunt verminderen met aarding en aanwijz…
Lees artikel →DevOpsOmgevingsvariabelen uitgelegd: .env-bestanden, geheimen en configuratie goed gedaan
Omgevingsvariabelen uitgelegd met Python-voorbeelden die we hebben uitgevoerd: ze lezen en instellen, waarom elke waarde een string is, .env-bestand…
Lees artikel →SoftwareontwikkelingAPI-snelheidsbeperking uitgelegd: algoritmen, headers en afhandeling van 429-fouten
API-snelheidsbeperking uitgelegd met een simulatie die we hebben uitgevoerd: token-bucket, vast venster, schuifvenster, 429 reacties, headers van sn…
Lees artikel →TestautomatiseringSpotten in Python: unittest.mock, patch en de fouten die tests doen liegen
Spotten in Python met unittest.mock, getest: Mock en return_value, side_effect, patchen waar een naam wordt gebruikt, spec en autospec, spotdatums e…
Lees artikel →SoftwaretestenCodedekking uitgelegd: lijn versus filiaaldekking en wat 100% werkelijk betekent
Codedekking uitgelegd met een echte dekking.py-run: dekking van lijnen, vertakkingen en condities, een rapport lezen, waarom 100% dekking nog steeds…
Lees artikel →Databases & SQLDELETE versus TRUNCATE versus DROP in SQL: verschillen, terugdraaien en wanneer elk te gebruiken
DELETE versus TRUNCATE versus DROP uitgelegd met geteste SQL: wat elk verwijdert, terugdraaien, triggers, identiteitsreset, snelheid en hoe PostgreS…
Lees artikel →Databases & SQLSQL-weergaven uitgelegd: creëer, gebruik en vermijd de valkuilen, met voorbeelden
SQL-weergaven uitgelegd met query's die we hebben uitgevoerd: een weergave maken, live resultaten, kolommen verbergen, prestaties, bijwerkbare en ge…
Lees artikel →SoftwareontwikkelingTypeScript-interface versus type: echte verschillen, getest met de compiler
TypeScript-interface versus type, gecontroleerd met de echte compiler: wat beide kunnen doen, wat slechts één kan doen, samenvoegen van declaraties,…
Lees artikel →SoftwareontwikkelingPython *args en **kwargs uitgelegd: flexibele functies met duidelijke voorbeelden
Python *args en **kwargs uitgelegd met code die we hebben uitgevoerd: in- en uitpakken, parametervolgorde, argumenten die alleen trefwoorden en posi…
Lees artikel →SoftwareontwikkelingPython Lambda-functies: syntaxis, echt gebruik en wanneer u ze niet moet gebruiken
Python lambda-functies uitgelegd met code die we hebben uitgevoerd: syntaxis, sorteren met sleutel, kaart en filter, sluitingen, de laat-bindende va…
Lees artikel →Kunstmatige intelligentieWat zijn AI-agenten? Hoe ze werken, met een eenvoudige agentloop die u kunt uitvoeren
Wat zijn AI-agenten? Een duidelijke gids voor de agentenlus, tools, geheugen en vangrails, met een kleine Python-lus die we hebben uitgevoerd, echte…
Lees artikel →DevOpsMonitoring versus waarneembaarheid: het echte verschil, met logboeken, statistieken en sporen
Monitoring versus waarneembaarheid uitgelegd: bekende en onbekende fouten, logboeken, statistieken en sporen, een walkthrough voor afrekenincidenten…
Lees artikel →DevOpsDocker-volumes versus bindingsmounts: bewaar containergegevens op de juiste manier
Docker-volumes versus bind-mounts uitgelegd: waarom containergegevens verdwijnen, benoemde volumes, bind-mounts, tmpfs, Compose-voorbeelden, back-up…
Lees artikel →TestautomatiseringTDD versus BDD: belangrijkste verschillen, één functie die op beide manieren is gebouwd en wanneer deze moet worden gebruikt
TDD versus BDD uitgelegd met één kortingsfunctie die in beide richtingen is gebouwd: rood-groen-refactor met code die we hebben uitgevoerd, gegeven-…
Lees artikel →SoftwaretestenGebruikersacceptatietesten (UAT): proces, checklist en echte voorbeelden
Gebruikersacceptatietesten uitgelegd: wie voert het uit, hoe het verschilt van QA, een proces in zeven stappen, een UAT-testcase-sjabloon, een check…
Lees artikel →Databases & SQLSQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen
SQL NULL-waarden uitgelegd met query's die we hebben uitgevoerd: logica met drie waarden, IS NULL, COALESCE, NULLIF, hoe aggregaten, joins en sorter…
Lees artikel →Databases & SQLSQL CASE WHEN-instructie: syntaxis, echte voorbeelden en veelvoorkomende fouten
SQL CASE WHEN uitgelegd met vragen die we hebben uitgevoerd: eenvoudige en doorzochte formulieren, volgorde van de voorwaarden, draaipunten met SUM,…
Lees artikel →SoftwareontwikkelingWat is JWT? JSON-webtokens uitgelegd met een werkend voorbeeld
Wat is JWT? JSON Web Tokens uitgelegd: de drie delen, een token gebouwd en waarmee is geknoeid in de code die we hebben uitgevoerd, JWT versus sessi…
Lees artikel →SoftwareontwikkelingJavaScript-gebeurtenislus uitgelegd: call-stack, microtaken en timers met voorbeelden
De JavaScript-gebeurtenislus uitgelegd met code die we hebben uitgevoerd: call-stack, taak- en microtask-wachtrijen, waarom setTimeout 0 niet onmidd…
Lees artikel →SoftwareontwikkelingPython-generatoren en opbrengst uitgelegd: bespaar geheugen met echte voorbeelden
Python-generatoren en opbrengst uitgelegd met code die we hebben uitgevoerd: hoe ze pauzeren en hervatten, gemeten geheugenbesparingen, pijplijnen, …
Lees artikel →Kunstmatige intelligentieWat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd
Wat zijn insluitingen? Een gids in duidelijke taal over vectoren, cosinusovereenkomst en semantisch zoeken, met een klein voorbeeld dat we hebben ui…
Lees artikel →DevOpsImplementatie van blauwgroen versus kanarie: verschillen, afwegingen en hoe te kiezen
Blauw-groen versus kanarie-implementatie uitgelegd: hoe elk werkt, kosten, risico's en terugdraaien, stabiele gebruikersbucket die we hebben getest,…
Lees artikel →TestautomatiseringSchilferige tests: wat de oorzaak ervan is en hoe u ze voorgoed kunt oplossen
Zwakke tests uitgelegd met demo's die we hebben uitgevoerd: de belangrijkste oorzaken, hoe je er een kunt bevestigen en diagnosticeren, goede oploss…
Lees artikel →SoftwaretestenBelastingtesten versus stresstesten: verschillen, statistieken en k6-voorbeelden
Belastingtesten versus stresstesten uitgelegd: wat elk bewijst, piek- en soak-tests, de statistieken die er toe doen, waarom gemiddelden misleiden, …
Lees artikel →SoftwaretestenTestcase versus testscenario: belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken
Testcase versus testscenario uitgelegd: duidelijke definities, een tabel naast elkaar, één functie voor het opnieuw instellen van wachtwoorden, over…
Lees artikel →Databases & SQLOptimalisatie van SQL-query's: lees uitvoeringsplannen en repareer langzame query's, met timing
Optimalisatie van SQL-query's getest op een miljoen rijen: lees uitvoeringsplannen, voeg de juiste indexen toe, repareer niet-sargeerbare filters, g…
Lees artikel →Databases & SQLSQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties
SQL UNION versus UNION ALL uitgelegd met de query's die we hebben uitgevoerd: duplicaten, de regels volgen beide, een echte databug, gemeten prestat…
Lees artikel →SoftwareontwikkelingJavaScript Fetch API-tutorial: GET, POST, foutafhandeling en time-outs
Een JavaScript Fetch API-tutorial getest tegen een lokale server: GET en POST, waarom 404 niet gooit, een herbruikbare helper, queryreeksen, time-ou…
Lees artikel →SoftwareontwikkelingPython-bestandsverwerking: lezen, schrijven, CSV, JSON en pathlib met voorbeelden
Het verwerken van Python-bestanden uitgelegd met code die we hebben uitgevoerd: open modi, met het lezen van grote bestanden, CSV, JSON, pathlib, bi…
Lees artikel →SoftwareontwikkelingGit merge vs rebase: verschillen, voorbeelden en wanneer je wat gebruikt
Git merge vs rebase uitgelegd met echte logoutput, een vergelijkingstabel, de gouden regel van rebase en een veilige teamwerkwijze.
Lees artikel →SoftwareontwikkelingPython list comprehension: syntaxis, voorbeelden en wanneer je het vermijdt
Python list comprehension uitgelegd: syntaxis, filteren, if-else, geneste lussen, gemeten tijden en wanneer een gewone for-lus beter is.
Lees artikel →Databases & SQLSQL JOIN uitgelegd met voorbeelden (Inner, Left, Right, Full)
Begrijp SQL joins stap voor stap met voorbeeldtabellen en queries: INNER, LEFT, RIGHT, FULL, CROSS en SELF, plus veelgemaakte fouten en prestatietips.
Lees artikel →