automated regression testing
Ten samouczek wyjaśnia wyzwania związane z automatycznym testowaniem regresji. Dowiemy się również o procesie i krokach automatyzacji testów regresyjnych:
Dowiemy się, jak zautomatyzować regresyjne przypadki testowe, zaczynając od ich identyfikacji, wyboru narzędzia do automatyzacji, analizy kosztów, czasu i wysiłku, pisania skryptów i wreszcie dostarczenia do zespołu testerów manualnych, aby mogli wykonać przypadki testowe z dowolnego miejsca w dowolnym czasie.
Jeśli zastanawiasz się, dlaczego tylko zestaw testów regresji, to dlatego, że zestaw testów regresji jest głównym kandydatem do automatyzacji, ponieważ jest to zestaw przypadków testowych, które są powtarzalne i zajmują dużo czasu. W związku z tym ich automatyzacja rzeczywiście zaoszczędziłaby wiele zasobów i byłaby mniej czasochłonna.
Otrzymasz szybkie raporty na temat przypadków testowych regresji i możesz użyć tych kroków do zautomatyzowania innych zestawów testów.
=> Kliknij tutaj, aby zobaczyć pełną serię testów regresji.
Czego się nauczysz:
- Zautomatyzowane testy regresji
- Testowanie automatyczne: wyzwania w środowisku zwinnym
- Kroki prowadzące do automatyzacji testów regresji
- Wniosek
Zautomatyzowane testy regresji
Niedawno, gdy chciałem rozpocząć swój nowy projekt testów automatycznych z czterema zasobami, pomyślałem o zastosowaniu jednej z metodologii Agile. Ale nie mogłem kontynuować, ponieważ w mojej głowie pojawiła się seria pytań.
Pytania brzmiały:
- Czy możliwe jest wykorzystanie metodologii Agile w testowaniu automatycznym?
- Czy mogę używać tradycyjnych narzędzi?
- Czy powinienem korzystać z narzędzi open source?
- Jakie są wyzwania, z którymi muszę się zmierzyć, jeśli wdrażam automatyzację w środowisku zwinnym?
W tym artykule przeanalizujmy niektóre z wyzwań, przed którymi stoimy podczas wdrażania automatyzacji z metodologiami Agile. Zautomatyzowane testy regresyjne w środowisku Agile mogą stać się chaotyczne, nieustrukturyzowane i niekontrolowane.
Projekty Agile przedstawiają własne wyzwania zespołowi Automation. Metodologia Agile kładzie nacisk na współpracę zespołową i częste dostarczanie produktu. Czynniki takie jak niejasny zakres projektu, wielokrotne iteracje, minimalna dokumentacja, wczesne i częste potrzeby w zakresie automatyzacji oraz aktywne zaangażowanie interesariuszy itp. Wymagają od zespołu automatyzacji wielu wyzwań.
Testowanie automatyczne: wyzwania w środowisku zwinnym
Istnieje kilka wyzwań Agile dla zespołu Automation. Jednak plik kilka z nich zostało opisanych poniżej.
Wyzwanie 1:Faza wymagań
Programista Test Automation rejestruje wymagania w postaci „historyjek użytkownika”, które są krótkimi opisami funkcji istotnych dla klienta.
Każde wymaganie musi mieć następujący priorytet:
Wysoki: Są to krytyczne wymagania, które bezwzględnie należy spełnić w pierwszej wersji
Średni: Są to wymagania, które są ważne, ale można je obejść, dopóki nie zostaną wdrożone.
Niska: Są to wymagania, które są przyjemne, ale nie mają krytycznego znaczenia dla działania oprogramowania.
Po ustaleniu priorytetów planowane są „iteracje” wydania. Zwykle każda iteracja wydania Agile zajmuje od 1 do 3 miesięcy. Klienci / pracownicy oprogramowania mogą wprowadzać zbyt wiele zmian w wymaganiach. Czasami te zmiany są tak niestabilne, że powtarzają się iteracje. Te zmiany są większym wyzwaniem we wdrażaniu procesu testowania Agile Automation.
konwerter youtube na mp4 dla Androida
Wyzwanie 2:Wybór odpowiednich narzędzi
Tradycyjne, testowe narzędzia z funkcjami nagrywania i odtwarzania zmuszają zespoły do czekania, aż oprogramowanie zostanie ukończone. Co więcej, tradycyjne narzędzia do automatyzacji testów nie działają w kontekście Agile, ponieważ rozwiązują tradycyjne problemy, które różnią się od wyzwań stojących przed zespołami Agile Automation.
Automatyzacja na wczesnych etapach projektu zwinnego jest zwykle bardzo trudna, ale w miarę jak system rośnie i ewoluuje, niektóre aspekty są ustalane i właściwe staje się wdrożenie automatyzacji. Dlatego wybór narzędzi testowych staje się kluczowy dla czerpania korzyści z wydajności i jakości płynących z agile.
Wyzwanie 3:Faza rozwoju skryptu
Testerzy automatyzacji, programiści, analitycy biznesowi i interesariusze projektu wspólnie uczestniczą w spotkaniach inauguracyjnych, podczas których „Historie użytkowników” są wybierane do następnego sprintu. Wybrane do sprintu „Historie użytkowników” służą jako podstawa zestawu testów.
Wraz ze wzrostem funkcjonalności z każdą iteracją należy przeprowadzić testy regresyjne, aby upewnić się, że wprowadzanie nowych funkcji w każdym cyklu iteracji nie wpływa na istniejącą funkcjonalność. Plik skali testów regresji rośnie z każdym sprintem i zapewnia, że pozostaje to wykonalne zadanie, a zespół testowy korzysta z automatyzacji testów dla zestawu regresji.
Wyzwanie 4:Zarządzanie zasobami
Podejście zwinne wymaga połączenia umiejętności testowania, to znaczy zasobów testowych będą wymagane do zdefiniowania niejasnych scenariuszy i przypadków testowych, Testowanie ręczne wraz z programistami piszesz automatyczne testy regresji i wykonujesz pakiety automatycznej regresji.
W miarę postępów projektu wymagane będą również specjalistyczne umiejętności, aby objąć dalsze obszary testowe, które mogą obejmować integrację i testy wydajnościowe.
Powinna istnieć odpowiednia mieszanka specjalistów dziedzinowych, którzy planują i zbierają wymagania. Wyzwaniem w zarządzaniu zasobami jest sprawdzenie zasobów z wieloma umiejętnościami i przydzielenie ich.
Wyzwanie 5:Komunikacja
Musi istnieć dobra komunikacja między Testowanie automatyczne zespół, programiści, analitycy biznesowi i interesariusze. Pomiędzy klientem a zespołami wykonawczymi musi istnieć silna współpraca. Większe zaangażowanie klienta oznacza więcej sugestii lub zmian ze strony klienta. A to oznacza większą przepustowość dla komunikacji.
Kluczowym wyzwaniem jest to, aby proces był w stanie wychwycić i skutecznie wdrożyć wszystkie zmiany, a integralność danych musi zostać zachowana. W tradycyjnych testach programiści i testerzy są jak ropa i woda, ale w zwinnym środowisku wyzwaniem jest to, że obaj muszą współpracować, aby osiągnąć cel.
Wyzwanie 6:Codzienne spotkanie Scrumowe
Codzienne spotkania Scrumowe to jedno z kluczowych działań w procesie zwinnym. Zespoły spotykają się na 15-minutowe sesje stania. Jaka jest skuteczność tych spotkań? W jakim stopniu te spotkania pomagają programistom w praktyce automatyzacji? itp. są omawiane na tym spotkaniu.
Wyzwanie 7:Faza wydania
Celem projektu Agile jest jak najszybsze dostarczenie podstawowego działającego produktu, a następnie przejście przez proces ciągłego doskonalenia. Oznacza to, że nie ma jednej fazy wydania produktu. Wyzwaniem są testy integracyjne i testy akceptacyjne produktu.
Kroki prowadzące do automatyzacji testów regresji
Proces automatyzacji regresji można precyzyjnie podzielić na następujące kroki:
Te 7 kroków zostało szczegółowo wyjaśnionych poniżej w prostych słowach, aby ułatwić zrozumienie.
1. Identyfikacja
# 1) Zidentyfikuj przypadki testowe który powinien być częścią zestawu testów regresji.
- Aby rozpocząć automatyzację przypadków testowych regresji, pierwszą rzeczą, którą musisz zrobić, jest zidentyfikowanie i poprawne zdefiniowanie przypadków testowych regresji wraz ze wszystkimi krokami, danymi i wymaganiami wstępnymi.
- Aby upewnić się, że dysponujesz skutecznym zestawem testów regresji, nie zapomnij dołączyć:
- Przypadki testowe z powtarzającymi się defektami.
- Przypadki testowe obejmujące scenariusze od końca do końca.
- Przypadki testowe, które są bardziej widoczne dla użytkowników końcowych.
- Przypadki testowe na wartościach granicznych.
- Dobra mieszanka pozytywnych i negatywnych przypadków testowych.
- Złożone przypadki testowe.
#dwa) Zidentyfikuj narzędzia automatyzacji które najlepiej odpowiadają Twoim wymaganiom i zachowaniu aplikacji. Gdy przypadki testowe regresji zostaną zidentyfikowane i gotowe do automatyzacji, zidentyfikuj narzędzia, które najlepiej pasują do przypadków testowych.
Najlepszym sposobem na zidentyfikowanie narzędzi jest utworzenie macierzy z narzędziami i wymaganiami, a następnie śledzenie, które narzędzie spełnia dane wymagania.
Sugerowana lektura => Lista najlepszych narzędzi do testowania automatyzacji
# 3) Zidentyfikuj Język programowania którego chcesz użyć. Przy tak wielu narzędziach dostępnych na rynku narzędzia te obsługują wiele języków. Dlatego ważne jest, aby zidentyfikować język programowania, w którym chcesz pisać przypadki testowe automatyzacji.
Przykład :Załóżmy, że mamy projekt, w którym chcemy zautomatyzować zestaw testów regresji dla aplikacji opartej na przeglądarce.
Jak wyjaśniono powyżej, zidentyfikujemy przypadki testowe.
- Załóżmy, że nasz przypadek testowy to „Sprawdź, czy użytkownik może pomyślnie zalogować się przy użyciu poprawnej nazwy użytkownika i hasła”.
Następnie zidentyfikujemy narzędzia automatyzacji.
- Przypadek testowy oparty na przeglądarce można zautomatyzować za pomocą „ Selen ',' Ranorex ”,„ TestComplete ”. Zdecydujmy się na narzędzie Selenium, ponieważ najlepiej spełnia ono wymagania.
Teraz zidentyfikujmy język programowania.
- Chcemy używać „ Jawa ”Jako język programowania jako bardzo obsługiwany język.
2. Analiza
# 1) Zrobić Koszt analiza. Bardzo ważne jest, aby pracować w ramach limitów budżetowych. W ten sposób po fazie identyfikacji będziesz miał wyobrażenie, ile przypadków testowych należy zautomatyzować i jakie są możliwe narzędzia, których można użyć.
Wszystkie ustalenia z etapu identyfikacji pomogą Ci w określeniu przybliżonego budżetu, a co za tym idzie, w razie potrzeby możesz uzyskać dowolną zgodę itp.
#dwa) Zrobić zasoby i wysiłek analizy, aby sprawdzić, czy masz zasoby, aby nad tym popracować. Wraz z analizą kosztów bardzo ważne jest przeprowadzenie analizy zasobów i nakładu pracy w celu lepszej alokacji zasobów i efektywnego wykorzystania ich czasu w projekcie.
Szacując zasoby i wysiłki, pamiętaj o uwzględnieniu zagrożeń, takich jak to, czy ktoś zachoruje, czy niektóre przypadki testów wymagają więcej zasobów do wykonania itp.
# 3) Zrobić Czas Analiza. Analiza czasu jest wymagana, aby upewnić się, że możesz zakończyć projekt automatyzacji w ramach budżetu i terminów. Podczas pracy nad analizą czasu pomocne będzie przygotowanie wykresu z osią czasu do monitorowania postępów w trakcie rozwoju.
Aby uzyskać lepszą analizę harmonogramu projektu:
- Zidentyfikuj zadania i podzadania w swoich projektach.
- Priorytetyzuj zadania i podzadania.
- Narysuj wykres Gantta lub diagram sieci, aby lepiej zobrazować oś czasu.
Przykład :Idąc dalej z naszym przykładem z fazy identyfikacji, wyjaśnienie tej fazy jest podane poniżej:
Analiza kosztów:
Załóżmy, że przybliżony koszt tego projektu to kwota X zł.
Zasoby i wysiłek:
W tym celu jeden przypadek testowy musi zostać zautomatyzowany od początku do końca i potrzebujemy jednego zasobu na cały czas około 24 godzin, a także potrzebujemy jeszcze jednego zasobu do przeglądu pracy. Dlatego potrzebujemy 2 zasobów, a oszacowanie wysiłku to około 40 godzin.
Analiza czasu:
W tym celu narysujmy mały wykres Gantta, aby zobaczyć oś czasu.
3. Szkolenie / zatrudnianie
# 1) Jeśli wymagają tego jakieś zasoby trening , a następnie zaplanuj ich szkolenie. Czasami możesz mieć osoby zajmujące się testowaniem ręcznym, które są zainteresowane pisaniem przypadków testowych automatyzacji lub niektóre osoby pracowały nad automatyzacją, ale różnymi narzędziami i chcą nauczyć się narzędzia, które wybrałeś do automatyzacji.
W takim przypadku zidentyfikuj te zasoby i zaplanuj ich szkolenie, aby mogli rozpocząć pracę nad automatyzacją przypadków testowych regresji.
#dwa) Jeśli potrzebujemy więcej zasobów, popracuj nad wynajmowanie plan. Po wykonaniu analizy zasobów dla wysiłków i jeśli nie jesteś w stanie zaspokoić potrzeb za pomocą już dostępnych zasobów, zaplanuj zatrudnienie nowych zasobów z odpowiednimi umiejętnościami, które są wymagane do projektu w ramach budżetu.
Przykład:
Powiedzmy, że mamy już zasób, który jest zaznajomiony z koncepcjami języka Java i chce się uczyć Selenium. Następnie zorganizujemy szkolenie selenu dla tej osoby.
Jeśli nie mamy żadnych zasobów do automatyzacji. Następnie zatrudnimy osobę, która ma doświadczenie w automatyzacji takich przypadków testowych przy użyciu selenu i języka Java.
4. Ramy i wytyczne
# 1) Gdy narzędzie i zasoby będą gotowe, popracuj nad stworzeniem pliku struktura lub decydowanie, którego użyć z istniejących frameworków. Możesz użyć wielu już zbudowanych frameworków lub możesz zbudować swój framework od podstaw.
Wybierając lub budując framework, upewnij się, że używasz komponentów dotyczących, przypadków testowych, dzienników, raportów, danych wejściowych, połączenia z bazą danych itp.
#dwa) Zdecyduj się na drugą narzędzia pomocnicze którego chcesz użyć. Ponieważ tworzenie skryptów automatyzacji jest zadaniem programistycznym, które obejmuje pisanie kodu, znacznie lepiej byłoby znaleźć inne narzędzia programistyczne, które byłyby potrzebne do obsługi pisania skryptów.
Na przykład , Niektóre narzędzia, które mogą być pomocne, to git, GitHub, Jenkins itp.
# 3) Nakreśl wytyczne do pisania skryptów automatyzacji. Konieczne jest nakreślenie wytycznych, tak aby wszystkie zasoby pracujące nad projektem były zsynchronizowane i korzystały z tych samych konwencji nazewnictwa, tych samych procedur rejestrowania / wyrejestrowywania kodu oraz tego samego języka programowania.
najlepsze oprogramowanie do klonowania dysku twardego
Przykład:
Struktura: Zdecydujmy się BDD (programowanie oparte na zachowaniu) do testowania automatyzacji.
Narzędzia pomocnicze: Narzędziami, których potrzebujemy, aby w pełni wspierać automatyzację, będą GitHub, Jenkins, Log4J, Cucumber i JUnit.
5. Skrypty automatyzacji
Zacznij pisać skrypty automatyzacji. Gdy mamy już wszystko, czyli narzędzie, język programowania, wymagane umiejętności i przypadki testowe, które trzeba zautomatyzować, możemy przystąpić do pisania skryptów automatyzacji.
Pisząc scenariusze musimy się upewnić, że:
- Wytyczne są przestrzegane.
- Używamy narzędzi.
- Przypadki testowe są podzielone na moduły.
- Powinniśmy móc ponownie wykorzystać komponenty, jeśli są one wymagane w wielu przypadkach testowych.
Musimy również upewnić się, że kod jest odpowiednio obsługiwany w narzędziu do kontroli wersji, a wszyscy członkowie zespołu mogą łatwo współpracować.
Przykład:
Napiszmy rzeczywiste skrypty, aby uruchomić ten przypadek testowy. Próbkę ze skryptów można wyświetlić jak poniżej.
Po pierwsze, scenariusz ogórka dla tego przypadku testowego wyglądałby jak poniżej:
Funkcja: Sprawdź funkcjonalność logowania
Jako użytkownik chcę się zalogować do aplikacji
Zarys scenariusza: Zaloguj się do aplikacji
Biorąc pod uwagę, że otwieram aplikację
Kiedy wprowadzam nazwę użytkownika „”
I wpisuję hasło „”
I klikam przycisk Zaloguj
Następnie przechodzę do strony głównej
Przykłady:
| nazwa użytkownika | hasło |
| testuser1 | hasło1 |
| testuser2 | hasło2 |
Po pliku funkcji zaimplementujemy definicję kroku dla kroków wymienionych w pliku funkcji.
public class Login { LoginImpl loginImpl = new LoginImpl(); @Given('^I open application$') public void i_open_application() { loginImpl.openURL('URL'); } @When('^I Enter username '((^')*)'$') public void i_Enter_username(String arg1) { loginImpl.enterUserName(arg1); } @When('^I Enter password '((^')*)'$') public void i_Enter_password(String arg1) { loginImpl.enterPassword(arg1); } @When('^I click on Login button$') public void i_click_on_Login_button() { loginImpl.clickLoginButton(); } @Then('^I go to Home page$') public void i_go_to_Home_page() { loginImpl.verifyHomePage(); } }
Ostatecznie rzeczywista implementacja klasy funkcjonalności logowania wyglądałaby jak poniżej:
public class LoginImpl { WebDriver driver; public LoginImpl(){ System.setProperty('webdriver.chrome.driver', 'webdriver/chromedriver.exe'); driver = new ChromeDriver(); } public void openURL(String string) { driver.get(string); } public void enterUserName(String arg1) { driver.findElement(By.id('UserName')).sendKeys(arg1); } public void enterPassword(String arg1) { driver.findElement(By.id('Password')).sendKeys(arg1); } public void clickLoginButton() { driver.findElement(By.id('LoginButton')).click(); } public void verifyHomePage() { String currUrl = driver.getCurrentUrl(); if(currUrl.equals('homePageURL')) { System.out.println('Home page verified'); } } }
6. Recenzja
(wizerunek źródło )
# 1) Przegląd kodu: Gdy programista automatyzacji skończy pisać skrypty automatyzacji, bardzo ważne jest, aby przejść przez różne poziomy przeglądu kodu.
Przeglądy kodu pomagają w
- Rozpoznawanie błędnych weryfikacji.
- Znajdowanie punktów optymalizacji kodu.
- Znalezienie lepszych sposobów implementacji funkcji efektywnego wykorzystania zasobów.
Przeglądy kodu również ujawniają pracę programisty innym programistom i dają jej inną perspektywę oraz pole do ulepszeń.
# 2) Przegląd przypadków testowych: Oprócz przeglądu kodu bardzo ważny jest również przegląd przypadków testowych. Musimy upewnić się, że skrypty testów automatyzacji po wykonaniu wykonują ten sam zestaw działań i weryfikacji, jakich oczekujemy od ręcznych przypadków testowych.
W związku z tym przegląd przypadków testowych automatyzacji z analitykami biznesowymi lub ekspertami testowymi pomaga zwiększyć zaufanie do testowania automatyzacji tych przypadków testowych.
Przykład:
Dla naszego przykładu, powiedzmy, że w przypadku przeglądu kodu otrzymaliśmy komentarze typu „wyszukaj element według identyfikatora, a nie nazwy”. Tutaj weźmiemy to pod uwagę i odpowiednio zmodyfikujemy nasz skrypt.
Można również przeprowadzić przegląd testowy, aby dodać kroki do testowania, jeśli jesteś na stronie głównej po pomyślnym zalogowaniu. Następnie dodalibyśmy to również do naszych skryptów.
7. Dostarcz
Dostarczaj przypadki testowe, aby każdy mógł je uruchomić w dowolnym momencie. Gdy skrypty automatyzacji są gotowe do użycia, bardzo ważne jest, aby opracować plan dostawy skryptów automatyzacji.
Ten plan jest wymagany, ponieważ chcemy mieć pewność, że automatyzacja przypadków testowych nie ogranicza jego wykonania do określonego zestawu osób lub umiejętności. Każdy członek zespołu lub projektu powinien mieć możliwość wykonywania przypadków testowych.
Jednym z możliwych planów dostawy jest zapewnienie zadania Jenkinsa, które można uruchomić w celu wykonania zautomatyzowanych przypadków testowych.
Przykład:
W naszym przypadku załóżmy, że dostarczyliśmy przypadek testowy przy użyciu zadania Jenkinsa. Ta praca Jenkinsa pobiera kod z GitHub, kompiluje go i uruchamia przypadki testowe na innej maszynie.
Gdy zadanie się powiedzie, pokazuje wygenerowany raport z testu. Każdy, kto ma dostęp do Jenkinsa, może wykonać to zadanie. Ponadto to zadanie można zaplanować do wykonania w określonym czasie.
Wniosek
Jeśli potrafimy sprostać tym wyzwaniom w dobrze zoptymalizowany sposób, wówczas automatyczne testy regresyjne w środowisku Agile są doskonałą okazją dla QA do objęcia przywództwa w procesach agile. Jest lepiej przygotowany do wypełnienia luki między użytkownikami a programistami, zrozumienia tego, co jest wymagane, jak można to osiągnąć i jak można to zapewnić przed wdrożeniem.
Praktyka automatyzacji powinna mieć żywotny interes zarówno w wyniku, jak i w dalszym zapewnianiu, że cały ewoluujący system spełnia cele biznesowe i jest do nich odpowiedni.
Automatyzacja przypadku testowego regresji jest zawsze pomocna, ponieważ jest najlepszym kandydatem do rozpoczęcia testowanie automatyzacji . Możesz wykonać kroki wymienione powyżej, aby zautomatyzować dowolny zestaw testów, a nie tylko regresję.
Testowanie automatyczne jest również bardzo pomocne i opłacalne, a czas poświęcony na testowanie automatyzacji polega tylko na pisaniu skryptów i ich utrzymywaniu. Dlatego testowanie automatyzacji musi być odpowiednio zaplanowane i zaplanowane dla pomyślnego projektu.
O autorze: J.B. Rajkumar ma ponad 15-letnie doświadczenie zarówno w środowisku akademickim, jak i testowaniu oprogramowania. Pracował jako trener korporacyjny, kierownik testów, menedżer ds. Zapewnienia jakości i kierownik ds. Jakości.
Daj nam znać swoje komentarze / sugestie dotyczące tego artykułu.
=> Odwiedź tutaj, aby zapoznać się z pełną serią testów regresji.
rekomendowane lektury
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)
- Testing Primer Pobierz eBook
- 4 kroki w kierunku rozwoju podejścia do testowania zwinnego w celu pomyślnego przejścia do procesu zwinnego
- Wyzwania związane z testowaniem ręcznym i automatycznym
- Różnica między ponownym testowaniem a testowaniem regresji na przykładzie
- 5 wyzwań i rozwiązań w testowaniu mobilnym
- Testowanie SaaS: wyzwania, narzędzia i podejście do testowania
- 10 najpopularniejszych narzędzi do testowania regresji w 2021 r