Niedoceniane, a kluczowe elementy sukcesu automatyzacji testów
Zgłębiając temat zapewnienia jakości oprogramowania, zgodnie z zasadą, że kto pyta, nie błądzi, warto zadać sobie kilka kluczowych pytań. W tym artykule skupimy się na procesie automatyzacji testów. Co jest najlepszą podstawą dla tworzenia scenariuszy testowych? Które scenariusze warto zautomatyzować? Czy powinniśmy bazować na wymaganiach funkcjonalnych, przypadkach użycia, czy może na zgłoszonych błędach? I czy wybór odpowiedniej podstawy testów gwarantuje nam sukces i efektywne testy automatyczne?
Wybór właściwych scenariuszy do automatyzacji jest kluczowy dla sukcesu całego procesu. Istnieje wiele elementów, które mogą stanowić podstawę testów i inspirować do zaprojektowania wartościowych przypadków testowych. Poniżej przedstawiamy kilka najczęściej wymienianych źródeł informacji, które stanowiąc podstawę testów powinny pomóc w realizacji celów stawianych przed automatyzacją.
Źródła inspiracji dla scenariuszy testowych:
1. Wymagania funkcjonalne: To podstawowe źródło scenariuszy. Większość wymagań funkcjonalnych powinna mieć swoje odzwierciedlenie w testach automatycznych, co pozwala na regularną weryfikację, czy aplikacja działa zgodnie z założeniami.
2. Przypadki użycia: Scenariusze oparte na przypadkach użycia pozwalają na symulację rzeczywistych interakcji użytkownika z aplikacją, co ułatwia identyfikację problemów, które mogą być niezauważone podczas punktowej weryfikacji wymagań funkcjonalnych.
3. Testy eksploracyjne: Choć zazwyczaj wykonywane manualnie, odkrywając nieoczekiwane zachowania aplikacji i błędy, mogą być źródłem inspiracji dla nowych scenariuszy. Testy eksploracyjne są bardzo dobrą podstawą testów, w sytuacji, gdy projekt nie jest dobrze udokumentowany, a wiedza projektowa bazuje na wiedzy eksperckiej.
Kryteria wybierania scenariuszy do automatyzacji
Nie wszystkie scenariusze testowe nadają się do automatyzacji. Aby podjąć decyzję co warto automatyzować, należy rozważyć następujące kryteria:
- Częstotliwość wykonania: Scenariusze wykonywane często, takie jak testy regresyjne lub powtarzające się przebiegi biznesowe, są doskonałymi kandydatami do automatyzacji. Zapewniają powtarzalność wykonanych testów i nie są wrażliwe na czynnik ludzki. Dzięki automatyzacji tych scenariuszy, nie musimy już angażować testerów czy specjalistów biznesowych w ich wykonanie, co sprawia, że automatyzacja testów jest inwestycją, która szybko się zwraca.
- Stabilność testowanych obszarów: Aby uniknąć częstej aktualizacji skryptów testowych, testujemy te obszary aplikacji, które nie podlegają częstym zmianom. Najczęściej są to właśnie testy regresji.
- Złożoność scenariusza: Proste, powtarzalne scenariusze łatwiej zautomatyzować niż złożone procesy biznesowe. Aby to osiągnąć dobrą praktyką jest podzielenie złożonych procesów na mniejsze części procesów biznesowych.
- Koszt automatyzacji: Należy oszacować koszty związane z tworzeniem i utrzymaniem automatycznych testów. Koszty te są jednym z najczęstszych przyczyn wykorzystania testów automatycznych w testowaniu regresji.
- Wartość biznesowa: Priorytetem powinny być scenariusze, które mają największy wpływ na jakość oprogramowania i satysfakcję użytkownika.
Dobre praktyki przy tworzeniu scenariuszy testowych
W procesie efektywnej automatyzacji, kluczowy jest nie tylko wybór odpowiednich scenariuszy testowych, ale także to, aby scenariusze były odpowiednio opracowane. Oto kilka dobrych praktyk:
- Precyzja i jednoznaczność: Każdy krok scenariusza powinien być jasno opisany, unikając ogólników, w jednoznaczny sposób, nie pozostawiając miejsca na swobodną interpretację.
- Zależności między krokami: Określmy, w jakiej kolejności mają być wykonywane poszczególne kroki testowe i jak są ze sobą powiązane. Zależności między krokami mogą wskazywać na potencjalne rozgałęzienia procesu. W takiej sytuacji należy podzielić scenariusz testowy na kilka odrębnych, tak aby każdy z nich opisywał tylko jedną ścieżkę przebiegu procesu biznesowego.
- Dane testowe: Zdefiniujmy dokładne dane testowe i stan wejściowy aplikacji, jakie są wymagane do realizacji testu. Zastanówmy się nad procesem przygotowania danych – jak zapewnić ich dostępność dla automatów testowych? Czy konieczne jest ich wcześniejsze przygotowanie danych? Czy proces przygotowania danych może być zautomatyzowany? Czy złożoność procesu przygotowania danych nie przekreśla zasadności automatyzacji tego scenariusza testowego?
- Oczekiwane wyniki: Precyzyjnie określmy, jakie wyniki powinny zostać osiągnięte po wykonaniu scenariusza. Innymi słowy, jest to jednoznaczny opis stanu aplikacji po wykonaniu danego testu.
- Struktura: Scenariusze powinny mieć spójną strukturę, co ułatwia ich czytanie i zrozumienie. Umożliwia to łatwiejsze odnajdywanie informacji zarówno dla testerów manualnych, jak i automatyków.
- Modułowość: Dłuższe scenariusze warto podzielić na mniejsze, łatwiej zarządzane moduły, co poprawia ich czytelność i ułatwia aktualizacje.
- Powtarzalność kroków testowych: Te same czynności w różnych przypadkach testowych powinny być opisane w ten sam sposób. Zlokalizowanie tych kroków i pogrupowanie ich w reużywalne bloki ma duży wpływ na efektywność automatyzacji testów a później na łatwość ich utrzymywania.
Przekazywanie scenariuszy testowych do automatyków
Kierując się powyższymi wytycznymi, spośród dostępnych scenariuszy możemy skutecznie wytypować te, które nadają się do automatyzacji, a następnie odpowiednio je opisać. Tu pojawia się kolejne zagadnienie, które często spowalnia proces automatyzacji – sposób przekazania scenariuszy testowych zespołowi automatyków. Naszym zdaniem do najbardziej efektywnych form przekazywania scenariuszy należą:
- Dokumenty tekstowe: To najprostsza forma, która powinna zawierać chronologiczny zapis przebiegu scenariusza. Warto załączyć zrzuty ekranu, które zobrazują wykonywaną w danym kroku czynność. Musimy jednak pamiętać o tym, że forma ta może być mało przejrzysta dla bardziej złożonych scenariuszy. Dlatego decydując się na przekazywanie scenariuszy w postaci dokumentów testowych należy zadbać o to, aby opisywane scenariusze były możliwie krótkie i proste.
- Arkusze kalkulacyjne: Umożliwiają uporządkowanie dużej liczby scenariuszy, ale są wrażliwe na przypadkowe zmiany, które mogą powodować duże rozbieżności w całym pliku.
- Narzędzia do zarządzania testami: Takie jak TestRail, Zephyr czy qTest, oferują strukturę, możliwość śledzenia postępu automatyzacji testów, a następnie wyników uruchomień testów; umożliwiają integrację z innymi narzędziami.
- Nagrania wideo: Mogą być przydatne do zilustrowania bardziej złożonych interakcji użytkownika. Przy zachowaniu odpowiedniej uważności, stanowią najlepszy sposób opisywania scenariuszy testowych. Opracowując nagrania należy ustalić wspólne zasady nagrywania i pamiętać o kwestiach takich jak jakość nagrania, jego długość i odpowiedni komentarz głosowy. PAMIETAJMY ABY PODCZAS NAGRYWANIA SKUPIĆ SIĘ JEDYNIE NA PREZENTOWANYM PROCESIE BIZNESOWYM, BEZ ZBĘDNYCH DYGRESJI I ROZGAŁĘZIEŃ PROCESU! Innymi słowy, wyklikujemy tylko to co ma być obiektem testowanego procesu biznesowego.
Przekazywanie testów do narzędzia do automatyzacji
W obecnych czasach na szczególną uwagę ze wszystkich wcześniej opisanych form przekazywania testów do automatyzacji zasługują nowoczesne narzędzia do zarządzania testami. W tym kontekście warto zwrócić uwagę na platformę qTest oraz narzędzie do automatyzacji testów Tricentis Tosca. Integracja tych narzędzi może znacząco ułatwić proces automatyzacji testów, oferując szereg korzyści:
- Tworzenie przypadków testowych: W qTest użytkownicy mogą definiować kroki, dane testowe i oczekiwane wyniki, co pozwala na stworzenie jasno zdefiniowanych scenariuszy. Szczególnie przydatny w tym procesie jest moduł qTest „Session Manager”. Pozwala on na zapisanie czynności wykonywanych przez użytkownika aplikacji w formie kroków testowych z załączonymi screenami.
- Organizowanie przypadków testowych: Możliwość grupowania przypadków testowych w zestawy testowe istotnie ułatwia zarządzanie nimi. qTest umożliwia również zarządzanie repozytorium testów automatycznych w samym narzędziu Tosca (więcej szczegółów w dalszej części artykułu).
- Priorytetyzowanie przypadków testowych: Określanie ważności poszczególnych przypadków pozwala na skupienie się na najważniejszych testach.
- Śledzenie wykonania testów: Rejestrowanie wyników testów i generowanie raportów ułatwia analizę i monitorowanie nie tylko wyników wykonanych testów, ale również śledzenie postępu prac nad automatyzacją testów.
- Integracja z Tosca: Dzięki integracji przypadki testowe z qTest są eksportowane do Tosca, co umożliwia płynne przejście pomiędzy tymi narzędziami.
- Integracja z innymi narzędziami: Poza integracją z Tosca, qTest posiada możliwość importu przypadków testowych z innych narzędzi.
- Automatyzacja w Tosca: Przypadki testowe są konwertowane na skrypty, które można automatycznie wykonywać, wykorzystując zaawansowane funkcje Tosca.
- Wykonanie i analiza: Zautomatyzowane testy są wykonywane, a wyniki rejestrowane i analizowane w qTest, co pozwala na kompleksową ocenę całego procesu testowania.
Analiza wymagań funkcjonalnych oraz przypadków użycia pozwala na zidentyfikowanie najważniejszych obszarów do automatyzacji. Równie ważne jest wprowadzenie regularnych przeglądów testów eksploracyjnych oraz analizy wyników testów automatycznych pozwalających na ciągłe doskonalenie zakresu zautomatyzowanych testów jak i samych automatów testowych. Nie można też zapominać o efektywnej komunikacji i współpracy między zespołem biznesowym a automatykami – jest to kluczowy element dla sukcesu testów automatycznych. Wspólne zrozumienie oczekiwań i kontekstu biznesowego przyczynia się do lepszej jakości testów. Wybór odpowiednich narzędzi, takich jak qTest i Tosca, może znacząco ułatwić proces zarządzania testami oraz ich automatyzację, co pozwala zaoszczędzić czas i zasoby.
W dzisiejszym dynamicznym świecie IT, zapewnienie jakości oprogramowania poprzez automatyzację testów stało się nie tylko opcją, ale wręcz koniecznością. Właściwe podejście do tworzenia scenariuszy testowych, ich przekazywania oraz efektywnej współpracy w zespole mogą przynieść wymierne korzyści w postaci wyższej jakości produktów oraz zadowolenia użytkowników. Zachęcamy do refleksji nad powyższymi wskazówkami i zastosowania ich w praktyce, aby zbudować silną kulturę zapewnienia jakości w waszej organizacji. Automatyzacja testów to nie tylko technologia, ale również proces wymagający zrozumienia, współpracy i ciągłego doskonalenia.