QA The Other WayKwaliteitsborging voor het tijdperk van door AI geschreven tests. QA The Other Way.
Praktische QA

Een tag selecteert tests. Hij bewijst geen dekking.

Behandel suitefilters als een expliciete selectieafspraak en benoem wat buiten de run blijft.

5 minuten leestijdQA The Other Way
Eigen selectiediagram met opgenomen en uitgesloten tests.
Eigen redactionele illustratie.
Illustratieve video bij dit artikel. Engelse tekst op het scherm; selecteer ondertitels voor deze taal.

Vertaalde editie. Technische identificatiegegevens blijven in hun oorspronkelijke vorm.

Behandel suitefilters als een expliciete selectieafspraak en benoem wat buiten de run blijft.
Lokaal testrunnervoorbeeld met verzonnen invoer, geen klant- of leveranciersinterface.

Een pipeline draait @critical en wordt groen. Iemand noemt dat volledige regressiedekking. De tag selecteerde een subset, zonder te bewijzen dat alle belangrijke trajecten erin zaten. Selectiemechanisme en risico-oordeel verschillen.

Deze gids volgt Playwrights annotatiedocumentatie met twee verzonnen lokale tests, voor een kleine review en bredere inspectie. Geen echte pipelineprestatie of dekkingspercentage. Lidmaatschap wordt zichtbaar vóór interpretatie.

Definieer de betekenis van de tag

Playwright ondersteunt tags in details of titel. Ze beginnen met @ en filteren tests. Een teamconventie heeft een korte betekenis, bijvoorbeeld een afgesproken set voor een bepaalde wijzigingsgrens.

Laat @critical niet telkens iets anders betekenen. Benoem regeleigenaar, opgenomen trajecten en bewuste uitsluitingen. Tekst toevoegen is makkelijk; lidmaatschap onderbouwen is het werk.

import { test, expect } from '@playwright/test';

test('demo title contract', { tag: '@demo-review' }, async () => {
  expect('Demo review').toBe('Demo review');
});

test('demo archive contract', { tag: '@demo-wide' }, async () => {
  expect(['draft', 'archive']).toContain('archive');
});

De voorbeelden tonen metadata en selectie, geen app of bruikbare productdekking. Bekijk de lijst vóór uitvoering:

npx playwright test demos/selection.spec.mjs --grep @demo-review --list

Lokaal wordt alleen het titelcontract geselecteerd. De run slaagt voor één verzonnen assertie. Het uitgesloten archiefcontract telt niet als uitgevoerd bewijs, ook al staat het in de bron.

Scheid selectie, overslaan en verwacht falen

skip en fixme draaien niet. fail draait met verwacht falen; onverwacht slagen wordt gemeld. Dat verschilt van afwezigheid door een filter.

Rapporteer geselecteerd, uitgevoerd, overgeslagen en verwacht falen apart. Maak er geen geruststellend totaal van. Stilte kan uitsluiting, uitschakeling of echt slagen betekenen.

Gerichte tests beperken ook de suite: als ze bestaan, draaien alleen die. Lokale debugfocus mag de gedeelde suite niet ongemerkt verkleinen. Beoordeel selectie met codewijzigingen.

Controleer de set bij wijzigingen

Verifieer lidmaatschap van nieuwe trajecten. Titel, tag of regex kan selectie veranderen zonder de testbody te wijzigen. Gebruik de runnerlijst met het precieze pipelinecommando.

Complexe filters hebben eigen checks nodig. Bestandsnaam of dashboardlabel bewijst geen selectie. Bewaar commando, relevante configuratie en namen bij het resultaat.

Houd het resultaat binnen zijn scope

Een kleine grens kan snelle feedback geven terwijl een brede suite apart draait. Dat is een plan, geen bewijs dat alles gevonden wordt. Productrisico bepaalt de verdeling; herzie haar bij nieuwe functies en foutpatronen.

AnyTest beschrijft agents die trajecten ontdekken en beoordeelbare tests maken. Beoordeel lidmaatschap én asserties. Geen AnyTest-taginterface wordt beloofd. Een eerlijk resultaat leent geen vertrouwen van niet-uitgevoerde tests.

Veelgestelde vragen

Bewijst een groene getagde subset volledige dekking?

Nee. Alleen geselecteerde uitgevoerde checks onder die configuratie worden onderbouwd.

Is een weggefilterde test hetzelfde als een overgeslagen test?

Nee. Selectie, skip/fixme en verwacht falen zijn verschillende toestanden.

Bronnen