Automatyczne generowanie testów E2E na podstawie wymagań

Automatyczne generowanie testów E2E na podstawie wymagań
Automatyzacja testów rozwija się od lat, jednak projektowanie scenariuszy pozostaje procesem zaskakująco manualnym. Wciąż wiele godzin poświęcamy na analizę dokumentacji, identyfikowanie ścieżek użytkownika i żmudne przekładanie ich na konkretne kroki.

W ostatnim czasie popularność zyskuje podejście dążące do zautomatyzowania tego etapu. Modele językowe oraz techniki generatywnej sztucznej inteligencji potrafią analizować wymagania spisane językiem naturalnym, tworząc na ich podstawie scenariusze, a nawet gotowe skrypty testowe. Rozwiązania te wydają się szczególnie obiecujące w przypadku testów E2E, które są zazwyczaj najbardziej kosztowne i trudne w utrzymaniu. Z badań wynika, że AI potrafi generować wykonywalne skrypty E2E z wysoką skutecznością, wymagając przy tym jedynie minimalnych poprawek ręcznych.

Zanim jednak technologia ta na stałe wejdzie do warsztatu zespołów, warto przyjrzeć się mechanizmom jej działania. 

Kosztowna analiza manualna

To proces czysto analityczny. Tester musi wnikliwie zrozumieć wymagania, przewidzieć możliwe interakcje z systemem i precyzyjnie określić oczekiwane wyniki.

W większości firm praca przebiega według powtarzalnego schematu:

  1. Analiza wymagań funkcjonalnych.
  2. Opracowanie scenariuszy dla głównych ścieżek (tzw. happy paths) oraz sytuacji brzegowych. 
  3. Przekształcenie scenariuszy w testy manualne lub kod automatyczny.

manualny-cykl-projektowania-testow.png

Taki cykl wymaga nie tylko doświadczenia, ale i głębokiej wiedzy domenowej. Proces ten trzeba powtarzać przy każdej większej zmianie w aplikacji. Widać więc, że nawet w mocno zautomatyzowanych projektach samo planowanie testów pochłania znaczną część budżetu czasowego. 

Testy E2E

Testy E2E to specyficzny rodzaj weryfikacji systemowej. Sprawdzają one aplikację z perspektywy realnego użytkownika, angażując wiele komponentów jednocześnie. W przeciwieństwie do testów jednostkowych czy integracyjnych, E2E badają kompletny przepływ, od interfejsu użytkownika, przez logikę biznesową i integracje zewnętrzne, aż po infrastrukturę. 

Typowy scenariusz obejmuje:

  • uruchomienie aplikacji i logowanie, 
  • wykonanie operacji biznesowej (np. zakup produktu), 
  • weryfikację końcowego rezultatu. 

Choć pozwalają one ocenić spójność całego systemu, ich przygotowanie i późniejsza konserwacja należą do najbardziej pracochłonnych zadań w cyklu wytwórczym. 

Od wymagań do scenariuszy

Punktem wyjścia dla większości scenariuszy są wymagania spisane językiem naturalnym – w metodykach zwinnych najczęściej pod postacią user stories z kryteriami akceptacji. Dokumentacja ta zazwyczaj określa funkcjonalność, warunki wstępne oraz oczekiwane wyniki. Często stosuje się tu strukturę Given-When-Then, która porządkuje logikę zdarzeń. Głównym problemem jest to, że opisy te rzadko bywają kompletne. Tester niemal zawsze musi uzupełniać luki informacyjne, bazując na własnej wiedzy o systemie. 

Czego maszyna nie wyczyta z tekstu?

Język naturalny jest z natury niejednoznaczny. Ludzie świetnie radzą sobie z domysłami, skrótami myślowymi czy kontekstem sytuacyjnym. Dla algorytmów interpretacja takich niedopowiedzeń stanowi ogromne wyzwanie. Modele AI mogą generować scenariusze brzmiące logicznie, jednak mijające się z rzeczywistym działaniem aplikacji. Dlatego nowoczesne systemy generowania testów nie polegają wyłącznie na samym tekście wymagań i wspierają się dodatkowymi źródłami, takimi jak repozytoria kodu, dokumentacja techniczna czy analiza struktury DOM interfejsu użytkownika.

Jak radzono sobie przed erą AI?

Próby automatyzacji projektowania testów podejmowano na długo przed erą współczesnych modeli językowych. Wczesne rozwiązania opierały się na klasycznym przetwarzaniu języka naturalnego (NLP). Systemy te szukały w tekście konkretnych akcji i obiektów, by złożyć z nich proste scenariusze. Metody te sprawdzały się jednak tylko przy bardzo rygorystycznie sformatowanej dokumentacji. 

Przełom przyniósł rozwój dużych modeli językowych (LLM). Są one znacznie bardziej elastyczne, bo rozumieją subtelne zależności w tekście i potrafią zaadaptować się do różnych stylów pisania. W testowaniu znajdują zastosowanie nie tylko przy tworzeniu scenariuszy, ale też w generowaniu danych testowych, pisaniu kodu skryptów czy analizie logów po awarii. 

Jak powstaje skrypt?

Nowoczesny proces generowania skryptów z opisu wymagań składa się zazwyczaj z kilku kroków:

  1. Analiza semantyczna. Model identyfikuje intencje użytkownika i oczekiwane rezultaty zawarte w tekście. 
  2. Dekompozycja. Scenariusz zostaje podzielony na mniejsze etapy odpowiadające konkretnym widokom lub procesom w aplikacji. 
  3. Mapowanie UI. System analizuje strukturę aplikacji (np. kod HTML), by powiązać kroki testowe z rzeczywistymi elementami, takimi jak przyciski czy pola formularzy.
  4. Generowanie kodu. Powstaje gotowy skrypt w wybranym narzędziu (np. Playwright czy Cypress). 

jak-ai-generuje-skrypt-e2e.png

Ograniczanie błędów dzięki technice RAG 

Jednym z największych ryzyk przy pracy z AI są halucynacje, czyli generowanie informacji niemających pokrycia w rzeczywistości. Aby temu zapobiec, stosuje się technikę Retrieval-Augmented Generation (RAG). Dzięki niej model nie zgaduje, jak działa system, lecz czerpie wiedzę z dostarczonych mu materiałów źródłowych: specyfikacji API, zrzutów ekranu czy istniejącego kodu. Sprawia to, że wygenerowane testy są znacznie lepiej osadzone w kontekście konkretnego projektu.

rag-w-testowaniu.png

Ile AI potrafi zrobić za testera? 

Jakość automatycznie stworzonych testów ocenia się przez pryzmat ich poprawności, kompletności oraz wykonywalności. Statystyki są obiecujące: w wybranych badaniach skrypty E2E generowane przez AI osiągały około 82% skuteczności przy zaledwie 10% koniecznych poprawek ręcznych. Oznacza to potężną oszczędność czasu, mimo że nadzór człowieka wciąż pozostaje niezbędny. 

Najlepsze efekty udaje się uzyskać w aplikacjach webowych o stabilnej strukturze oraz tam, gdzie wymagania są spójne (np. zgodne z konwencją BDD). 

Wniosek

Automatyczna generacja testów nie sprawi, że testerzy staną się zbędni, ale może wpłynąć na zmianę ich codziennej pracy. Ciężar obowiązków przesuwa się w stronę dbania o wysoką jakość dokumentacji źródłowej, weryfikacji i audytu scenariuszy wygenerowanych przez AI oraz projektowania wysokopoziomowych strategii testów zamiast przeklikiwania skryptów. 

    

Na jakim etapie pracy AI byłoby dla Ciebie najbardziej przydatne?
Na jakim etapie pracy AI byłoby dla Ciebie najbardziej przydatne?
15 %
Analiza wymagań
55 %
Tworzenie scenariuszy testowych
10 %
Generowanie kodu testów
20 %
Utrzymanie i aktualizacja testów
Łącznie głosów: 20

To powinno Cię zainteresować