Testy automatyczne i piramida testów w Magento 2 – sprawdź z czego warto skorzystać
Testowanie oprogramowania to długi i złożony proces. Utrzymanie wysokiej jakości produktu z wykorzystaniem jedynie manualnego podejścia do testowania jest w obecnym świecie trudne. Częste zmiany mogące wpływać na duże części systemu skłaniają do automatyzacji pewnych obszarów. Zwinne podejście do tworzenia oprogramowania zakłada testowanie od jak najwcześniejszego etapu projektu. Pozwala to wyłapać niezgodności, defekty, problemy, których poprawa jest często szybsza, łatwiejsza i tańsza. Automatyzacja testów powinna odbywać się na każdym etapie wytwarzania oprogramowania.
Czym jest piramida testów?
W opisane powyżej podejście dobrze wpasowuje się stosowanie piramidy testów. Rozwiązanie to bazuje na fakcie, że produkt powinien być testowany automatycznie z wykorzystaniem różnych poziomów testów.
Ilość poszczególnych testów tworzy rodzaj piramidy. U jej podstawy znajdują się testy jednostkowe, nad nimi testy integracyjne, API, na testach E2E (warstwa UI) kończąc. Testy manualne znajdują się już nad piramidą i stanowią jej uzupełnienie.
W piramidzie najwięcej jest testów jednostkowych (testy wykonywane przez programistów w trakcie tworzenia kodu). Są szybkie, wykonywane w izolacji, pozwalają wykryć błędy na wczesnym etapie, co skutkuje tańszym kosztem ich naprawy.
Na samej górze piramidy są testy E2E. Te testy są dużo wolniejsze, testują konkretne biznesowe przypadki użycia aplikacji, są droższe i czasochłonne w utrzymaniu. Wykorzystują warstwę UI (odzwierciedlają poruszanie się użytkownika po aplikacji). Jeden test może obejmować konkretną ścieżkę biznesową, co może skutkować długim czasem wykonywania testu. Testów E2E nie powinno być wiele.
Testy automatyczne Magento 2.x
Magento w wersji 2.x dostarcza pakiet testów pozwalających w automatyczny sposób kontrolować jakość aplikacji. Są one dobrym uzupełnieniem procesu testowania. W skład tego zestawu wchodzą testy automatyczne:
- statyczne – weryfikacja statyczna kodu pod kątem zgodności ze standardami kodowania w Magento 2 oraz dobrymi praktykami,
- jednostkowe – testy weryfikujące poprawność kodu (tworzone w trakcie developmentu), wykonywane w izolacji,
- jednostkowe JavaScript – weryfikują poprawność kodu po stronie frontowej aplikacji, wykorzystują framework Jasmine,
- integracyjne – weryfikują kod w różnym stopniu izolacji. Dotykają niższego poziomu niż testy funkcjonalne. Są od nich szybsze, gdyż nie korzystają z przeglądarki,
- funkcjonalne Magento Web API – pozwalają na testowanie Magento Web API z punktu widzenia aplikacji klienckiej,
- funkcjonalne – testy czarnoskrzynkowe, wykonywane z punktu widzenia użytkownika.
Powyższe testy dotyczą części corowej Magento. Na pewno warto je poznać i rozważyć wykorzystanie w projekcie choć części z nich. Mogą przynieść wiele korzyści, ponieważ:
– sprawdzają core Magento, zatem mogą być pomocne przy tworzeniu nowych modułów (pozwalają weryfikować, czy nowo napisane moduły nie wpłynęły negatywnie na część corową aplikacji);
– stanowią materiał edukacyjny – na ich podstawie można zobaczyć jakie w ogóle jest podejście do testów w Magento.
Z drugiej strony decydując się na rozpoznanie powyższych testów należy – szczególnie na początku – uzbroić się w cierpliwość i przeznaczyć na to więcej czasu. Rozeznanie tak dużej ilości testów jest czasochłonne.
Analizując powyższe testy automatyczne można też natrafić na trudności w postaci:
– konieczności dostosowania testów do swojej aplikacji. Być może niektóre elementy nie będą dostępne, zatem nie wszystkie testy będą mieć rację bytu;
– konieczności weryfikacji ustawień – testy przygotowane są dla określonego szablonu frontowego oraz używają konkretnego języka (np. w asercjach bazujących na treściach pojawiających się komunikatów). W aplikacji posiadającej inne ustawienia mogą pojawić się problemy z tego wynikające.
Testy w Magento 2 są ciekawym kandydatem do rozwijania ich w aspekcie piramidy testów. Przedstawione powyżej poziomy testów są na razie jedynie bazą do budowania takiej piramidy.
Podsumowanie:
Stosowanie różnych poziomów testów w procesie testowania oprogramowania jest ważne i pomocne. Warto jak najwcześniej rozpoczynać testowanie w projekcie. Utrzymanie jakości produktu powinno być celem całego zespołu, gdyż nie wszystkie obszary są w zasięgu samego testera. Na pewno warto weryfikować rozwiązania, które są dostępne na rynku i mogą wspomóc proces testowania bądź też dostarczyć wiedzę, jak robić to jeszcze lepiej.