Wyzwania automatyzacji testowania
Wrażliwość testów
Część II

Tagi: 0

Tydzień temu poruszyliśmy problem, jakim jest wrażliwość testów automatycznych. Jak sobie z nim radzić? Odpowiedzią na to jest usprawnienie procesu tworzenia testów automatycznych. To znacznie przyspieszy całość procesu analizy jakości, zatem test będzie można szybciej dostosować do dynamicznych releasów czy update’ów. A jak przyspieszyć dodawanie odpowiednich selektorów w testach? A gdyby można było jeden test automatyczny wykorzystać parę razy, wprowadzając tylko drobne zmiany do jego struktury? Czy nie zaoszczędziłoby to czasu? Z pewnością! Przeczytajcie o 4 sposobach na radzenie sobie z wrażliwością testów automatycznych.

Darmowy ebook

Bezkodowe testy automatyczne (Drag and drop)

Jednym ze sposobów usprawnienia tworzenia testów automatycznych jest przedstawienie sekwencji kroków testowych za pomocą graficznego interfejsu użytkownika (Graphical User Interface; GUI), który w przejrzysty sposób prezentuje daną ścieżkę testową. Jeśli wyposażymy go dodatkowo w funkcję drag and drop, umożliwiającą swobodne wybieranie i dodawanie kolejnych kroków testowych (wyrażony w formie klocków tworzących ścieżkę testową), to proces tworzenia testów automatycznych staję o wiele prostszy i bardziej przejrzysty. 

Taki sposób konstruowania testów automatycznych umożliwia niezwykle łatwą edycję. Klocki (kroki testowe) można w przystępny sposób dostosowywać do swoich potrzeb poprzez zamienianie ich miejscami, usuwanie czy dodawanie kolejnych. 

Całość procesu jest dostępna praktycznie dla każdego. Osoby nieposiadające umiejętności z zakresu programowania mogą stworzyć i modyfikować test automatyczny. Nie ma konieczności angażowania specjalisty. Całość jest więc bardziej dynamiczna i szybciej odpowiada na szybko zmieniające się wymagania dotyczące testowania nowych releasów czy updateów.  

 

Drag and drop

Układanie klocków (kroków testowych) korzystając z funkcji drag and drop jest niezwykle intuicyjne.

 

W trakcie uruchamiania czy odtwarzania testów automatycznych niezwykle przydatną cechą takiego interfejsu jest wizualne oznaczenie kroku testowego, który w danym momencie jest wykonywany. Kolejne klocki są podświetlane w miarę przebiegu procesu testowego. Istotną informacją będzie też graficzne oznaczenie poprawności lub błędnego wykonania kroku. Jeśli taki schemat wzbogacimy o nagranie przebiegu testu w formie wideo, to odtworzenie testu i lokalizacja błędów staje się niezwykle prosta, a naprawienie defektów – szybsze.

Plugin

Niezwykle istotną, ale i równie wymagającą czynnością w procesie tworzenia testów automatycznych jest dodawanie elementów (selektorów), z którymi test automatyczny ma wchodzić w interakcję, np. kliknięcie przycisku na stronie. Osoba tworząca testy automatyczne manualnie musi na podstawie analizy DOM zdefiniować w skrypcie testującym określony element, który chce, by skrypt automatyczny kliknął. Stopień pokrewieństwa takiego elementu względem jego rodziców musi zostać dokładnie określony, co przy głęboko zagnieżdżonych elementach (przyciskach) wymaga kilku dodatkowych linijek w skrypcie.

 

html > body > div:nth-of-type(2) > div:nth-of-type(1) > div:nth-of-type(2) > div > div > section > div:nth-of-type(3) > div:nth-of-type(1) > div:nth-of-type(1) > div:nth-of-type(3) > a

 

Po napisaniu skryptu dalej nie można mieć stuprocentowej pewności, czy test automatyczny kliknie pożądany element, dlatego należy uruchomić skrypt, by to zweryfikować. Jeśli analiza wykaże błąd, trzeba poświęcić dodatkowy czas na znalezienie go i naprawienie. To znacznie przedłuża cały proces.

Jak widać, całość postępowania jest dość skomplikowana, wymaga umiejętności programistycznych i nie daje gwarancji powodzenia za pierwszym razem. Jeśli z jakichś względów UI testowanego systemu uległ zmianie (np. w trakcie nowego releasu), to najprawdopodobniej stworzony skrypt automatyczny nie będzie w stanie zlokalizować podanych wcześniej elementów i manualna interwencja tj. ręczne wprowadzanie zmian w selektorach będzie nieunikniona.

Rozwiązaniem tak postawionego problemu jest plugin do przeglądarki internetowej, który analizuje położenie kursora myszy i poprzez najechanie nim na wybrany przycisk, identyfikuje wybrane elementy HTML dokumentu i zwraca selektor określonego przycisku. Wystarczy kliknąć prawym przyciskiem myszy na wybrany element na stronie i wybrać opcję kopiuj ścieżkę CSS, by następnie wykorzystać ją w odpowiednim kroku testowym. Znacznie usprawnia to  wypełnianie odpowiednich pól w klockach w trakcie formułowania testu automatycznego.

 

Browser plug-in CSS path

Wykorzystując plugin do przeglądarki internetowej w łatwy sposób można pobrać selektor elementu
i wstawić go w odpowiednie miejsce w odpowiednie pole formularza.

 

Zapisywanie

Wyobraźmy sobie idealną sytuację; jedna ścieżka testowa może być wykorzystana raz…drugi… trzeci…ba! Wielokrotnie i to na różnych testowanych systemach. Brzmi dobrze, prawda?

I jest to możliwie do zrealizowania, jeśli system testowy (framework), który wykorzystujemy jest na tyle zaawansowany, że potrafi rozpoznać standardowe komendy, jak “idź do”, “kliknij w element” czy “czekaj”. Wówczas stworzona przez nas ścieżka testowa mogłaby być wykorzystana wielokrotnie na różnych stronach dzięki klonowaniu (clone). Jedyna zmiana, jaką należałoby wprowadzić przed kolejnym testem to wpisanie nowego adresu URL czy określenie nowych selektorów, które test automatyczny miałby kliknąć. Cały proces tworzenia ścieżki testowej ograniczyłby się wówczas do kopiowania i wklejania wybranej ścieżki testowej i podmienianiu URL czy selektorów.

Przykładowa ścieżka testu automatycznego: 

  1. Wejdź na (tutaj wpisujemy adres URL)
  2. Kliknij na button (podaj selektor) 
  3. Zaloguj się do strony za pomocą  (login + hasło)
  4. Przejdź na (adres URL)
  5. Kliknij w przycisk (podaj selektor)
  6. Wybierz produkt (podaj selektor)
  7. Zmień rozmiar na Extra Large Landscape 17.5” x 12”
  8. Zmienić Cover (podaj selektor) na Imagewrap Hardcover (podaj selektor)
  9. Wybrać Bining type na Lay Flat Binding (podaj selektor)
  10. Kliknij przycisk ORDER (podaj selektor)

Auto-healing

Obserwując tempo zmian w branży IT (i będąc jednocześnie w samym ich tyglu) oraz dominujące tendencje, jesteśmy świadomi, iż rozwiązania sytuacji oraz problemów aktualnych dziś, jutro mogą nie być wystarczające. Dlatego rozważając metody mające usprawnić proces testowania, należy wyjrzeć też nieco dalej. 

Sztuczna inteligencja (Artificial Intelligence; AI) już teraz wykorzystywana jest do usprawniania procesów testowych, ale wciąż są to dopiero początki. Niemniej wykorzystanie jej do procesu “leczenia” testów automatycznych znacznie przyspieszy cały proces analizy. Auto-healing testów jest procesem na tyle autonomicznym, iż sam wykrywa zmiany, które nastąpiły w kodzie np. pod wpływem kolejnego releasu i płynnie dostosowuje do nich stworzone wcześniej skrypty testów automatycznych.

Podsumowanie

Jesteśmy świadomi, że przedstawiona przez nas pula pomysłów nie wyczerpuje tematu i że metod usprawniających automatyzację testowania jest o wiele więcej. U nas te metody się sprawdzają i mamy nadzieję, że i dla Was okażą się przydatne, usprawniając działania w procesie analizy jakości po każdym releasie czy aktualizacji.

DYSKUSJA

Skomentuj
wypróbuj

Zarejestruj się i zacznij działać!