# Byggde en skiktad automatiserad testsvit — 981 Go‑tester, 543 specifikationer för frontend och webbläsare, 494 beteendetester i SQL — med mutationstestning, egenskapsbaserade tester och en tillgänglighetsgrind.

2025

**Situation.** En plattform som har sin affärslogik i databasen har ett testproblem som de flesta projekt slipper. Logiken finns inte i det språk som testramverket är bra på — den finns i SQL, bakom funktionsgränser, och SQL är precis den sortens kod som förblir otestad eftersom den är besvärlig att testa. Lägg till ett Go‑API och en Next.js‑frontend ovanpå det, så blir ”de viktiga delarna är täckta” i tysthet till ”de delar som var lätta att täcka är täckta”.

**Uppgift.** Varje lager behövde få sitt beteende verifierat där beteendet faktiskt finns, i stället för att allt verifierades utifrån genom en webbläsare.

**Handling.** Fyra lager fick fyra sorters tester. Go‑API:t har 981 testfunktioner fördelade på 310 filer. Frontenden har 543 testspecifikationer i Vitest och Playwright, däribland 48 end‑to‑end‑filer och 30 webbläsarspecifikationer. Databasen har 494 beteendetestfiler — 116 876 rader SQL som verifierar genom 6 654 kastade undantag — så att en lagrad funktion testas i databasen i stället för genom tre lager applikation ovanför. Ovanpå dem ligger testerna som testar testerna: mutationstestning med Stryker förstör medvetet en rad och fallerar när ingenting märker det, och fast‑check genererar indata som ingen tänkte på att skriva ned. En axe‑core‑grind kräver noll överträdelser av WCAG 2.0 och 2.1 på nivå A och AA, vilket gör tillgänglighet till ett byggfel i stället för ett granskningsfynd månader senare. Tröskelvärdena för testtäckning flyttas bara uppåt. Hela sviten körs som 10 jobb i ett arbetsflöde på 612 rader.

**Resultat.** Att ändra något strukturellt slutade vara skrämmande, och det är det enda som hindrar en kodbas av den här storleken från att förkalkas. Den ärliga kostnaden är tid — sviten är långsam, den belastar varje ändring, och i den här storleken behöver den eget underhåll. Det man får för den är förmågan att fortsätta i högt tempo, och det är värt mer än de minuter den tar.

---

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

<https://software.engineer.company/sv/portfolio/built-a-layered-automated-test-suite-across-four-layers-94/>
