𝗘𝘃𝗲𝗿𝘆 𝗧𝗲𝘀𝘁 𝗣𝗮𝘀𝘀𝗲𝗱. 𝗧𝗵𝗲 𝗨𝘀𝗲𝗿 𝗦𝘁𝗶𝗹𝗹 𝗖𝗼𝘂𝗹𝗱𝗻'𝘁 𝗣𝗹𝗮𝘆 𝘁𝗵𝗲 𝗚𝗮𝗺𝗲

"API zwraca 200 OK!"

Pracowałem w mojej pierwszej pracy inżynierskiej i dostrzegłem poważny problem. Moi przełożeni kochali dashboardy. Kochali wysokie pokrycie kodu testami. Myśleli, że jeśli testy są zielone, to produkt działa.

Mylili się.

Działający kod i zaspokojenie potrzeb człowieka to dwie różne rzeczy. Przycisk może zwrócić kod sukcesu, pozostawiając użytkownika zablokowanego na niedziałającym ekranie.

Stworzyłem sposób na wykrywanie takich ślepych zaułków UX bez uruchamiania aplikacji. Nazywam to statycznym spacerem dwuagentowym (two-agent static walkthrough). Wykorzystuje on dwa agenty AI rozmawiające w pętli.

  • Agent A to użytkownik. Ten agent ma konkretny cel. Jest uparty. Nie poddaje się po jednym błędzie. Próbuje różnych ścieżek.
  • Agent B to aplikacja. Ma on uprawnienia do odczytu rzeczywistego kodu źródłowego. Śledzi ścieżkę kodu dla każdej akcji użytkownika. Raportuje dokładnie to, co robi kod. Podaje nazwę pliku i numer linii. Nie potrafi wyobrazić sobie rzeczy, których nie ma w kodzie.

Przetestowałem to na wadliwym generatorze mini-gier AI. Oto co się stało:

Tura 1: Przycisk zawiódł. Użytkownik kliknął „Generuj”. Kod wysłał żądanie do starego, nieaktywnego endpointu zamiast do nowego. Testy przeszły, ponieważ stary API wciąż działał.

Tura 2: Nieklikalna pustka. Użytkownik próbował kliknąć wynik. Kod umieścił tekst w zwykłym polu bez obsługi zdarzenia kliknięcia (click handler). Nic się nie stało.

Tura 3: Fałszywe błogosławieństwo. Użytkownik próbował naprawić błąd. Backend zawiódł z powodu braku ID. Ekran wyświetlił zielony komunikat o sukcesie, mimo że system padł.

Tura 4: Przerwana nadzieja. Użytkownik próbował ręcznie skopiować kod. API ucięło tekst w połowie. Kod był uszkodzony.

Użytkownik zrezygnował.

Większość testów jednostkowych sprawdza tylko, czy endpoint zwraca 200. Nie sprawdzają one, czy użytkownik faktycznie osiąga swój cel.

Jak tego używać:

  • Spraw, aby agent użytkownika był uparty. Prawdziwe błędy kryją się za pierwszym błędem.
  • Osadź agenta aplikacji w rzeczywistym kodzie. To zamienia odgrywanie ról w prawdziwy raport o błędach.
  • Używaj tego jako uzupełnienia swoich testów. To pozwala znaleźć luki tam, gdzie Twoja logika styka się z rzeczywistością.

Ta metoda jest statyczna i tania. Działa, zanim jeszcze napiszesz choćby jedną strukturę testową (test fixture). Zmienia „kod działa” na „użytkownik odnosi sukces”.

Źródło: https://dev.to/terum/every-test-passed-the-user-still-couldnt-play-the-game-388o

Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi