Jak Etteplan został partnerem dla automatycznych testów dzięki bogatemu doświadczeniu i wiedzy w obszarze QA i DevOps?
Chcesz szybko i wiarygodnie przetestować najnowszą wersję aplikacji i zapewnić wysoki oraz stabilny poziom swojego produktu dla użytkowników końcowych? Stworzyliśmy nowoczesne środowisko do automatycznego testowania regresji w chmurze. Dowiedz się jak krok po kroku do tego dochodziliśmy.
Wprowadzenie
W 2018 roku skontaktowała się z nami firma, z którą współpracowaliśmy już od 2 lat. Klient szukał rozwiązania gwarantującego wysoką jakość aplikacji webowej, jednego ze swoich stale rozwijanych i udoskonalanych produktów, aby sprostać oczekiwaniom użytkowników końcowych. Aplikacja ta jest używana przez inżynierów i techników, którzy budują i utrzymują sieci bezprzewodowe z wykorzystaniem urządzeń produkowanych przez klienta. Każdorazowa aktualizacja i kolejne wypuszczane wersje oprogramowania wymagały testów, co stanowiło regularne wyzwanie czasowe i finansowe dla zespołu, które było związane z manualnym przetestowaniem aplikacji na oczekiwanym, wysokim poziomie. Stąd też potrzeba, aby znaleźć godnego zaufania i doświadczonego partnera w obszarze Quality Assurance,
który zaprojektuje, wdroży i utrzyma środowisko automatycznych testów regresyjnych. To właśnie Etteplan został wybrany na dostawcę tych usług, ze względu na wiedzę domenową oraz wieloletnie doświadczenie w obszarze QA i DevOps.
Potrzeby biznesowe
Kluczowym celem klienta było zbudowanie środowiska automatycznych testów regresyjnych pokrywających kluczowe funkcjonalności aplikacji webowej. Mieliśmy możliwość zaprojektowania i zbudowania go od podstaw (wspomagając się jedynie istniejącymi scenariuszami testowymi dla testów manualnych). Klient zaufał naszemu doświadczeniu oraz wiedzy powierzając nam utworzenie i utrzymanie stabilnego, wiarygodnego i przyjaznego kosztowo środowiska.
Rozwiązanie
Pierwsze kroki
Zaczęliśmy od podstaw, zweryfikowaliśmy i oceniliśmy zastałą sytuację,
a następnie dzięki wielu rozmowom z klientem poznaliśmy ich wymagania
i oczekiwania. Pierwsza instancja środowiska regresyjnych testów automatycznych została zbudowana i hostowana wewnątrz firmy Etteplan
z dedykowanym serwerem Jenkins-owym, który zarządzał całą regresją. Każda nowa wersja aplikacji, wgrywana automatycznie na zasób sieciowy wyzwalała uruchomienie regresji. W połowie 2019 osiągnęliśmy satysfakcjonujący poziom pokrycia testami kluczowych elementów aplikacji
i przeszliśmy z fazy rozwoju do utrzymania środowiska.
Kolejnym krokiem, który zaproponowaliśmy i wdrożyliśmy było przeniesienie środowiska testów regresyjnych do chmury. Mimo, że środowisko nie było przesadnie rozbudowane
i skomplikowane, wymagało to administracji i zaangażowania wielu osób. Dlatego też zdecydowaliśmy się na optymalizację tych elementów.
Rozważaliśmy trzech wiodących na rynku dostawców usług w chmurze. Kluczowymi elementami, które braliśmy pod uwagę przy wyborze były:
- zakres oferowanych usług,
- obecne referencje,
- intuicyjny w obsłudze portal,
- koszty.
Mieliśmy dość precyzyjnie zdefiniowane oczekiwania co do potrzebnych usług. Opieraliśmy się na istniejącym środowisku zbudowanym wewnątrz naszej firmy, ale wprowadziliśmy kilka istotnych usprawnień.
Wynik naszej analizy wskazał platformę Azure jako najbardziej adekwatną do naszych oczekiwań. Uzyskała najwięcej punktów, a dodatkowym czynnikiem utwierdzającym nas w wyborze był fakt, że usługi Azure były już wykorzystywane w innym dziale firmy naszego klienta.
Migracja do chmury
Na początku 2020, rozpoczęliśmy projekt migracji do chmury. Naszym planem było zaprojektowanie efektywnego kosztowo środowiska bazującego na już istniejącym rozwiązaniu
i uruchomieniu go w chmurze. Proces przenoszenia uwzględniał następujące kroki:
- konfiguracja elementów środowiska,
- konfiguracja Jenkins-a,
- migracja jobów Jenkins-owych,
- utworzenie wirtualnej maszyny testowej z Win10,
- instalacja Chrome i wyłączenie automatycznej aktualizacji,
- instalacja Python3.7/Seleniu/RF — wykorzystywanych do uruchomienia testów,
- konfiguracja sieci.
Wysokopoziomowa architektura nowego środowiska wygląda następująco:
Wszystkie wykonane zadania można pogrupować w następujące aktywności:
1. Azure — w ramach jednej Resource Group-y utworzyliśmy:
- Dwie VM-ki utworzone i skonfigurowane:
— Linux — główna VM-ka służąca jako serwer Jenkins-a
— Win10 — Maszyna testowa z skonfigurowanym Jenkins agent, uruchamiana i wykorzystywana jedynie podczas wykonywania testów regresyjnych (pay-as-you-go) - Skonfigurowanie interfejsów sieciowych — połączenia wychodzące
i przychodzące jedynie do sieci klienta i Etteplan - Utworzenie Storage account — dysku do przechowywania najnowszych wersji aplikacji
- Dostarczenie innych usług, takich jak: Public IP address, Network Security Group, Routing Table, Virtual Network.
2. Jenkins
- Konfiguracja
— Zaimportowanie Jobów z oryginalnego Jenkins-a zlokalizowanego
w Etteplan
— Utworzone kont dostępów z różnymi poziomami uprawnień:
admin i tester
— Wygenerowanie tokenów do inicjowania akcji (metoda POST)
— Skonfigurowanie access log - Modyfikacja Job-ów
— Kopiowanie do Jenkinsa z zasobu dyskowego utworzonego na chmurze plików z najnowszymi wersjami aplikacji.
— VM (Win 10) jest obecnie uruchamiany tuż przed rozpoczęciem wykonywania regresji i wyłączany tuż po jej wykonaniu, aby obniżyć koszty użytkowania środowiska (pay-as-you-go)
3. Ustawienie regresji
- Harmonogram wykonania regresji nie zmienił się, krótka regresja uruchamiana jest natychmiast po wgraniu najnowszej wersji aplikacji na dysk w chmurze, natomiast długa regresja jest wykonywana co noc na najnowszym dostępnym pliku;
- Ustawiliśmy notyfikacje mailową, która wraz z rezultatami wysyłana jest do zainteresowanych osób po każdym wykonaniu regresji;
- Dostępy do Jenkins-a nadajemy również dla zespołu klienta w celu weryfikacji szczegółów wykonania regresji.
Po płynnej migracji z poprzedniego środowiska na chmurę, kontynuowaliśmy wsparcie testów automatycznych na chmurze, skupiając się na rozwijaniu kolejnych scenariuszy testowych.
Wrażenia z codziennego użytkowania Azure
Po blisko roku korzystania z usług Azure możemy stwierdzić, że decyzja o migracji na chmurę była słuszna, mimo iż środowisko, które zbudowaliśmy jest relatywnie proste i nieskomplikowane. Cele biznesowe klienta zostały
w pełni osiągnięte. Najistotniejszymi korzyściami są:
- Dostępne 24h/7 stabilne środowisko, które nie wymaga angażowania wewnętrznych pracowników firmy do administracji serwerem i siecią;
- Łatwy dostęp do wszystkich usług, dzięki czytelnemu interfejsowi — Azure Portal;
- Przewidywalne i niskie miesięczne koszty;
- Optymalizacja kosztów dzięki modelowi pay-as-you-go:
- Win10 VM jest uruchamiana tylko na czas wykonywania regresji
- Możliwość wyłączenia środowiska podczas sezonowych przerw,
gdy development aplikacji, a co za tym idzie konieczność testów regresyjnych jest wstrzymamy (np. miesięczna przerwa wakacyjna)
W rezultacie klient posiada obecnie nowoczesne środowisko do wykonywania automatycznych testów regresyjnych. Dzięki temu jest w stanie szybko
i wiarygodnie przetestować najnowszą wersję aplikacji i zapewnić wysoki oraz stabilny poziom swojego produktu dla użytkowników końcowych.