# Tog testsviten från sex tester över en gräns på sextio sekunder till 135 godkända på 8,9 sekunder genom att profilera huvudtråden och ta bort de två anrop som den befann sig i vid 3 989 av 4 017 stickprov.

september 2026

**Situation.** Testsviten hade en tidsgräns på sextio sekunder och sex tester låg över den. En testsvit som tar över en minut slutar köras före varje ändring, och en svit som inte körs före varje ändring är en rapport om det förflutna. Instinkten i det läget är att höja gränsen, och det är genom att höja gränsen som en svit hamnar på tio minuter.

**Uppgift.** Tiden måste hittas i stället för att budgeteras, vilket innebar att profilera sviten i stället för att resonera om vilka tester som såg dyra ut.

**Handling.** Profilen togs på huvudtråden medan sviten kördes, och resultatet motsade gissningen. Huvudtråden befann sig inne i två anrop i 3 989 stickprov av 4 017 — så de långsamma testerna var inte de som gjorde mest arbete, och nästan varje test passerade genom samma två ställen. Det första var en fast väntan som skulle låta asynkront arbete hinna bli klart före kontrollerna — i praktiken en sleep, som betalades av varje test som rörde händelsevägen oavsett om arbetet redan var klart eller inte. Den ersattes med väntan på det faktiska villkoret med en tidsgräns, så att ett test som är klart på fem millisekunder tar fem millisekunder och bara ett test som verkligen har fastnat betalar hela väntan. Det andra var ett förberedelsesteg per test som byggde om en dyr fixtur varje gång, trots att fixturen bara lästes och kunde byggas en gång för hela sviten. Inget av dem låg i ett test som någon skulle ha pekat ut som långsamt; båda låg i den gemensamma vägen, vilket är skälet till att hela sviten var jämnt långsam i stället för att ett fåtal tester stack ut.

**Resultat.** Sviten gick från sex tester över sextio sekunder — 74 sekunders väggklockstid — till 135 tester som går igenom på 8,9, vilket placerar den inom det fönster där den körs vid varje sparning. Förbehållet är att den gemensamma, skrivskyddade fixturen nu är en kopplingspunkt — ett test som ändrar den ger ett fel i ett annat test, och svitens hastighet beror på en disciplin som kompilatorn inte upprätthåller.

---

- Roll: Test- och kvalitetsingenjör
- Kategorier: [DevOps](https://engineer.company/sv/categories/devops/), [Automatisering och CI/CD](https://engineer.company/sv/categories/automation/), [Prestandaoptimering](https://engineer.company/sv/categories/performance/), [Test och kvalitetssäkring](https://engineer.company/sv/categories/testing/)
- Tjänster: [DevOps och CI/CD‑automatisering](https://engineer.company/sv/services/devops-cicd/), [Tekniskt ledarskap och rådgivning](https://engineer.company/sv/services/technical-leadership/)

<https://engineer.company/sv/portfolio/took-the-test-suite-under-nine-seconds-158/>
