# Krävde 981 testfall och minst 92 % grentäckning av generatorn, med varningar behandlade som fel, och säkerställde idempotens genom att köra hela byggpipelinen två gånger från en tom fil och kräva att den andra körningen inte ändrade något.

juli 2026

**Situation.** En generator som bygger upp en databas från grunden har en särskild sorts bugg: den fungerar första gången och korrumperar andra gången. Steg som infogar utan att kontrollera, steg som är beroende av ordningen i ett tidigare stegs utdata, steg som är säkra var för sig men inte tillsammans. Inget av det syns i ett test som börjar från ingenting och körs en gång.

**Uppgift.** Bygget måste bevisas vara upprepningsbart snarare än bara fungerande, och testsviten måste vara tillräckligt stor och tillräckligt strikt för att en regression inte skulle kunna passera obemärkt.

**Handling.** Idempotenstestet är det trubbiga och det mest användbara: hela databasen byggs från en tom fil, en ögonblicksbild tas, hela pipelinen i nitton steg körs igen över resultatet, och den andra körningen får inte ändra någonting. Radantal, innehåll och identifierare måste alla stämma överens. Runt det finns 383 testfunktioner — 981 fall när de parametriserade har expanderats — fördelade på fyrtiofem filer och 7 944 rader, som täcker pipelinen, renderarna, innehållsinläsarna, logiken för målgruppsanpassning och kontrollprogrammen. Grentäckningen har ett golv på nittiotvå procent som upprätthålls i bygget snarare än rapporteras i en sammanfattning, och sviten ligger för närvarande på ungefär 95 procent, så golvet har marginal utan att vara dekorativt. Varningar är konfigurerade som fel, vilket är den inställning som betyder mest i praktiken — ett meddelande om utfasning som skrivs ut i två år är ett meddelande som ingen läser, och den körning som gör det till ett rött test är den körning som får det åtgärdat.

**Resultat.** Pipelinen kan köras om mot en databas i drift utan oro, vilket är det som över huvud taget gör inkrementellt innehållsarbete möjligt. Golvet är ett golv, inte ett mål, och det är värt att säga att nittiotvå procents grentäckning fortfarande lämnar grenar som ingenting någonsin har gått igenom — talet begränsar risken men tar inte bort den, och två av de fel som hittades senare i projektet låg i kod som täckningsrapporten visade som täckt.

---

- Roll: Python‑ingenjör
- Kategorier: [Databaser](https://advisory.engineer.company/sv/categories/databases/), [DevOps](https://advisory.engineer.company/sv/categories/devops/), [Automatisering och CI/CD](https://advisory.engineer.company/sv/categories/automation/), [Tillförlitlighet och säkerhetskopiering](https://advisory.engineer.company/sv/categories/reliability/), [Test och kvalitetssäkring](https://advisory.engineer.company/sv/categories/testing/), [Python](https://advisory.engineer.company/sv/categories/python/)
- Tjänster: [Backend- och API‑utveckling](https://advisory.engineer.company/sv/services/backend-development/), [DevOps och CI/CD‑automatisering](https://advisory.engineer.company/sv/services/devops-cicd/), [Tekniskt ledarskap och rådgivning](https://advisory.engineer.company/sv/services/technical-leadership/)

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