# Skrev tester för själva kontrollerna efter att ha konstaterat att en kontroll som bara matas med felfri indata en dag rapporterar felfritt för att den inte läste något — lade in en avsiktlig felstavning för att bekräfta att stavningskontrollen hittar den och hämtade ett id‑intervall från databasen i stället för från ett tal i testet.

augusti 2026

**Situation.** Projektet kör en uppsättning egna kontrollprogram över sitt eget innehåll — en stavningskontroll, en kontroll av identifierarintervall, en kontroll av berättarrösten, en kontroll av sifferkonsistens. Vart och ett av dem hade varit grönt i månader. Ett kontrollprogram som bara någonsin har sett felfri indata och bara någonsin har rapporterat felfritt går inte att skilja från ett kontrollprogram som inte läser någonting alls, och det fanns inget test i sviten som kunde skilja de två åt.

**Uppgift.** Kontrollprogrammen måste fås att bevisa att de kan fallera, och fixturerna som de kontrollerar mot måste sluta vara handunderhållna kopior av det som de beskriver.

**Handling.** Mönstret som tillämpas genomgående är att plantera det fel som kontrollprogrammet finns till för att hitta och kräva att kontrollprogrammet hittar det. Stavningskontrollen matas med ett avsiktligt felstavat ord, och testet fallerar om körningen kommer tillbaka felfri. Kontrollen av berättarrösten matas med prosa i första person och måste avvisa den. Kontrollen av modeord matas med ett förbjudet ord. Vart och ett av dessa är ett litet test, och vart och ett täppte till en verklig blind fläck, eftersom två av kontrollprogrammen visade sig läsa en snävare uppsättning filer än deras dokumentation påstod och i tysthet hade hoppat över innehåll. Den andra ändringen gäller varifrån ett test får sina förväntningar: kontrollen av identifierarintervall jämförde tidigare mot ett tal som stod skrivet i testfilen, vilket innebar att varje tillägg av innehåll krävde att ett test redigerades, och den som uppdaterade talet utan att titta hade satt kontrollen ur spel. Nu härleder den intervallet från databasen, så kontrollen beskriver data snarare än ett inaktuellt minne av dem.

**Resultat.** Varje kontrollprogram i projektet har nu ett test som bevisar att det fallerar på felaktig indata, och intervallkontrollerna läser från sanningskällan. Den obekväma delen är vad detta blottlade: en grön kontroll hade varit meningslös på minst två ställen under en okänd tid, och det finns inget sätt att i efterhand ta reda på vad som slank igenom.

---

- Roll: Test- och kvalitetsingenjör
- Kategorier: [Databaser](https://advisory.engineer.company/sv/categories/databases/), [Datastyrning](https://advisory.engineer.company/sv/categories/data-governance/), [Automatisering och CI/CD](https://advisory.engineer.company/sv/categories/automation/), [Test och kvalitetssäkring](https://advisory.engineer.company/sv/categories/testing/), [Python](https://advisory.engineer.company/sv/categories/python/)
- Tjänster: [Datastyrning och datakvalitet](https://advisory.engineer.company/sv/services/data-governance/), [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/wrote-tests-for-the-checkers-themselves-149/>
