Od długiego czasu narzędzia no-code i low-code zyskują na popularności w całym procesie wytwarzania oprogramowania, od tworzenia aplikacji do testowania ich. Innym rozwiązaniem wkraczającą na rynek rozwiązań IT jest AI.
Mabl łączy te zagadnienia w postaci platformy do wieloaspektowego testowania aplikacji. W serii artykułów o tym narzędziu przedstawię jego działanie w praktyce.
Aplikacja
Low-code
Co to znaczy, że Mabl jest narzędziem low-code? Otóż bazuje ono na redukcji potrzeby pisania skryptów do tworzenia i uruchamiania testów, zastępując je interfejsem graficznym, czyli UI. Mabl pod tym względem niewątpliwie wyprzedza konkurencję, oferując nowoczesny i prosty do zrozumienia interfejs.
W takim razie – gdzie jest ten low-code, skoro na razie nie musimy pisać żadnego kodu? Otóż Mabl daje nam możliwość zastosowania kodu napisanego w JavaScript’cie dla skomplikowanych lub nieoczywistych rozwiązań.
Dla testów UI możemy zastosować „snippety”. Są to funkcje, w których wykonujemy interesujące nas działania. Dobrym przykładem akcji, jaką możemy wykonać, jest stworzenie niestandardowego formatu daty, który jest wymagany w jednym z pól na stronie internetowej, którą testujemy.
Dla testów API kod możemy zamieszczać w wielu miejscach, zależnie od naszych potrzeb.
Dzielimy je ze względu na:
- liczbę testów, których dotyczą (dla wszystkich lub dla każdego testu oddzielnie),
- moment wykonania (przed wysłaniem zapytania lub po jego wysłaniu).
Dzięki temu, możemy w dynamiczny sposób korzystać z wartości, które otrzymujemy lub wysyłamy w zapytaniach.
Artificial Intelligence
AI jest w tym momencie gorącym tematem w świecie IT. Mabl jest tego w pełni świadom, dlatego w przeciwieństwie do innych podobnych narzędzi nie traktuje AI jako dodatku, ale jako integralną część systemu. Stosuje on sztuczną inteligencję w celu poprawy jakości, utrzymywalności i szybkości testów.
Uzyskuje to dzięki 3 elementom:
- Automatycznemu leczeniu (ang. Auto-healing) – dla kroków, które wykorzystują elementy strony internetowej, Mabl uczy się atrybutów danego elementu i podczas odpalania na chmurze, kiedy nie jest w stanie go ponownie znaleźć na skutek jakieś zmiany, stara się sam uleczyć test poprzez znalezienie nowego silnego powiązania.
- Inteligentnemu czekaniu (ang. Intelligent Wait) – Mabl przechowuje informację o czasie i stabilności poprzednich egzekucji testu, dzięki czemu ucząc się, jest w stanie zbalansować czas, jaki jest potrzebny na wykonywania poszczególnych akcji na stronie. Przekłada się to na redukcję czasu potrzebnego na wykonanie testu przy jednoczesnym zachowaniu jego stabilności.
- Nauce wizualnej zmiany (ang. Visual change learning) – za pomocą uczenia maszynowego tworzony jest dynamiczny model zmian wizualnych, który niweluje wpływ wszystkich dynamicznych elementów strony (jak banery z reklamami) i powie nam o wszelkich istotnych zmianach na naszej stronie.
Rodzaje testów
Mabl umożliwia tworzenie wielu rodzajów testów. Nie tylko skupia się na testach funkcjonalnych wykonywanych na poziomach UI i API, ale również na testach niefunkcjonalnych walidujących przystępność i wydajność testowanego systemu. Informacje pozwalające oceniać metryki związane z rzeczami niefunkcjonalnymi, są zbierane zarówno podczas wykonywania testów funkcjonalnych oraz podczas stworzonych dedykowanych testów niefunkcjonalnych.
Poniżej, przedstawię wszystkie rodzaje testów, możliwych do stworzenia za pomocą Mabl.
Testy UI
Trainera testów UI możemy wykorzystać na kilka sposób. Jednym z nich jest pisanie testów UI End-to-end, gdzie podczas nagrywania przechodzimy przez poszczególne widoki związane z funkcjonalnością, wykonujemy akcję, które później sprawdzimy asercjami. Natomiast przy skorzystaniu z dodatkowego modułu do testów użyteczności, jesteśmy w stanie sprawdzać stan strony, jak i jej elementów pod względem przystępności.
Kolejnym rodzajem testów UI są testy wizualne, gdzie test uruchamia daną stronę internetową i bazując na wcześniej przechowywanej informacji o jej wyglądzie, sprawdza czy jej interfejs graficzny nie uległ zmianie.
Testy API
W testach API możemy przyjąć dwie strategie testowania:
- Sprawdzanie ścieżek poprzez wywoływanie kolejnych powiązanych ze sobą zapytań API,
- Weryfikacja pojedynczego endpointa ze względu na różne parametry wejściowe.
Jesteśmy w stanie stworzyć takie dwa podejścia ze względu na to, że Mabl nie skończy egzekucji testu przy wystąpieniu błędów w odpowiedziach na wywołane zapytania, o ile mu tego nie zlecimy. Pozwala to na grupowanie testów dla danych zapytań, jak i redukcję potrzebnych zasobów na uruchomienie wielu testów.
Testy wydajnościowe
Mabl zbiera informacje o wydajności poszczególnych komponentów UI i API, jak i o czasie wykonywania samych testów. Informacje te są wyświetlane na poszczególnych wykresach i możliwe do filtrowania ze względu na plan testowy i środowisko.
Poniżej przedstawię ich przykłady.
Dodatkowo, za pomocą jednego z modułów możliwe jest stworzenie testów wydajności, które będą korzystać z wcześniej napisanych testów przeglądarki i/lub API. Skraca to w znaczny sposób czas potrzebny na stworzenie i utrzymanie dedykowanych testów wydajnościowych.
Infrastruktura
Jest to narzędzie działające przede wszystkim w obrębie chmury, ale mamy możliwość uruchamiania testów lokalnie. Dzięki temu zredukowano trudność i koszt potrzebny na zbudowanie skalowalnego systemu do testowania aplikacji.
Na ten moment Mabl wspiera takie przeglądarki jak:
- Chrome,
- Edge (tylko chmura),
- Firefox (tylko chmura),
- Safari (tylko chmura),
- emulacja przeglądarki mobilnej na Chrome dla wszystkich najpopularniejszych urządzeń.
Trwają prace nad umożliwieniem testowania natywnych aplikacji mobilnych najpierw na emulatorach, a za jakiś czas na rzeczywistych urządzeniach. Przewidywane jest wprowadzenie pierwszej wersji jeszcze na początku tego roku.
Platformy
Mabl oferuje możliwość skorzystania z wersji desktopowej jak i przeglądarkowej aplikacji.
Wersje desktopowe są dostępne na platformy:
- Windows,
- Linux,
- macOS Intel,
- macOS Apple.
Testy równoległe
Bazując na skalowalnej infrastrukturze Mabla, możliwe jest nielimitowane uruchomienie testów równoległych, zarówno na wielu przeglądarkach jak i wielu funkcjonalności. Brak ograniczeń w ilości równoczesnych egzekucji pozwala rozbić plany testowe na mniejsze, skupiające się na jednej lub kilku funkcjonalnościach.
Wprowadza to dużo większą elastyczność wykonań testów jak i uzyskanie szybszej odpowiedzi zwrotnej z ich wynikami. Kolejną zaletą wynikającą z tego jest możliwość zastosowania powyższych cech do wdrożenia shift-left (czyli przesunięcia procesów kontroli jakości na wcześniejsze etapy wytwarzania oprogramowania). Testy równoległe są dostępne tylko na chmurze, lokalnie wszystkie testy są uruchamiane w sposób sekwencyjny.
Mabl CLI
Uruchamianie testów lokalnie ma pewne ograniczenia – wszystkie pojedyncze testy możemy odpalić z poziomu widoku danego testu. Przedstawia to poniższe zdjęcie.
Aby uruchomić plan testowy, musimy skorzystać z narzędzia Mabl CLI. Jest ono rozdzielne z aplikacją desktopową czy przeglądarkową. Dzięki temu możliwa jest łatwa inicjacja testów lokalnie na systemie CI/CD. Wymagane jest zainstalowanie środowiska Node.JS. Następnie należy wywołać w terminalu komendę:
```npm install -g @mablhq/mabl-cli```
Kolejnym krokiem jest zautoryzowanie aplikacji terminalowej z naszym środowiskiem pracy Mabl.
```mabl auth activate-key KEY_VALUE```
Po wykonaniu kroków mamy dostęp do pełnej funkcjonalności Mabl CLI. Poniżej zaprezentowałem kilka przykładów konfiguracji uruchamiania lokalnego testów:
- Uruchomienie wybranego planu testowego za pomocą jego id:
„`mabl tests run –from-plan-id ID_PLANU –headless„`
- Uruchomienie wybranego testu za pomocą jego id:
```mabl tests run --id ID_TESTU –headless```
- Uruchomienie wielu testów posiadających dane kategorię 1 i 2 z wykluczeniem 3:
```mabl tests run --labels KATEGORIA_1, KATEGORIA_2 --exclude-labels KATEGORIA_3 –headless```
Oprócz inicjacji lokalnej testów, Mabl CLI umożliwia wywoływanie zdarzeń związanych z wdrożeniem nowej wersji testowanego systemu lub jego części. W związku z tym możemy od razu wywołać interesujące nas testy i sprawdzić, jak dana wersja wpłynęła na stan naszej aplikacji. Wykonujemy to poprzez wywołanie komendy:
```mabl deployments create --application-id ID_APLIKACJI --labels KATEGORIA_1 await-completion```
Jeżeli posiadamy więcej niż jedno środowisko zdefiniowane w aplikacji, to do wszystkich powyższych opcji warto jest dodać parametr `–environment-id ID_ŚRODOWISKA.
Mabl Link
Częstym wyzwaniem, stojącym przed zespołem testerskim, jest testowanie aplikacji na środowiskach lokalnych lub zamkniętych sieciach. Z pomocą przychodzi Mabl Link. Jest to jeden z modułów, który umożliwia nawiązanie bezpiecznego połączenia między tymi środowiskami a chmurą Mabl. Składa się on z dwóch elementów:
- Link Agent,
- Link Service.
Poniższy diagram pokazuje ruch między poszczególnymi elementami tej funkcjonalności.
Integracje
Jednym z głównych założeń Mabl jest ułatwienie wdrożenia testowania do organizacji. Kryje się za tym łatwość w tworzeniu integracji z innymi narzędziami, które są najczęściej używane i powiązane z wytwarzaniem oprogramowania lub z samym testowaniem. Lista oficjalnych systemów, z jakim Mabl jest zintegrowany, cały czas jest poszerzana o nowe pozycje. Zespół odpowiedzialnych za to narzędzi jest otwarty na sugestie dostarczane przez społeczność w celu dodania nowych.
Poniżej przedstawię wszystkie dostępne integracje na ten moment:
Oprócz oficjalnych integracji, możliwe jest skorzystanie z Webhooków, które wykonywane są przed i/lub po egzekucji planu testowego. Daje nam to możliwość rozszerzenia przesyłu informacji we własnym zakresie.
Podsumowanie
W artykule zobrazowałem, jak obszernym narzędziem jest Mabl. Omówiłem, w jaki sposób pozwala na redukcję czasu i kosztu związanego z automatyzacją testów. Jest to łatwe do zrozumienia i otwarte narzędzie, dzięki dostępności aplikacji na wszystkich głównych systemach operacyjnych oraz dzięki posiadaniu dedykowanej aplikacji internetowej. Mabl cechuje się szybkością uzyskiwania rezultatów, poprzez możliwość egzekucji bardzo dużej ilości testów równolegle.
Oprócz wyżej wymienionych zalet, Mabl jest rozwiązaniem cechującym się łatwością rozszerzania. Związane jest to z wieloma integracjami jak i dodatkowymi modułami pozwalającymi skonfigurować narzędzie dla swoich potrzeb. Narzędzie to jest w stanie uzyskać wiele możliwych typów analizy systemu podczas uruchamiania testów funkcjonalnych UI i API lub poprzez dedykowane testy niefunkcjonalne.
W kolejnych artykułach przedstawię proces tworzenia poszczególnych typów testów, jak i sposoby do zapewniania sukcesu we wdrożeniu Mabl w procesach organizacji.
Zostaw komentarz