Zalety i wady automatyzacji testów

Poprawnie wykonana automatyzacja testów może mieć wiele zalet i być bardzo korzystna dla projektu i organizacji. Istnieją jednak pewne pułapki lub wady automatyzacji testów, o których musimy wiedzieć.



Zalety automatyzacji testów

Jakie są zalety automatyzacji testów?

Potwierdzenie znanych

Zautomatyzowane kontrole to świetny sposób na potwierdzenie, że aplikacja nadal działa poprawnie po wprowadzeniu w niej zmian.


Możliwe, że dodanie nowej funkcji do aplikacji lub naprawienie błędu wpływa na funkcjonalność działającego oprogramowania, tj. Pojawia się błąd regresji.

Uruchamiając zestaw automatycznych kontroli regresji, gdy aplikacja jest aktualizowana, możemy zidentyfikować wszelkie nowe błędy wprowadzone w wyniku zmian.


Kluczową informacją jest tutaj przeprowadzanie automatycznych kontroli tak często, jak aplikacja jest aktualizowana.

Nie ma potrzeby uruchamiania pełnego zestawu automatycznych kontroli. Szybki pakiet regresji dymu powinien wystarczyć, aby wykryć wszelkie poważne problemy.

Szybka informacja zwrotna

Kolejną dużą zaletą automatycznych kontroli jest szybka informacja zwrotna, którą otrzymujemy, gdy aplikacja jest aktualizowana. Idealnie byłoby, gdyby zespół programistów naprawiał wszelkie awarie, gdy tylko się pojawią, zanim przejdzie do innych zadań.

Proszę zanotować że tę szybką informację zwrotną można uzyskać tylko za pomocą testów jednostkowych i testów interfejsu API. Jeśli testujemy funkcjonalność z poziomu interfejsu użytkownika lub na poziomie systemu, wykonanie testów może zająć dużo czasu.


Szybka realizacja czeków

Zautomatyzowane testy mogą trochę potrwać. Jednak kiedy je wykonujemy, są one generalnie szybkie i mogą przejść przez różne kroki znacznie szybciej niż człowiek. Dlatego pomagają w szybkim przekazywaniu informacji zwrotnej zespołowi programistów.

Jest to szczególnie prawdziwe w przypadku scenariuszy opartych na danych.

Uwalnia czas testerów

Najlepszym zastosowaniem automatycznych kontroli są testy regresji.

Automatyzacja testów regresyjnych uwalnia nas czas testerów, dzięki czemu mogą bardziej skupić się na testowaniu eksploracyjnym nowych funkcji.


Z tego samego powodu, po prawidłowym wdrożeniu, automatyczne kontrole mogą działać automatycznie z minimalnym nadzorem lub bez ręcznej interwencji lub bez nadzoru.

Zespół programistów może wnieść swój wkład

Testy automatyczne są zwykle napisane w tym samym języku, co testowana aplikacja. Z tego powodu odpowiedzialność za pisanie, utrzymywanie i wykonywanie testów staje się wspólną odpowiedzialnością.

Każdy w zespole programistów może wnieść swój wkład, nie tylko testerzy.



Wady automatyzacji testów

Jakie są wady automatyzacji testów?


Fałszywe poczucie jakości

Uważaj na zdane testy! Jest to szczególnie ważne przy weryfikowaniu funkcjonalności na poziomie interfejsu użytkownika lub systemu.

Automatyczna kontrola sprawdza tylko to, co zostało zaprogramowane do sprawdzenia.

Wszystkie automatyczne testy w zestawie testów mogą pomyślnie przejść, ale mogą wystąpić niewykryte poważne wady. Powodem tego jest to, że automatyczne sprawdzanie nie zostało zakodowane w celu „wyszukania” tych błędów.

Rozwiązanie: upewnij się, że zaprojektowałeś dobre scenariusze testowe przed ich automatyzacją. Automatyczna kontrola jest tak dobra, jak projekt testu. Uzupełnij również automatyczne kontrole o testy ręczne / eksploracyjne.


Nie wiarygodny

Zautomatyzowane kontrole mogą się nie powieść z powodu wielu czynników. Jeśli automatyczne kontrole nadal kończą się niepowodzeniem z powodu problemów innych niż oryginalne błędy, mogą wywoływać fałszywe alarmy.

Na przykład automatyczne kontrole mogą się nie udać z powodu zmiany interfejsu użytkownika, awarii usługi lub problemów z siecią.

Te problemy nie pochodzą bezpośrednio z testowanej aplikacji, ale mogą wpływać na wynik automatycznych kontroli.

Rozwiązanie: Tam, gdzie to możliwe / dotyczy, używaj kodów pośredniczących. Stuby rozwiązują problemy z łącznością lub zmianami w systemach innych firm. W związku z tym automatyczne kontrole byłyby niezależne od wszelkich dalszych awarii.

Automatyzacja testów to nie testowanie

Niestety, wiele osób myli „Automatyzację testów” z testowaniem.

Mając już narzędzia do automatyzacji testów, chcą „zautomatyzować wszystkie testy”. Chcą pozbyć się wszystkich „testerów manualnych”.

Prawda jest taka, że ​​testowanie to ćwiczenie eksploracyjne. Testowanie wymaga wiedzy dziedzinowej, skupienia umysłu i chęci poznania aplikacji.

Testowanie to nie tylko wykonywanie zestawu wstępnie zdefiniowanych kroków testowych i porównywanie rzeczywistych wyników z oczekiwanymi. To jest zadanie automatycznych kontroli.

Aby poprawnie przetestować aplikację, zawsze potrzebna jest ludzka inteligencja.

Rozwiązanie: Zrozum, że do pomyślnej realizacji projektu potrzebujesz zarówno testów automatycznych, jak i ręcznych.

Jedno nie zastępuje drugiego; uzupełniają automatyczne kontrole testami ręcznymi / eksploracyjnymi.

Czas konserwacji i wysiłek

Musisz zaakceptować fakt, że testy automatyczne wymagają konserwacji. W miarę rozwoju aplikacji poddawanej testowi powinny również podlegać automatycznym kontrolom.

Automatyczne kontrole są krótkotrwałe. Jeśli pakiety regresji nie są aktualizowane, zaczynasz widzieć wszelkiego rodzaju awarie.

Może niektóre kontrole nie są już aktualne. A może kontrole nie są prawdziwą reprezentacją nowych wdrożeń.

Te awarie mogą zanieczyścić wyniki testu.

Rozpoczęcie automatyzacji testów nie jest jednorazowym wysiłkiem. Aby jak najlepiej wykorzystać automatyczne kontrole, muszą one być aktualne i istotne. To wymaga dużo czasu, wysiłku i zasobów.

Rozwiązanie: Ponieważ czynnik utrzymania jest czynnością ciągłą, zainwestuj czas w zaprojektowanie dobrej struktury. Używaj modułów wielokrotnego użytku, oddziel testy od frameworka i używaj dobrych zasad projektowania, aby zmniejszyć wysiłek związany z utrzymaniem.

Powolne sprzężenie zwrotne

Gdy funkcja jest gotowa do przetestowania, w większości przypadków ręczne sprawdzenie jest szybsze.

Problem polega na tym, że automatyczne sprawdzanie może zająć dużo czasu w przypadku skryptu, w zależności od złożoności testu. Dlatego ręczne sprawdzenie daje szybszą informację zwrotną niż pisanie skryptów, uruchamianie i sprawdzanie wyników.

Ponadto, jeśli chodzi o testowanie interfejsu użytkownika i na poziomie systemu, automatyczne kontrole mogą zająć dużo czasu, aby zakończyć i raportować. Dlatego jeśli istnieje prawdziwy błąd, możemy nie być tego świadomi, dopóki wszystkie testy nie zostaną zakończone.

Rozwiązanie: Spróbuj zautomatyzować testy wraz z rozwojem, aby po zakończeniu programowania można było uruchomić automatyczne testy nowej funkcjonalności.

Oddziel również automatyczne kontrole w różnych paczkach.

Pakiet regresji dymu powinien być super szybki. Testy powinny tylko sprawdzać, czy można uruchomić aplikację i uzyskać do niej dostęp.

Następnie możesz mieć funkcjonalny pakiet regresji, który sprawdza główne funkcje.

Inny pakiet regresji może obejmować wszystkie testy od końca do końca i testy dogłębne. Kontrole te można przeprowadzić w nocy.

Przykładem nocnego uruchomienia są automatyczne kontrole w różnych przeglądarkach. Zwykle uruchamianie ich we wszystkich przeglądarkach zajmuje dużo czasu.

Nie znaleziono wielu błędów

Wydaje się, że większość błędów została wykryta „przypadkowo” lub podczas wykonywania testów eksploracyjnych.

Dzieje się tak prawdopodobnie dlatego, że w każdej sesji testów eksploracyjnych moglibyśmy testować aplikację na różne sposoby.

Z drugiej strony, automatyczne kontrole regresji zawsze podążają określoną ścieżką. Czasami z tym samym zestawem danych testowych. Zmniejsza to szansę znalezienia nowych usterek w aplikacji.

Również liczba błędów regresji wydaje się być niższa niż błędów nowych funkcji.

Rozwiązanie: Spróbuj zbudować losowość w scenariuszu i danych. Wypróbowywanie różnych ścieżek z różnymi danymi za każdym razem może ujawnić potencjalne problemy.



Wniosek

W tym poście przyjrzeliśmy się niektórym zaletom i wadom testów automatycznych. Kiedy zajmujemy się automatyzacją testów, powinniśmy wziąć pod uwagę powyższe punkty, aby uzyskać jak największe korzyści.