To pytanie jest ważne, ponieważ testowanie nie jest celem samym w sobie. Testowanie jest działaniem poznawczym i kontrolnym. Ma dostarczać informacji potrzebnych do podejmowania decyzji biznesowych, technicznych i produktowych. Jeśli więc testowanie generuje dużo czynności, ale mało wartości, to nie jest efektywne. Jeśli natomiast minimalna liczba dobrze dobranych działań pozwala uzyskać wysoką wartość informacyjną, mówimy o optymalizacji.
Można więc zaproponować prostą definicję:
optymalizacja testowania polega na minimalizacji liczby działań potrzebnych do uzyskania maksymalnej wartości biznesowej i wiedzy o jakości produktu.
Nie chodzi zatem o to, aby testować więcej. Chodzi o to, aby testować mądrzej.
Testowanie jako koszt działań
Każda metoda kontroli jakości wymaga wykonania określonych czynności. Część z nich może być wykonana przez człowieka, część przez narzędzie, część przez narzędzie automatyzacji, a coraz częściej także przez AI. Problem polega na tym, że sama obecność automatyzacji lub AI nie oznacza automatycznie mniejszego kosztu.
W praktyce koszt testowania składa się z wielu elementów:
- zaprojektowania testu,
- przygotowania danych,
- wykonania testu,
- interpretacji wyniku,
- raportowania,
- utrzymania testu,
- analizy fałszywych defektów,
- aktualizacji po zmianach systemu,
- ponowne sprawdzenie testów.
Dlatego porównywanie metod testowania wyłącznie przez pryzmat "manualne kontra automatyczne" jest zbytnim uproszczeniem. Znacznie ciekawsze jest pytanie: które działania są wykonywane ręcznie, które są zautomatyzowane?
Porównanie podstawowych modeli testowania
Przyjrzyjmy się trzem popularnym podejściom do kontroli jakości:
- testowaniu nazywanemu manualnym,
- testowaniu automatycznemu,
- testowaniu manualnemu wspieranemu przez AI.
W uproszczonym modelu każde z tych podejść można rozpisać jako sekwencję działań.
Testowanie manualne
W klasycznym testowaniu manualnym tester wykonuje cały proces samodzielnie:
- zaprojektuj test,
- uruchom test,
- przygotuj raport.
To najprostszy model. Jego zaletą jest niski próg wejścia, elastyczność i możliwość szybkiego reagowania na kontekst. Tester może dostosować sposób działania do aktualnej sytuacji, zmienić ścieżkę testową, zauważyć nietypowe zachowanie, zinterpretować problem i od razu pogłębić analizę. Jednocześnie jest to model kosztowny przy powtarzalności. Każde kolejne uruchomienie testu wymaga podobnego nakładu pracy. Jeśli test ma być wykonany dziesięć razy, człowiek musi wykonać podobny zestaw działań dziesięć razy. Jeśli test ma być wykonywany przy każdym wydaniu, koszt powtarzalności staje się bardzo wysoki.
Testowanie manualne dobrze sprawdza się tam, gdzie potrzebna jest ocena, intuicja, eksploracja, rozumienie kontekstu, analiza użyteczności lub weryfikacja nowych funkcji. Słabiej sprawdza się jako masowa, powtarzalna regresja.
Testowanie automatyczne
W testowaniu automatycznym liczba działań początkowo rośnie:
- zaprojektowanie testu,
- zaimplementowanie lub zweryfikowanie (przetestowanie) testu,
- uruchomienie testu,
- uzyskanie wyniku,
- przeanalizowanie wyniku,
- przygotowanie raportu.
Na pierwszy rzut oka może wyglądać to paradoksalnie. Automatyzacja, która miała zmniejszać wysiłek, początkowo wymaga większego nakładu pracy niż testowanie manualne. Trzeba nie tylko wiedzieć, co testować, ale również zamienić test na kod, skrypt lub konfigurację narzędzia. Następnie sam test automatyczny trzeba przetestować, ponieważ błędny test automatyczny może być równie niebezpieczny jak defekt w kodzie produkcyjnym.
To jest jeden z często pomijanych faktów: test automatyczny również jest produktem informatycznym. Ma logikę, zależności, dane wejściowe, punkty integracji, podatność na zmiany i własne defekty.
Wartość automatyzacji pojawia się dopiero po czasie. Jeżeli test jest uruchamiany wielokrotnie, jego koszt jednostkowy zaczyna spadać. Największy nakład ponosimy na początku – podczas projektowania, implementacji i stabilizacji. Później każde kolejne wykonanie testu może być znacznie tańsze niż ręczne przejście tej samej ścieżki.
Automatyzacja jest więc inwestycją. Nie opłaca się dlatego, że "jest nowoczesna". Opłaca się wtedy, gdy:
- test jest powtarzalny,
- test ma istotną wartość regresyjną,
- wynik można jednoznacznie ocenić,
- środowisko jest stabilne,
- koszt utrzymania nie przewyższa wartości informacji,
- test będzie wykonywany wystarczająco często.
Jeżeli test automatyczny jest uruchamiany raz, automatyzacja może być stratą. Jeżeli jest uruchamiany setki razy i szybko wykrywa regres, może być jedną z najbardziej opłacalnych form kontroli jakości.
Testowanie manualne z użyciem AI
Trzecim modelem jest testowanie manualne wspierane przez AI. Można je opisać następująco:
- zaprojektuj test z AI,
- zweryfikuj test,
- uruchom test,
- uzyskaj wynik,
- przeanalizuj wynik,
- przygotuj raport.
W tym modelu AI może znacząco obniżyć koszt projektowania testów. Model językowy może pomóc wygenerować przypadki testowe, dane testowe, scenariusze negatywne, warianty brzegowe, checklisty, pomysły eksploracyjne albo propozycje asercji. To realna wartość, szczególnie na etapie przygotowania.
Jednak nie oznacza to, że koszt znika całkowicie. Zostaje przesunięty. Po pierwsze, test wygenerowany przez AI trzeba sprawdzić. Model może zaproponować testy pozornie sensowne, ale nietrafne, nadmiarowe, niezgodne z wymaganiami albo niemożliwe do wykonania. Może też pominąć istotne ryzyka domenowe, których nie ma w promptcie.
Po drugie, wyniki pracy AI są często niedeterministyczne. Ten sam prompt może dać różne rezultaty. Dwa modele mogą zaproponować różne scenariusze. Nawet ten sam model po aktualizacji może zmienić sposób odpowiedzi. To powoduje, że AI świetnie wspiera generowanie hipotez testowych, ale słabiej nadaje się jako bezkrytyczna wyrocznia.
Po trzecie, AI może zwiększać wolumen artefaktów testowych. Tester, który wcześniej projektował 10 przypadków testowych, teraz może dostać 50 propozycji. To pozornie wygląda jak wzrost jakości, ale może oznaczać także wzrost kosztu selekcji, przeglądu i utrzymania. Tester mniej czasu spędza na tworzeniu pierwszej wersji materiału, ale więcej na ocenie, filtrowaniu, walidacji, doprecyzowaniu i interpretacji.
Złudzenie równej liczby działań
Na pierwszy rzut oka wszystkie trzy podejścia mogą wyglądać podobnie. W każdym mamy projektowanie, wykonanie, wynik i raportowanie. Można więc błędnie założyć, że ich koszt jest zbliżony. Nic bardziej mylnego.
W testowaniu manualnym koszt jest liniowy. Każde kolejne wykonanie wymaga podobnej pracy człowieka.
W testowaniu automatycznym koszt jest nieliniowy. Na początku jest wysoki, ale przy wielu uruchomieniach koszt jednostkowy spada.
W testowaniu z AI koszt jest przesunięty. Mniej wysiłku może być potrzebne do wygenerowania testów, ale więcej do ich oceny, kontroli i interpretacji.
Właśnie dlatego samo policzenie liczby działań nie wystarczy. Trzeba ocenić:
- które kroki są kosztowne,
- które są powtarzalne,
- które można zautomatyzować,
- które wymagają człowieka,
- które generują wartość,
- które są tylko operacyjnym narzutem.
Optymalizacja testowania nie polega na minimalizacji liczby testów. Polega na maksymalizacji wartości informacji względem poniesionego wysiłku. Test ma wartość, jeśli pomaga odpowiedzieć na istotne pytanie biznesowe lub techniczne, na przykład:
- czy możemy bezpiecznie wydać nową wersję?
- czy krytyczna ścieżka użytkownika nadal działa?
- czy zmiana nie uszkodziła procesu płatności?
- czy system zachowuje zgodność z wymaganiami prawnymi?
- czy błąd może wpłynąć na przychód, reputację lub bezpieczeństwo?
- czy klient może wykonać najważniejsze zadanie?
Test o niskiej wartości biznesowej, nawet jeśli jest automatyczny, pozostaje kosztem. Test o wysokiej wartości, nawet jeśli wykonywany manualnie, może być opłacalny.
Kiedy testowanie manualne jest optymalne?
Testowanie manualne bywa optymalne wtedy, gdy:
- test wykonujemy jednorazowo lub rzadko,
- funkcja szybko się zmienia,
- wynik wymaga oceny człowieka,
- badamy użyteczność lub dostępność,
- eksplorujemy nowe ryzyka,
- wymagania są niejednoznaczne,
- nie wiemy jeszcze, co warto automatyzować.
Testowanie manualne jest mechanizmem pozyskiwania informacji. Jego wartość polega na ludzkim rozumieniu kontekstu, zdolności obserwacji i adaptacji.
Kiedy automatyzacja jest optymalna?
Automatyzacja jest optymalna wtedy, gdy test:
- jest często wykonywany,
- ma stabilną logikę,
- sprawdza istotny obszar ryzyka,
- ma jednoznaczny wynik,
- może być uruchamiany szybko,
- daje informację wcześniej niż człowiek,
- nie wymaga nadmiernego utrzymania.
Największą wartość automatyzacja daje w regresji, testach kontraktowych, API, integracji, testach jednostkowych, smoke testach, kontrolach technicznych i powtarzalnych walidacjach danych.
Automatyzacja jest dobra wtedy, gdy zmniejsza koszt uzyskania wartościowej informacji. Jest zła wtedy, gdy produkuje kosztowną iluzję kontroli.
Kiedy AI jest optymalne?
AI jest szczególnie użyteczne tam, gdzie potrzebujemy szybko wygenerować warianty, hipotezy i inspiracje. Może wspierać:
- analizę wymagań,
- generowanie przypadków testowych,
- tworzenie danych testowych,
- znajdowanie brakujących scenariuszy,
- porządkowanie notatek eksploracyjnych,
- streszczanie wyników,
- przygotowanie raportów,
- analizę logów,
- klasyfikację defektów,
- wskazywanie ryzyk.
AI dobrze sprawdza się jako akcelerator pracy poznawczej. Słabiej jako samodzielny gwarant jakości.
Największe ryzyko pojawia się wtedy, gdy organizacja traktuje AI jako sposób na zastąpienie myślenia testerskiego. AI może pomóc zaprojektować test, ale nie przejmuje odpowiedzialności za sens testu. Może zaproponować wynik, ale nie zawsze rozumie konsekwencje biznesowe. Może wygenerować raport, ale nie odpowiada za decyzję release/no-release.
Minimalizacja działań nie oznacza minimalizacji jakości
Warto podkreślić jedną rzecz: minimalizacja działań nie oznacza obniżania jakości testowania. Chodzi o eliminowanie działań, które nie zwiększają wartości. Optymalizacja polega na przesunięciu energii z działań operacyjnych na działania poznawcze i decyzyjne.
Dojrzałe testowanie nie polega na tym, że wszystko jest manualne, wszystko jest automatyczne albo wszystko jest wspierane przez AI. Dojrzałość polega na świadomym doborze mechanizmu do rodzaju ryzyka.
Najgorsze są klapki na oczach i ślepa wiara w dogmaty:
- "automatyzujemy wszystko",
- "manualne testy są przestarzałe",
- "AI napisze nam testy",
- "testerzy tylko klikają",
- "im więcej testów, tym lepiej".
Nie istnieje jedna najlepsza metoda testowania. Istnieje tylko najlepszy dobór metody do celu, ryzyka i kosztu.
Dlatego optymalizacja testowania zaczyna się nie od narzędzia, lecz od pytania: Jaką najmniejszą liczbą działań możemy uzyskać wystarczająco wiarygodną informację, która ma realną wartość biznesową?
Redakcja testerzy.pl