how implement efficient test automation agile world
Automatyzacja w Agile jest bardzo krytyczna.
Pomyśl o wielu funkcjach, które są dodawane i dostarczane w każdym Sprincie. Musi istnieć sposób, aby upewnić się, że nowo dodana funkcja nie wpływa na istniejącą funkcjonalność.
Ze względu na krótki czas trwania Sprintu praktycznie niemożliwe jest wykonanie całego kombinezonu za każdym razem, gdy produkt jest zwiększany na końcu Sprintu. Posiadanie automatycznego kombinezonu testowego z pewnością odgrywałoby tutaj większą rolę.
Jednak wprowadzenie i dojrzewanie automatyzacji zdecydowanie zajęłoby trochę czasu. Początkowa inwestycja w planowanie i projektowanie działań związanych z automatyzacją zdecydowanie przyniosłaby korzyści w dłuższej perspektywie.
W tej trzeciej części serii zaawansowanych testów Agile próbuję przytoczyć kilka wskazówek, które warto rozważyć w oparciu o moje doświadczenie, gdy wprowadzasz automatyzację do swojego projektu.
Przeczytaj także Część 1 i część 2 najpierw lepiej zrozumieć temat.
Czego się nauczysz:
Co zautomatyzować w Agile?
Ilekroć planujemy wprowadzić automatyzację do naszych projektów, większość z nas od razu głosuje na „kombinezon do testów dymu” lub „kombinezon do testów regresji” jako najlepszy kandydat do automatyzacji . Oczywiście, że tak, ale kiedy myślimy o piramidzie testów automatyzacji, możemy wywnioskować, że jest to tylko górna warstwa piramidy, o której mówimy.
Oprócz powyższej warstwy nadal mamy plik warstwa usług i warstwa jednostkowa które są ważniejsze.
pytania i odpowiedzi na rozmowę z oracle tuning performance
Więc jakie testy, poza testami dymu i testami regresji, mogą być dobrymi kandydatami do automatyzacji?
# 1) Kompilacje i wdrożenia
W tradycyjnych środowiskach mamy predefiniowane kompilacje, które mogą odbywać się co tydzień, co dwa tygodnie, a czasem nawet co miesiąc. Jednym z powodów jest to, że te wdrożenia wymagają czasu. Problem z tym podejściem polega na tym, że musimy czekać na predefiniowane daty, aby naprawić błędy lub zaimplementować nowe funkcje, więc występuje opóźnienie.
Drugim powodem było to, że zanim testerzy zakończą testowanie i wymyślą błędy i usterki, programiści przeszli do różnych elementów implementacji i byli mniej zainteresowani rozwiązywaniem błędów starszej aplikacji. Takie podejście opóźnia również czas udostępnienia funkcji w produkcji.
Budowanie i wdrożenia to elementy, które są powtarzalne i czasami nudne. Wdrożenie kompilacji może również zająć godziny, co opóźnia testowanie i ostatecznie informację zwrotną. Ponieważ jest to powtarzalne zadanie, wdrożenia stają się dobrym kandydatem do automatyzacji.
Przeczytaj także=> Proces zarządzania wersjami i wdrożeniami
Oto kilka zalet automatycznego wdrażania kompilacji:
c ++ poczekaj kilka sekund
- Brak możliwości popełnienia błędów podczas wdrażania (można uniknąć błędów ludzkich, takich jak skopiowanie niewłaściwego pliku lub skopiowanie pliku do niewłaściwej lokalizacji)
- Błędy / funkcje są dostępne do testowania, gdy tylko zostaną naprawione
- Testerzy mają więcej czasu na testowanie
- Funkcja jest gotowa do przeniesienia do produkcji w krótszym czasie
- Szybka informacja zwrotna
# 2) Testy jednostkowe / testy komponentów
Mówiłem już o znaczeniu automatyzacji warstwy jednostkowej przy użyciu Podejście TDD w moim ostatnim tutorialu .
Tworzy to najniższą warstwę piramidy, stąd fundament i wszelkie fundamenty muszą być solidne jak skała. Zespół programistów powinien współpracować i współpracować, aby uwzględnić większość testów w tej warstwie.
# 3) Testowanie API / usług internetowych
Usługi internetowe to medium, w którym dwie aplikacje wymieniają dane lub informacje w zakresie żądań i odpowiedzi, bez zawracania sobie głowy architekturą lub technologią. Mówiąc prościej - wysyłanie żądania i weryfikacja odpowiedzi jest tym, co zwykle robimy podczas testowania usług internetowych.
Testowanie usług internetowych pociąga za sobą pisanie programów wywołujących te metody usług sieciowych i sprawdzanie wartości zwracanych przez nie. Możemy nawet przetestować usługi pod kątem różnych permutacji i kombinacji. Miej wszystkie dane testowe w arkuszu Excela, a Twój program może odczytać dane i wywołać usługę testowalną, przekazując dane testowe jako parametr i weryfikując wyniki.
Ten konkretny test jest częścią środkowej warstwy piramidy. Większość testów funkcjonalnych można przenieść do tej warstwy. Usuwanie usterek, które pojawiają się w tej warstwie, staje się łatwe do naprawienia i nie są one odkładane do czasu udostępnienia interfejsu użytkownika.
# 4) Testowanie za GUI
Automatyzacja testów za GUI jest stosunkowo łatwiejsza niż automatyzacja faktycznego GUI. Kolejną zaletą jest to, że niezależnie od zmian interfejsu użytkownika, funkcjonalność pozostaje nienaruszona. Nawet jeśli część elementu interfejsu użytkownika zostanie zmieniona, funkcjonalność tej funkcji nie ulegnie zmianie. Ta technika koncentruje się głównie na logice biznesowej i regułach.
Przypadki testowe są w większości napisane w formacie tabelarycznym lub w arkuszu kalkulacyjnym, a urządzenia / fragmenty kodu są zapisywane, które akceptują dane wejściowe z tych tabel i zwracają wyniki. Wyniki są generowane natychmiast i stanowią doskonałą platformę dla nietechnicznych interesariuszy do przeprowadzania tych testów i uzyskiwania oczekiwanych wyników. Jednym z narzędzi wykorzystywanych do osiągnięcia tej techniki jest Zdatność .
# 5) Testowanie niefunkcjonalne
To niefunkcjonalna technika testowania zasadniczo obejmuje testy obciążenia, wydajności i obciążenia. Na rynku są łatwo dostępne różne narzędzia, które można wykorzystać do zautomatyzowania tych testów.
# 6) Porównania danych
Wiele naszych testów wymaga od nas porównania plików danych, w tym plików tekstowych, plików CSV lub Excel
- Pliki te można porównać z poziomami bazowymi w celu weryfikacji danych
- Porównania mogą dotyczyć tych samych danych, ale mogą mieć inny format. Zasadniczo dzieje się tak, gdy mamy dwa takie same pliki wygenerowane z dwóch różnych źródeł
Te porównania mogą być powtarzalne, a zatem zautomatyzowane.
# 7) Wyszukiwanie
Poszukiwanie konkretnej jednostki z dużej liczby plików może być również żmudne, a Bóg pomaga nam, jeśli jest to powtarzalne zadanie. Jednym z przykładów jest przeszukiwanie plików dziennika. Jeśli jest to również żmudne i powtarzalne zadanie, powinniśmy pomyśleć o jego automatyzacji.
# 8) Powtarzalne zadania
Każde zadanie zaczynające się od interakcji z użytkownikami końcowymi lub pisania historii, aż do ich opracowania, jeśli jest powtarzalne, powinno zostać uwzględnione w automatyzacji. Powinniśmy zrozumieć, że robienie automatyzacji nie oznacza, że musi być w to zaangażowane wyrafinowane narzędzie / technologia. Może to być proste makro VB lub program Java z JavaScriptem, aby rozwiązać cel.
Gdzie zacząć?
Nie ma wypunktowań ani przewodnika krok po kroku, który mówi, od czego zacząć automatyzację. Uruchomienie automatyzacji dla zespołu wymaga przeprowadzenia burzy mózgów i głębokiego przemyślenia, jakie aspekty chcesz zautomatyzować lub jaki jest ostateczny cel automatyzacji?
Możesz zacząć od:
- Identyfikacja powtarzalnych zadań,
- Identyfikacja obszarów bólowych aplikacji
- Identyfikacja wyzwań testowych
Jeśli nie masz automatyzacji w projekcie / zespole wycieczki, prawdopodobnie możesz wybrać podejście wielowarstwowe, w którym testy jednostkowe można najpierw zautomatyzować. To zapewni najwyższy zwrot z inwestycji.
Jednocześnie testerzy mogą rozpocząć pracę nad kombinezonem do dymienia, a następnie regresją. Gdy zespół zdobędzie umiejętności i poczuje się komfortowo, stopniowo przechodź w kierunku automatyzacji innych powtarzalnych zadań.
Nie przechodź bezpośrednio do zakupu nowego narzędzia bez oceny swoich potrzeb. Jak powiedziałem wcześniej, prosty program lub makro może rozwiązać cel automatyzacji niektórych powtarzalnych zadań. Dlatego przed podjęciem decyzji o zakupie narzędzia zrób POC i ocenić, czy to narzędzie będzie skuteczne w użyciu.
Zapoznaj się z tymi dokumentami, w których podałem więcej szczegółów na temat wybierania prawidłowych przypadków testowych do automatyzacji i kilka wskazówek na temat szacowania wysiłków związanych z automatyzacją w poniższych artykułach podręcznik do wyzwań związanych z procesem testowania automatyzacji i testowe oszacowanie projektu automatyzacji selenu.
Po sfinalizowaniu zakresu automatyzacji i narzędzia, następnym etapem jest zaprojektowanie frameworka.
Pamiętaj, że w Agile framework ewoluuje. NIE koncentruj się najpierw na projektowaniu całego frameworka, a następnie implementowaniu. Zaprojektuj i zaimplementuj dla MVP (Minimum Viable Product), a następnie ulepsz istniejącą strukturę, aby uwzględnić więcej funkcji. Jeśli chcesz, aby Twój pakiet automatyzacji był niezawodny, musisz również zastosować dobre praktyki w zakresie kodowania i programowania.
Niektóre sprawdzone metody
- Nie dąż do automatyzacji 100% za jednym razem. Zacznij od czegoś małego. Pamiętaj, że to ewoluujący proces
- Postępuj zgodnie z tymi samymi praktykami Agile, których przestrzegasz przy tworzeniu oprogramowania. Automatyzacja wymaga również odpowiedniego planowania i projektowania. Nie chciałbyś zwiększać swoich długów technicznych podczas automatyzacji
- Utwórz rejestr automatyzacji testów. Te zaległości mogą obejmować wdrażanie nowej funkcji lub ulepszanie istniejącej funkcji. Daj punkty fabularne zidentyfikowanym przedmiotom i odpowiednio je przypisz. Zabierz te elementy rejestru do swojego Sprintu i śledź je za pomocą tablicy Kanban
- Napisz kryteria akceptacji dla swoich historii automatyzacji. Te kryteria akceptacji mogą obejmować:
- Integracja zestawu testów z CI
- Przenoszenie skafandra do scentralizowanej lokalizacji
- Wyślij wyniki e-mailem
- Możliwość wysyłania plików dziennika błędów, gdy test się nie powiedzie
- Wszelkie inne kryteria…
- Nie marnuj czasu na ocenę nowego narzędzia. Możesz utworzyć listę kontrolną z priorytetami, zawierającą wszystko, czego chcesz od nowego narzędzia i określić harmonogram oceny. Jeśli nie zobaczysz swoich wyników w przewidzianym czasie, przejdź do następnego
- Podejmij rozsądną decyzję, co zautomatyzować. Nie każdy element automatyzacji jest skuteczny i zapewnia dodatni zwrot z inwestycji. Nie wykonuj automatyzacji tylko ze względu na automatyzację
- Skorzystaj z odpowiedniego środowiska programistycznego. Nie przechowuj kodu lokalnego. Miej repozytorium do przechowywania kodu i nawyk sprawdzania go pod koniec dnia
- W podobny sposób spróbuj wykonać testy automatyczne ze scentralizowanej lokalizacji. Uczyń go niezależnym. Powinno być tak, że każdy z zespołu może uruchamiać skrypty ze swojego komputera, a wyniki są otrzymywane pocztą elektroniczną
Jakie zasady zwinne można zastosować do automatyzacji?
Kilka bardzo prostych wskazówek:
- Zachowaj prostotę. Rób, co trzeba. Widziałem wiele przypadków, w których dostarczamy wdrożenia w cukrze, co niepotrzebnie komplikuje automatyzację. Unikajmy rzeczy, które nie są potrzebne
- Robienie prostych rzeczy nie oznacza robienia najłatwiejszych rzeczy. Oznacza to podjęcie małych kroków w celu osiągnięcia celów automatyzacji. Możesz skorzystać z prostej funkcji do automatyzacji, ale może się zdarzyć, że wdrożenie automatyzacji okaże się skomplikowane
- Zastosuj podejście całego zespołu . Uważam, że każdy jest testerem w zwinnym zespole. Nie ograniczajmy zadania automatyzacji ani tylko do testerów, ani tylko do programistów. Każda z dyscyplin musi stawić czoła sobie nawzajem, aby osiągnąć automatyzację projektu. Takie podejście byłoby również skuteczne w rozwiązywaniu wszelkich problemów technicznych związanych z wdrażaniem
- Framework został rozwinięty w Agile . Nie próbuj udostępniać zbyt wielu funkcji, które mogą niepotrzebnie komplikować element automatyzacji
- Poświęć trochę czasu, aby zrobić to dobrze. Poświęć trochę czasu na odpowiednie zaprojektowanie, aby uniknąć długów technicznych
- Otrzymuj częste opinie
- Stosuj odpowiednie standardy i praktyki kodowania. Projekt powinien być prosty, stosować koncepcje OOPS i starać się, aby testy były od siebie niezależne. Rozważ takie czynniki, jak „konserwowalność” kombinezonu testowego
Czy widzę jakieś wyzwania podczas automatyzacji w Agile?
Automatyzacja w świecie Agile przychodzi własne wyzwania :
w której fazie cyklu życia systemu wykonywane są testy oprogramowania
- Musimy naprawdę dobrze zaplanować. Decydowanie o odpowiednim zestawie testów, narzędziu, frameworku i podejściu wymaga odpowiedniej strategii. Należy jednak pamiętać, aby NIE przekroczyć planu. Pamiętaj o MVP (Minimal Viable Product)
- Kompromis w kwestii jakości kodu, ponieważ chcemy dostarczać szybko: musimy pamiętać, że długi techniczne dobrze sprawdzają się również w automatyzacji
- Zespoły przez większość czasu nie stosują się do „podejścia całego zespołu” i pozostawiają pełną odpowiedzialność za kodowanie i utrzymanie automatycznego zestawu testerów, co zwiększa odpowiedzialność testerów
- Automatyzacja testów funkcjonalnych jest trudniejsza niż automatyzacja interfejsu użytkownika
Spośród wszystkich tych wyzwań najbardziej krytycznym wyzwaniem jest doskonalenie umiejętności testerów.
Wykonywanie i utrzymywanie automatyzacji dla zespołu jest prawie jak czynności programistyczne (programistyczne), które wykonują programiści (programiści). Nie tylko implementacja, ale także integracja zautomatyzowanego kombinezonu z CI jest ważna i wymaga od testerów uczenia się i przyswajania nowych umiejętności oraz poznawania nowych narzędzi i technologii.
Niektóre narzędzia Open Source, które pasują do Agile
- Selenium WebDriver - W przypadku interfejsu użytkownika
- Siatka selenu - Do wykonywania równoległego
- Ogórek - dla BDD
- JMeter - Do testów wydajności
- MYDŁO - W przypadku usług internetowych
- WireMock - testowanie usług internetowych, gdy usługa sieciowa jest niedostępna.
- Epoki - dla telefonów komórkowych
Zakończę słynnymi kwadrantami testów Agile:
Kwadrant 1 to jednostka i test komponentów, który można zautomatyzować dzięki podejściu TDD.
Kwadrant 2 mówi o testowaniu funkcjonalności, gdzie możemy zastosować podejście BDD.
Kwadrant 3 jest jedynym kwadrantem, który obejmuje zakres testów ręcznych.
Kwadrant 4 w zasadzie mówi o testowaniu, które można przeprowadzić za pomocą niektórych narzędzi. Dotyczy to testów obciążenia, testów obciążeniowych, testów objętościowych i testów bezpieczeństwa.
Wniosek
Poza testami dymu i testami regresyjnymi jest wiele możliwości automatyzacji. Dlatego musimy uwolnić się od koncepcji ograniczania automatyzacji tylko do tego typu testów, co z kolei oznacza, że umiejętności testera w Agile wymagają czegoś więcej niż tylko znajdowania błędów i defektów.
Testerzy muszą bardziej współpracować i doskonalić swoje umiejętności programowania / automatyzacji. Gdyby coraz więcej testów było zautomatyzowanych, dałoby to testerom więcej czasu na zaangażowanie się w bardziej wyrafinowane i wymagające zadania.
O autorze: Ten artykuł jest autorstwa Shilpy, członka zespołu STH. Od ponad 10 lat zajmuje się testowaniem oprogramowania w takich dziedzinach, jak reklama internetowa, bankowość inwestycyjna i telekomunikacja.
Podziel się swoimi komentarzami i przemyśleniami poniżej.
rekomendowane lektury
- Samouczek AutoIt - pobieranie, instalacja i podstawowy skrypt AutoIt AutoIt
- Czy testerzy tracą przyczepność podczas testowania z powodu automatyzacji?
- Wyzwania związane z testowaniem ręcznym i automatycznym
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)
- 10-etapowy proces testowania automatyzacji: Jak rozpocząć testy automatyczne w Twojej organizacji
- Czy jesteś ekspertem w testowaniu ręcznym lub automatycznym? Pracuj dla nas na pół etatu!
- 11 najlepszych narzędzi automatyzacji do testowania aplikacji na Androida (narzędzia do testowania aplikacji na Androida)
- 10+ najlepszych książek o testowaniu oprogramowania (książki o testowaniu ręcznym i automatyzacji)