Testowanie aplikacji: optymalny framework do testów automatycznych

Materiał promocyjny Co to jest framework do testów automatycznych i jak może on zwiększyć skuteczność projektów automatyzacji tworzenia aplikacji.

Automatyzacja testów zatacza coraz szersze kręgi w świecie IT. Niestety, wiele z projektów automatyzacji nie spełnia stawianych im wymagań. Głównym powodem tych niepowodzeń jest nieprzemyślana budowa testów, skutkująca trudnościami w utrzymaniu oraz wprowadzaniu nowych funkcji, co prowadzi deweloperów do frustracji a firmę do sporych strat finansowych. Jednym z rozwiązań zwiększających skuteczność projektów automatyzacji jest ich poprzedzenie budową wydajnego frameworka do testów automatycznych.

Dobrze przemyślany framework potrafi być istotnym czynnikiem decydującym o tym, czy automatyzacja w projekcie będzie sukcesem, czy też porażką. Co jednak kryje się pod pojęciem "framework testów automatycznych" i czym należy się kierować, tworząc takie rozwiązania?

Testowanie aplikacji: optymalny framework do testów automatycznych

Czym jest framework?

Najprościej mówiąc, framework testów automatycznych to zbiór klas do obsługi testowanej aplikacji, napisanych na podstawie reguł określonych przez klienta. Tworzony jest w celu ujednolicenia strategii testowania, zmniejszenia kosztów utrzymania testów automatycznych i - co szczególnie istotne – umożliwienia pisania testów osobom nie będącym doświadczonymi programistami.

Podczas projektowania frameworka musimy pamiętać o kilku ważnych zasadach:

Modułowość - framework powinien dzielić się na minimum 3 moduły:

  • moduł obsługi testowanej aplikacji (w zależności od przyjętego standardu mogą być to np. modele opisujące poszczególne widoki testowanej aplikacji),
  • moduł zawierający funkcje wspólne (na przykład odczyt/generowanie danych)
  • moduł raportowania

Nawet tak minimalny podział wymusza na twórcy frameworka większą odpowiedzialność podczas pisania kodu i tworzenia przemyślanych metod. Testy zostały tutaj celowo pominięte, ponieważ powinny być całkowicie odrębnym bytem, korzystającym z udostępnionych przez framework funkcji.

Kod musi być pisany zgodnie z przyjętymi standardami - nie ma nic gorszego niż domyślanie się, co autor kodu miał na myśli, umieszczając w danym miejscu kilka zagnieżdżonych instrukcji warunkowych. Przestrzeganie dobrych praktyk pisania kodu ułatwia także uniknięcie niezamierzonej duplikacji kodu (powtarzających się metod) oraz redukuje czas potrzebny na wprowadzanie zmian.

Rozbudowa frameworka – należy pamiętać, że aplikacja, którą zamierzamy testować, może zostać rozbudowana – skutkiem będzie konieczność dodania nowych funkcji oraz przeprowadzenia kolejnych testów automatycznych. Framework powinien zatem uwzględniać tę możliwość. Rozważmy przypadek, gdy klient chce dodać inny sposób generowania danych w naszym frameworku. Jeżeli wcześniej oprzemy nasze generatory na wzorcu Strategy, do rozszerzenia funkcjonalności o nowy sposób generowania danych potrzebna będzie tylko dokumentacja odpowiedniego interfejsu.

Enkapsulacja - osoba pisząca testy nie powinna być zmuszona do wnikania, jak dokładnie działa framework. Przykładowym wzorcem projektowym ułatwiającym korzystanie z frameworka jest chociażby Factory.

Testowanie aplikacji: optymalny framework do testów automatycznych

Parametryzacja - framework powinien pozwalać na łatwą (na ile to tylko możliwe) parametryzację testów. Należy przy tym pamiętać, że parametryzacja nadmiernej ilości elementów może być uciążliwa w obsłudze.

Uwzględniając powyższe założenia podczas projektowania kolejnych frameworków, jesteśmy w stanie znacząco ułatwić ich utrzymanie, uprościć procesy pisania testów automatycznych, I w efekcie zwiększyć szanse na powodzenie projektów automatyzacji. Przedstawiona wyżej, oparta o framework, metoda automatyzacji testów jest tego najlepszym przykładem.

O Sii dowiesz się więcej na dedykowanej strefie: https://www.computerworld.pl/sii

O autorze:

Testowanie aplikacji: optymalny framework do testów automatycznych
Mateusz Psujek

Architekt Rozwiązań/Developer Testów Automatycznych w Praktyce Testingowej w Sii Polska. Posiada bogate doświadczenie w przygotowaniu frameworków do testowania aplikacji webowych, desktopowych, a także gier mobilnych. Z zamiłowania programista oraz projektant rozwiązań opartych o mikrokontrolery.