Choć słownictwo ma w tym przypadku drugorzędne znaczenie, to wprowadzenie konkretnych pojęć pozwoli nam rozróżnić dwie grupy czynności, które często są łączone do jednej, a różni je prawie wszystko - poczynając od metody przygotowania weryfikatorów, przez zaangażowanie czasowe, po koszty.
Wprowadźmy więc dwa pojęcia:
- automatyzacja testów GUI
- automatyzacja weryfikacji GUI.
Dwa powtarzające się tutaj pojęcia to po pierwsze: automatyzacja, co oznacza, że coś jest robione w sposób automatyczny i GUI, co oznacza, że sprawdzenie wykonywane jest tu po interfejsie graficznym.
Różnica pojawia się na poziomie definiowania testu i weryfikatora.
Test będzie dla nas sprawdzeniem konkretnego zachowania się oprogramowania, bazującego na oskryptowanym uruchomieniu testu i sprawdzeniem, czy oczekiwany rezultat zachowania się oprogramowania jest identyczny z rzeczywistym. Rozbieżność może być interpretowana jako defekt samego oprogramowania albo testu.
Weryfikacja będzie sprawdzeniem czy poszczególne elementy oprogramowania są obecne lub też ich zachowanie jest zgodne z pewnym standardem (formalnym lub też nieformalnym).
Wyjaśnimy to na przykładach.
Automatyzacja testów GUI polega na napisaniu skryptu; zazwyczaj jest on tworzony do użycia na danym produkcie. Skrypt (zazwyczaj) zawiera takie elementy jak:
- przygotowanie środowiska do uruchomienia
- wykonanie operacji lub zbioru operacji symulujących zachowanie użytkownika
- sprawdzenie rzeczywistego zachowania oprogramowania
- skonfrontowanie rzeczywistego zachowania z oczekiwanym zachowaniem
- posprzątanie środowiska po uruchomieniu.
Celem skryptu będzie określenie poprawności zachowania funkcji. Przykładowo, może być to funkcja zakładania konta na stronie internetowej; skrypt „odwiedzi” więc stronę zakładania konta, poda w polach oczekiwane wartości i zobaczy, czy przy poprawnych danych konto zostanie założone.
Przygotowanie takich skryptów często wymaga dedykowanego programisty testów, który przygotuje skrypt i jego uruchomienie. To często wiąże się z wysokim kosztem wytworzenia, uruchomienia, analizy i utrzymania.
Automatyzacja weryfikacji GUI to uruchomienia często gotowego i jedynie skonfigurowanego skryptu lub narzędzia, które używane jest na wielu produktach. Skrypt dedykowany jest do jednego lub wielu celów i zazwyczaj zwraca informację w postaci zero-jedynkowej, że pewna predefiniowana reguła została spełniona. Oprócz potwierdzenia (zaprzeczenia) może pojawić się jeszcze komentarz odnośnie do tego, jaki problem się pojawił i jak go poprawić. Skrypty zazwyczaj są proste do skonfigurowania i uruchomienia, ale wymagają dodatkowego wysiłku związanego z analizą po uruchomieniu, aby określić czy rzeczywiście pojawił się defekt.
Przykładowe automatyczne weryfikatory:
- sprawdzenie kodów odpowiedzi stron (np. 200 czy 404)
- sprawdzenie implementacji niektórych z reguł WCAG i ARIA
- sprawdzenie SEO
- sprawdzenie prostej wydajności strony przez analizę czasów odpowiedzi na pojedyncze zapytania
- podstawowe testy bezpieczeństwa przez próbę wstrzykiwania „niebezpiecznych” stringów w pola na stronie
- etc.
Niewiele osób jest świadomych, że automatyczna weryfikacja może być użyta do weryfikacji regresu oprogramowania w sposób dużo bardziej optymalny (kosztowo i wysiłkowo), niż ma to miejsce w przypadku automatycznych testów regresji po GUI.
Poniższa tabelka zestawia cechy automatyzacji testów oraz automatyzacji weryfikacji.
# | Automatyzacja testów GUI | Automatyzacja weryfikacji GUI |
---|---|---|
Skrypt / narzędzie | Pisane na potrzeby produktu | Jeden do wielu produktów |
Rola | Programista testów | Tester |
CI/CD | TAK | TAK |
Znajduje | Awarie – niepoprawność zachowania aplikacji | Defekty – niezgodność ze regułami lub standardem |
Czas | Długie przygotowanie | Szybka konfiguracja |
Koszty | Wysokie | Niskie |
Składowe kosztów | Napisanie, uruchomienie, analiza po uruchomieniu, utrzymanie | Konfiguracja, uruchomienie, analiza po uruchomieniu |
W praktyce wiele projektów stosuje automatyczną weryfikację oraz automatyzację testów GUI równolegle i czerpią korzyści z obu, nie wyróżniając osobną nazwą ich działania. Część organizacji nie ma świadomości tego, że do testów może dołączyć automatyczną weryfikację po GUI i znacząco ponieść jej skuteczność. Ten temat opiszemy w kolejnej publikacji.