Spring til indhold

Har givet generatoren 981 tests og 92 % dækning

Har holdt generatoren på 981 testtilfælde og en nedre grænse på 92 % grendækning med advarsler behandlet som fejl og eftervist idempotens ved at køre hele build‑pipelinen to gange fra en tom fil og kræve, at det andet gennemløb intet ændrer.

  • Railing, handrail, delimitation
    Foto: distelAPPArath / Pixabay
  • Bicycle, parked, guard rails
    Foto: SpencerWing / Pixabay

981 testtilfælde og mindst 92 % grendækning

Situation. En generator, der samler en database fra bunden, har en særlig slags fejl: den virker første gang og korrumperer anden gang. Trin, der indsætter uden at tjekke, trin, der afhænger af rækkefølgen i et tidligere trins output, trin, der er sikre hver for sig, men ikke sammen. Intet af det viser sig i en test, der starter fra ingenting og kører én gang.

Opgave. Det skulle bevises, at buildet kunne gentages og ikke blot virkede, og testsuiten skulle være stor nok og streng nok til, at en regression ikke kunne slippe ubemærket igennem den.

Handling. Idempotenstesten er den stumpe og den mest nyttige: byg hele databasen fra en tom fil, tag et øjebliksbillede, kør hele pipelinen i nitten trin igen over resultatet, og kræv, at andet gennemløb ikke ændrer noget. Rækketal, indhold og identifikatorer skal alle stemme. Omkring den ligger 383 testfunktioner — 981 tilfælde, når de parametriserede er foldet ud — fordelt på femogfyrre filer og 7.944 linjer, der dækker pipelinen, gengiverne, indholdsindlæserne, målretningslogikken og tjekkerne. Grendækningen har et gulv på tooghalvfems procent, der håndhæves i buildet og ikke blot rapporteres i et sammendrag, og suiten måler i øjeblikket omkring 95 %, så gulvet har luft uden at være dekorativt. Advarsler er konfigureret som fejl, hvilket er den indstilling, der betyder mest i praksis — en udfasningsmeddelelse, der udskrives i to år, er en udfasningsmeddelelse, ingen læser, og den kørsel, der forvandler den til en rød test, er den kørsel, der får den rettet.

Resultat. Pipelinen kan køres igen mod en database i drift uden frygt, hvilket er det, der overhovedet gør trinvist indholdsarbejde muligt. Gulvet er et gulv, ikke et mål, og det er værd at sige, at tooghalvfems procent grendækning stadig efterlader grene, som intet nogensinde har gennemløbet — tallet afgrænser risikoen, det fjerner den ikke, og to af de defekter, der senere blev fundet i projektet, lå i kode, som dækningsrapporten viste som dækket.

Ét stykke af en længere fortegnelse — og det hele ligger her på sitet.

Hver post er skrevet på samme måde: situationen, opgaven, hvad vi gjorde, og hvad der ændrede sig.

Se hele fortegnelsen