Jak odtworzyć buga, który zawodzi tylko raz w tygodniu
Bugi intermittentne nie są naprawdę losowe. Mają wyzwalacze — po prostu jeszcze ich nie znalazłeś. Oto systematyczny proces.
Intermittentny nie znaczy losowy
Pierwsza zmiana mentalna to zaakceptowanie, że nie są losowe. Bug uruchamia się za każdym razem, gdy konkretna kombinacja warunków się ułoży.
Krok 1: Uchwyć pełny stan przy awarii
Następnym razem, gdy bug się uruchomi, uchwyć każdy istotny element stanu.
Krok 2: Wylicz hipotezy przed testowaniem
Wylistuj każdą prawdopodobną przyczynę. Race condition. Stary cache. Specyficzny kształt wejścia. Presja pamięci.
Krok 3: Zaprojektuj falsyfikowalny test dla każdej
Każda hipoteza potrzebuje testu, który dowiódłby jej fałszywości.
Krok 4: Skompresuj czas między próbami
Zbuduj uprząż, która wyzwala podejrzane obciążenie tak szybko, jak to możliwe.
Krok 5: Zweryfikuj, że reprodukcja jest przyczynowa
Jeśli usunięcie X zatrzymuje buga, a przywrócenie go sprowadza go z powrotem, X jest przyczynowe.
Gdzie pasuje pomoc AI w debugowaniu
Wyliczenie hipotez jest najbardziej podatne na zakotwiczenie. Przepuszczenie objawów przez Reloadium Edge Case Debugger wyłania kategorie hipotez, których zespół by nie rozważył.