Læringsløp 02Leksjon 3 / 6

Bruk tester som dokumentasjon

Velg kontroller som kan avvise feil atferd. Gjennomgå genererte tester like grundig som generert implementering.

Praktisk11 minGjennomgått

Publisert av Slik skriver vi

Dette lærer du

  • Knytt hvert viktig krav til en meningsfull kontroll.
  • Skill dokumentasjon fra enhets-, integrasjons- og ende-til-ende-tester.
  • Oppdag en test som gjentar samme feil antakelse som implementeringen.

Start med kravet

Tester er dokumentasjon for konkrete påstander. En vellykket testkjøring dokumenterer ikke alle programvarens egenskaper. Identifiser atferden som betyr noe, og feilen hver kontroll bør oppdage, før du ber om tester.

For en fiktiv organisasjonseksport er hovedkravet dataisolasjon. En bruker i organisasjon A må ikke motta poster fra organisasjon B. En test som bare kontrollerer en vellykket nedlasting, dokumenterer ikke dette kravet.

Be agenten forklare forholdet mellom kravet og testpåstanden. Det gjør manglende tilfeller lettere å oppdage før testsamlingen blir stor.

Velg riktig testomfang

En enhetstest kan kontrollere en liten transformasjon raskt. En integrasjonstest kan kontrollere hvordan komponenter fungerer sammen. En ende-til-ende-test kan kontrollere en viktig brukerhandling gjennom den utrullede eller en representativ applikasjon.

Bruk det smaleste omfanget som gir nødvendig dokumentasjon. Et formateringsverktøy trenger ikke en full nettlesertest for alle inndata. En autorisasjonsgrense kan kreve en reell route og datatilgangsvei. En kritisk nettleserinteraksjon trenger dokumentasjon om det rendrerte grensesnittet.

PåstandEksempel på dokumentasjon
CSV-utdata escaper et anførselstegn korrektEnhetstest med anførselstegn i et felt
En annen organisasjon kan ikke lese eksportenIntegrasjonstest gjennom reell autorisasjon
En tastaturbruker kan starte eksportenNettlesertest og manuell tastaturgjennomgang
En mislykket eksport gir en nyttig feilKontroll av feilforløp ved relevant grensesnitt

Ingen fast prosentfordeling av testtyper passer alle systemer. Velg ut fra feilen du må oppdage, og kostnaden ved å vedlikeholde kontrollen.

Unngå en felles feil antakelse

En agent kan skrive implementering og tester ut fra samme misforståelse. Begge kan være enige uten at kravet er oppfylt.

Anta at implementeringen filtrerer poster etter organisasjons-ID-en i forespørselen. Testen bruker samme ID for den innloggede brukeren og forespørselen. Den består. Det manglende tilfellet er en bruker som ber om en annen organisasjons ID.

Legg til dette tilfellet gjennom den faktiske betrodde identitets- og autorisasjonsveien. En mock som alltid returnerer «tillatt», kan ikke dokumentere tenantisolasjon. Den dokumenterer bare atferd etter vellykket autorisasjon.

Verifiser at testen kan feile

Kjør den nye regresjonstesten mot versjonen med en kjent feil i en isolert branch. Bekreft at den feiler av tilsiktet årsak. Bruk deretter rettelsen, og kjør testen igjen.

En test som feiler fordi testdata ikke kan lastes inn, er ennå ikke dokumentasjon om forretningsatferden. Undersøk feilen, ikke bare exitkoden.

For bredere endringer kan mutasjonstesting bidra til å vurdere om utvalgte kodeendringer fører til testfeil. Det har en kostnad og erstatter ikke kravgjennomgang. Bruk det der tilleggsdokumentasjonen støtter en vesentlig beslutning.

Hold dokumentasjonen knyttet til endringen

Kjør relevante kontroller på den endelige revisjonen. Registrer kontroller som ble hoppet over, og begrunnelsene. Et resultat fra et tidligere commit gjelder kanskje ikke etter en reviewrettelse.

Hold testene forståelige. Foretrekk tydelig oppsett og testpåstand fremfor en stor hjelpefunksjon som skjuler den viktige betingelsen. Fjern overflødige kontroller når de øker vedlikeholdskostnaden uten å oppdage en annen feil.

Revieweren bør kunne si hva testene dokumenterer, og hva som fortsatt er usikkert. Forklaringen er mer nyttig enn et stort antall tester.

Gjør øvelsen

Velg én generert test. Angi kravet den kontrollerer. Innfør midlertidig den relevante feilen i en isolert branch. Bekreft at testen feiler av tilsiktet årsak, og gjenopprett deretter koden. Registrer hva testen fortsatt ikke dekker.

Last ned arbeidsark (Markdown)

Kontroller forståelsen din

En generert test erstatter autorisasjonsfunksjonen med en mock som alltid gir tilgang. Hva dokumenterer en bestått test?

Kilder og videre lesning

Relatert lesning fra Taiga