Know-how

Jak zapewniamy najwyższą jakość inżynierską?

Jednym z filarów MakoLab jest zapewnienie jakości. To właśnie tutaj dbamy o to, by dostarczane przez nas rozwiązania cechowały się stabilnością, wysoką wydajnością i wysoką jakością. Nasi inżynierowie QA aktywnie uczestniczą w całym cyklu życia naszych aplikacji – od przygotowania ofert, przez projektowanie i wdrożenie, aż po moment ich uruchomienia. Czuwamy nie tylko nad samym produktem, ale i nad procesem jego dostarczania. W zeszłym roku postanowiliśmy stworzyć własne rozwiązanie QA: MakoLab Automation Framework.

Ważnym elementem naszych procedur QA jest automatyzacja testów. Dzięki niej możemy oszczędzać czas przy cyklicznych działaniach, takich jak choćby czasochłonne sesje testów regresyjnych, a także obejmować zakresem prac, których nie da się przeprowadzić ręcznie, jak testy wydajnościowe i obciążeniowe. Dostarczamy również rozwiązania zautomatyzowane na wielu poziomach: interfejsów API i komunikacji back-end, warstw wizualnych UI i front-end, wydajności aplikacji i usług, bezpieczeństwa oprogramowania oraz web scrapingu.
Każdy projekt realizowany przez firmę jest inny, co oznacza, że opracowanie zestawu testów wymaga za każdym razem kreatywnego podejścia. Dział QA musi tworzyć własne rozwiązania, co z kolei może prowadzić do braku spójności między projektami oraz trudności w utrzymaniu wysokiej jakości automatyzacji i kodu w całym dziale. To właśnie skłoniło nas do stworzenia własnego narzędzia, które mogłoby pomóc nam rozwiązać ten problem.

MakoLab Automation Framework

MakoLab Automation Framework (MAF) to nasze własne, oryginalne rozwiązanie. Zaprojektowane i napisane w Javie, opiera się na najpopularniejszych bibliotekach dedykowanych do testów automatycznych. Należą do nich Selenium WebDriver, wykorzystywany wraz z naszą własną infrastrukturą oparta na konteneryzacji, a także REST Assured i HtmlUnit, między innymi.
MAF został stworzony jako odpowiedź na bezpośrednie potrzeby zespołu QA MakoLab. Większość problemów, z jakimi się spotykaliśmy, znalazła rozwiązania, które zostały включone do frameworka, eliminując konieczność dalszej analizy.

  • CZAS. Samo rozpoczęcie procesu automatyzacji jest niewątpliwie szybsze. Wszystkie niezbędne elementy, konfiguracje z bibliotekami raportującymi, usługa WebDriver i inne menedżery, są wbudowane, co oznacza, że inżynier testujący musi jedynie pobrać MAF z repozytorium artefaktów i jest gotowy do tworzenia skryptów testowych;
  • STABILNOŚĆ. Wszystkie instrukcje zawarte w MAF zostały odpowiednio zabezpieczone i przetestowane. Potencjalne usprawnienia będą dostępne dla każdego projektu korzystającego z frameworka;
  • STANDARYZACJA. Założenia strukturalne stojące za MAF wymuszają standaryzację zarówno architektury, jak i terminologii w kodzie testów automatycznych;
  • WSPARCIE. Dzięki współpracy całego zespołu, wsparcie techniczne jest większe. Usprawnienia wprowadzone z myślą o jednym projekcie mogą pozytywnie wpłynąć na wszystkie inne;
  • PRZEJRZYSTOŚĆ. Wbudowane biblioteki raportujące oraz integracja z Jenkinsem oznaczają, że każdy test jest przedstawiony w atrakcyjnej, graficznej formie dostępnej dla całego zespołu.

Jeśli powyższe punkty nie w pełni opisują zalety MAF, to porównanie procesu rozpoczynania automatyzacji z frameworkiem i bez niego z pewnością powinno wystarczyć.
Jak wyglądał wcześniejszy proces:

  1. Otwierano nowy projekt.
  2. Pobierano Selenium WebDriver, JUnit/TestNG, AssertJ i inne biblioteki.
  3. Tworzono struktury menedżerów i narzędzi.
  4. Implementowano wszystkie niezbędne klasy konfiguracyjne.
  5. Zaczynano implementację testów; jednocześnie każdą instrukcję trzeba było ponownie zaprojektować i zaimplementować.

Dla testera na poziomie średnim stworzenie takiej bazy do testów oznaczało co najmniej kilka dni pracy.
Jak wygląda proces teraz:

  1. Otwierany jest nowy projekt.
  2. MAF jest pobierany z Nexus.
  3. Zaczyna się implementacja testów, wykorzystująca gotowe, zabezpieczone metody z MAF. Koniec z StaleElementReferenceException!

Dla testera na poziomie średnim oznacza to maksymalnie trzydzieści minut pracy, o ile ma dostęp do szerokiego zakresu gotowych i przetestowanych instrukcji.

MAF Easy

A co z osobami, które chciałyby zacząć pracę z automatyzacją, ale nie posiadają odpowiedniego poziomu wiedzy technicznej i umiejętności programistycznych, by korzystać z frameworka? Właśnie w tym celu powstał moduł MAF Easy. Easy MakoLab Automation Framework to bardziej przystępna forma narzędzia do automatyzacji, przeznaczona dla osób mniej zaawansowanych technologicznie. Easy wykorzystuje metodę zastosowaną w MAF, odtwarzając ją w sposób bardziej zrozumiały dla każdego testera, nawet takiego, który wcześniej nie miał żadnej styczności z automatyzacją. Tworzenie skryptów testowych w Easy porównaliśmy do budowania konstrukcji z klocków. W tym przypadku klockami są gotowe do użycia komponenty, które należy umieścić w skryptach.
Główne cechy modułu MAF Easy to:

  • wbudowane komponenty odpowiedzialne za metody testowania warstw UO i API;
  • wbudowane usługi raportowania Cucumber i Allure. Inżynier ds. jakości nie musi nawet wywoływać hooków — każda akcja przed- i potestowa jest wywoływana automatycznie;
  • moduł jest zintegrowany z Jenkinsem i posiada wbudowaną usługę wielowątkową;
  • wbudowana usługa asercji jest wyposażona w łatwe do zrozumienia metody;
  • automatyzację można rozpocząć jeszcze szybciej, co czyni Easy doskonałym rozwiązaniem nie tylko dla mniej doświadczonych pracowników, ale też dla mniejszych projektów, w których potrzebne są bardzo szybkie rezultaty. Easy wymaga niewiele więcej czasu niż „przeklikanie” testów np. w Selenium IDE czy Katalon, a jednocześnie zapewnia większą stabilność i lepszą integralność z naszymi rozwiązaniami.

Różnice w korzystaniu z MAF i modułu MAF Easy

Z punktu widzenia inżyniera ds. jakości wybór między MAF a Easy to kwestia indywidualna; wszystko zależy od kontekstu i konkretnych potrzeb.
Widoczne korzyści wynikające z korzystania z Easy to:

  • brak konieczności posiadania szerokiej wiedzy programistycznej;
  • możliwość uzyskania widocznych rezultatów jeszcze szybciej;
  • jest to podzbiór MAF. W rzeczywistości wykorzystuje około 60% gotowych do użycia instrukcji MAF, zabezpieczonych i opakowanych w metody, tak by ich stosowanie było jak najbardziej intuicyjne.

Warto jednak wziąć pod uwagę kilka ograniczeń:

  • MAF Easy nie jest tak elastyczny jak czysty MAF. Jeśli chcesz wprowadzać radykalne modyfikacje lub przebudowywać poszczególne zdarzenia, zalecamy korzystanie z MAF;
  • MAF zawiera instrukcje, które nie są wykorzystywane w Easy, ale mogą okazać się kluczowe w projekcie, który nie jest jeszcze zautomatyzowany.

Poniżej przedstawiono przykład użycia instrukcji MAF Easy:

Zrzut ekranu MakoLab Automation Framework

Plan rozwoju

MAF jest stale rozwijany — dodawane są nowe funkcje i możliwości, a plany jego dalszego rozwoju zostały nakreślone na dużą skalę. Najważniejsze z planowanych usprawnień to:

  • dodanie usług kolejnych bibliotek, umożliwiających testowanie coraz bardziej zaawansowanych projektów i funkcji;
  • dodanie wsparcia dla BrowserStack;
  • dodanie modułu do testowania aplikacji mobilnych: umożliwiającego testowanie aplikacji na obu wiodących systemach operacyjnych, czyli Android i iOS;
  • aktualizacje w zakresie nowych technologii.

Jeśli interesujesz się testowaniem, procesami kontroli jakości i tworzeniem oprogramowania i chciałbyś dołączyć do naszego zespołu, zajrzyj do sekcji Kariera, sprawdź aktualne oferty pracy i wyślij nam swoją aplikację!

Udostępnij
12th April 2021
5 Czas czytania
Udostępnij
Autor(zy)

Jakub Konicki

Starszy inżynier QA

Karol Opitz

Inżynier QA

W tym artykule

Więcej wpisów Insights