# Holdt generatoren til 981 testtilfeller med et minstekrav på 92 % grendekning og advarsler behandlet som feil, og verifiserte idempotens ved å kjøre hele byggepipelinen to ganger fra en tom fil og kreve at den andre kjøringen ikke endret noe.

juli 2026

**Situasjon.** En generator som setter sammen en database fra bunnen av, har en bestemt type feil: den virker første gang og ødelegger andre gang. Trinn som setter inn uten å sjekke, trinn som er avhengige av rekkefølgen i et tidligere trinns utdata, trinn som er trygge hver for seg, men ikke sammen. Ingenting av dette viser seg i en test som starter fra ingenting og kjøres én gang.

**Oppgave.** Det måtte bevises at bygget er repeterbart og ikke bare fungerer, og testsuiten måtte være stor nok og streng nok til at en regresjon ikke kunne slippe gjennom i det stille.

**Handling.** Idempotenstesten er den mest håndfaste og den mest nyttige: bygg hele databasen fra en tom fil, ta et øyeblikksbilde, kjør hele pipelinen på nitten trinn på nytt over resultatet, og krev at den andre kjøringen ikke endrer noe. Radantall, innhold og identifikatorer må alle stemme. Rundt den ligger 383 testfunksjoner — 981 tilfeller når de parameteriserte er utvidet — fordelt på førtifem filer og 7 944 linjer, som dekker pipelinen, rendererne, innholdslasterne, målrettingslogikken og kontrollskriptene. Grendekningen har et gulv på nittito prosent som håndheves i bygget i stedet for å rapporteres i et sammendrag, og suiten måler i dag omtrent 95 %, så gulvet har klaring uten å være pynt. Advarsler er konfigurert som feil, og det er innstillingen som betyr mest i praksis — en avviklingsmelding som skrives ut i to år, er en avviklingsmelding ingen leser, og kjøringen som gjør den om til en rød test, er kjøringen som får den rettet.

**Resultat.** Pipelinen kan kjøres på nytt mot en database i drift uten frykt, og det er det som i det hele tatt gjør trinnvist innholdsarbeid mulig. Gulvet er et gulv, ikke et mål, og det er verdt å si at nittito prosent grendekning fortsatt etterlater grener som ingenting noen gang har tatt — tallet begrenser risikoen, det fjerner den ikke, og to av feilene som ble funnet senere i prosjektet, lå i kode som dekningsrapporten viste som dekket.

---

- Rolle: Python‑ingeniør
- Kategorier: [Databaser](https://software.engineer.company/nb/categories/databases/), [DevOps](https://software.engineer.company/nb/categories/devops/), [Automatisering og CI/CD](https://software.engineer.company/nb/categories/automation/), [Pålitelighet og sikkerhetskopier](https://software.engineer.company/nb/categories/reliability/), [Testing og kvalitetssikring](https://software.engineer.company/nb/categories/testing/), [Python](https://software.engineer.company/nb/categories/python/)
- Tjenester: [Backend- og API‑utvikling](https://software.engineer.company/nb/services/backend-development/), [DevOps og CI/CD‑automatisering](https://software.engineer.company/nb/services/devops-cicd/), [Teknisk ledelse og rådgivning](https://software.engineer.company/nb/services/technical-leadership/)

<https://software.engineer.company/nb/portfolio/held-the-generator-to-964-tests-and-a-coverage-floor-145/>
