types automation testing
Poznaj różne typy testowania automatyzacyjnego z niektórymi błędnymi przekonaniami na temat automatyzacji testów:
W tej drugiej części seria samouczków dotyczących automatyzacji testów , Krótko opiszę rodzaje testów automatycznych, a co najważniejsze wyjaśnię kilka błędnych przekonań na temat automatyzacji testów.
Co to jest testowanie automatyczne?
Testowanie automatyczne można zdefiniować jako sposób na wielokrotne uruchamianie zestawu testów bez konieczności wykonywania ich ręcznie. Wprowadzenie testów automatyzacyjnych do strategii testów to sposób na zaoszczędzenie pieniędzy i czasu.
Czego się nauczysz:
Rodzaje testów automatycznych
Typy testów automatyzacyjnych określają, jakie zestawy testów można zautomatyzować. Wielu testerów myli ten temat z typami ram automatyzacji, które definiują sposób projektowania zestawu testów w pakiet automatyzacji, który można wygodnie wykonać.
W tym artykule przyjrzymy się bliżej typom testów automatyzacji, a na koniec pokrótce przyjrzymy się ramom automatyzacji.
Rozważmy szczegółowo powyższe klasyfikacje:
Automatyzacja oparta na typie testów
Automatyzacja testów funkcjonalnych:
Testy funkcjonalne są napisane w celu przetestowania logiki biznesowej aplikacji. Zautomatyzowanie tych działań oznacza pisanie skryptów w celu weryfikacji logiki biznesowej i funkcjonalności oczekiwanych od aplikacji.
darmowych dostawców kont e-mail w usa
Automatyzacja testów niefunkcjonalnych:
Testy niefunkcjonalne definiują pozabiznesowe wymagania aplikacji. Są to wymagania związane z wydajnością, bezpieczeństwem, bazami danych itp. Wymagania te mogą pozostać stałe lub mogą być skalowane w zależności od rozmiaru oprogramowania.
Automatyzacja oparta na fazie testowania
Automatyzacja testów jednostkowych:
Testy te są uruchamiane na etapie rozwoju, najlepiej przez programistę po zakończeniu rozwoju i przed przekazaniem systemu testerom do testów.
Automatyzacja testów API:
Testy API są uruchamiane na etapie integracji. Mogą być uruchamiane przez zespół programistów lub testujących i mogą być uruchamiane przed lub po utworzeniu warstwy interfejsu użytkownika dla aplikacji. Te testy są ukierunkowane na testowanie w oparciu o żądanie i odpowiedź, na podstawie których zbudowana jest aplikacja.
Automatyzacja testów opartych na interfejsie użytkownika:
Testy oparte na interfejsie użytkownika są uruchamiane w fazie wykonywania testów. Są one specjalnie uruchamiane przez testerów i są uruchamiane tylko raz przed przekazaniem im interfejsu użytkownika aplikacji. Testują one funkcjonalność i logikę biznesową aplikacji z poziomu frontonu aplikacji.
Automatyzacja oparta na typie testów
Testy jednostkowe:
Testy jednostkowe to testy, które są tworzone w celu testowania kodu aplikacji i zwykle są wbudowane w sam kod. Są ukierunkowane na standardy kodowania, takie jak sposób pisania metod i funkcji.
Testy te są częściej pisane przez samych programistów, jednak w dzisiejszym świecie testerzy automatyzacji mogą również zostać poproszeni o ich napisanie.
Wykonywanie tych testów i brak z nich błędów oznacza, że Twój kod będzie kompilował się i działał bez żadnych problemów z kodem. Testy te zwykle nie są ukierunkowane na funkcjonalne aspekty aplikacji, a ponieważ dotyczą kodu, bardziej odpowiednie jest ich zautomatyzowanie, aby można je było uruchamiać zgodnie z wymaganiami programisty.
Testy dymu:
Test dymu to słynny test wykonywany w cyklu życia testu. Są to testy po kompilacji, które są wykonywane natychmiast po wydaniu kompilacji z aplikacji, aby upewnić się, że aplikacja nadal działa po zakończeniu kompilacji.
Jest to mały zestaw testów, który będzie wykonywany wiele razy, dlatego warto go zautomatyzować. Testy te będą miały zwykle charakter funkcjonalny iw zależności od rodzaju aplikacji można dobrać do nich narzędzie.
Testy API:
Testowanie API stało się bardzo popularne w ciągu ostatnich kilku lat. Aplikacje zbudowane w oparciu o architekturę API mogą przeprowadzać takie testy.
W testowaniu API testerzy weryfikują warstwę biznesową aplikacji, sprawdzając kombinacje żądanie-odpowiedź dla różnych interfejsów API, na których została zbudowana aplikacja. Testy API można również wykonać w ramach poniższych testów integracji.
Testy integracyjne:
Test integracji jak sama nazwa sugeruje to testowanie aplikacji poprzez integrację wszystkich modułów i sprawdzenie funkcjonalności aplikacji.
Testy integracyjne można przeprowadzić za pomocą testów API lub za pośrednictwem warstwy interfejsu użytkownika aplikacji.
Testy interfejsu użytkownika:
Testy UI są wykonywane z poziomu UI lub frontendu aplikacji. Mogą one być ukierunkowane na testowanie funkcjonalności lub po prostu testowanie elementów interfejsu użytkownika aplikacji.
Automatyzacja interfejsu użytkownika w celu przetestowania funkcjonalności jest powszechną praktyką. Jednak automatyzacja funkcji GUI jest jedną z bardziej skomplikowanych automatyzacji.
Testy regresji:
Jednym z najczęściej używanych zestawów testów automatycznych jest zestaw testów regresji. Regresja, jak być może już wiesz, jest testem przeprowadzanym na koniec testowania nowego modułu, aby upewnić się, że nie ma on wpływu na żaden z istniejących modułów.
Jest powtarzany po każdej nowej iteracji testowania, a główne przypadki testowe pozostają naprawione, zwykle po kilku nowych dodatkach po nowej iteracji. Ponieważ jest to często uruchamiane, prawie wszystkie zespoły testowe próbują zautomatyzować ten pakiet.
Automatyzacja jako ciągła integracja:
Ciągła integracja może ponownie działać na samych automatycznych testach regresyjnych, jednak w celu osiągnięcia CI umożliwiamy uruchamianie regresji lub zidentyfikowanego zestawu testów za każdym razem, gdy wykonywane jest nowe wdrożenie.
Testy bezpieczeństwa:
Testy bezpieczeństwa mogą być zarówno funkcjonalnymi, jak i niefunkcjonalnymi typami testów, które obejmują testowanie aplikacji pod kątem luk w zabezpieczeniach. Testy funkcjonalne będą składać się z testów związanych z autoryzacją itp., Podczas gdy wymagania niefunkcjonalne mogą testować pod kątem wstrzykiwania SQL, skryptów między witrynami itp.
Testy wydajności i kontrola jakości:
Testy wydajnościowe to testy niefunkcjonalne, których celem jest testowanie obciążenia, obciążenia, skalowalności aplikacji.
Test wstępny:
Testy akceptacyjne ponownie wchodzą w zakres testów funkcjonalnych, które są zwykle wykonywane w celu sprawdzenia, czy kryteria akceptacji podane przez klienta zostały spełnione.
Do tej pory opisaliśmy typy testów, które można zautomatyzować, i różne ich klasyfikacje, wszystkie klasyfikacje ostatecznie doprowadzą do tych samych wyników końcowych zautomatyzowanego zestawu testów. Jak powiedzieliśmy wcześniej, potrzeba trochę zrozumienia, czym różnią się one od ram.
Po zidentyfikowaniu testów, które chcesz zautomatyzować na podstawie powyższej klasyfikacji, będziesz musiał zaprojektować swoją logikę w sposób umożliwiający sprawne wykonywanie tych testów, bez dużej ręcznej interwencji. Ten projekt zestawu testów ręcznych w zestaw testów automatycznych jest miejscem, w którym pojawiają się struktury.
Teraz przyjrzymy się trzem najpopularniejszym typom automatyzacji testów
- Testów jednostkowych
- Testowanie API
- Testowanie GUI
# 1) Zautomatyzowane testy jednostkowe
Zautomatyzowane testy jednostkowe są napisane w celu przetestowania poziomu kodu. Błędy są identyfikowane w funkcjach, metodach i procedurach napisanych przez programistów.
różnica między planem testów a przypadkiem testowym
Niektóre firmy proszą programistów o samodzielne wykonanie testów jednostkowych, a inne zatrudniają wyspecjalizowane zasoby do automatyzacji testów. Te zasoby mają dostęp do kodu źródłowego i piszą testy jednostkowe w celu złamania kodu produkcyjnego.
Ze względu na obecność testów jednostkowych, za każdym razem, gdy kod jest kompilowany, wszystkie testy jednostkowe są uruchamiane i informują nas, że jeśli wszystkie funkcje działają. Jeśli jakikolwiek test jednostkowy zakończy się niepowodzeniem, oznacza to, że w kodzie produkcyjnym występuje teraz błąd.
Niektóre z najpopularniejszych narzędzi obecnych na rynku to NUnit i JUnit . Firma Microsoft udostępnia również własną strukturę do testów jednostkowych o nazwie MSTest . Przejrzyj strony internetowe tych narzędzi, a znajdziesz w nich więcej przykładów i samouczków na temat pisania testów jednostkowych.
#dwa) Zautomatyzowane testy usług internetowych / API
Interfejs programowania aplikacji (API) umożliwia oprogramowaniu komunikację z innymi aplikacjami. Podobnie jak każde inne oprogramowanie, interfejsy API muszą zostać przetestowane. W tego typu testach zwykle nie bierze się udziału GUI.
To, co tutaj testujemy, to zazwyczaj kwestie dotyczące funkcjonalności, zgodności i bezpieczeństwa. W aplikacjach internetowych możemy przetestować żądanie i odpowiedź naszej aplikacji, czy są one bezpieczne i zaszyfrowane, czy nie.
To jeden z przykładów, w których możemy wykorzystać Testowanie API. Najpopularniejszym narzędziem do testowania API jest MYDŁO który ma zarówno wersję bezpłatną, jak i płatną. Istnieją również inne narzędzia, których możesz użyć w zależności od potrzeb.
# 3) Zautomatyzowane testy GUI.
Ten rodzaj automatycznego testowania jest najtrudniejszą formą automatyzacji, ponieważ polega na testowaniu interfejsu użytkownika aplikacji.
Jest to trudne, ponieważ GUI są bardzo podatne na zmiany. Ale tego typu testowanie jest również najbliższe temu, co użytkownicy zrobią z naszą aplikacją. Ponieważ użytkownik będzie korzystał z myszy i klawiatury, zautomatyzowane testy GUI również naśladują to samo zachowanie, wykorzystując mysz i klawiaturę do klikania lub zapisywania obiektów znajdujących się w interfejsie użytkownika.
Dzięki temu możemy wcześnie wykrywać błędy i można go używać w wielu scenariuszach, takich jak testy regresji lub wypełnianie formularzy, które zajmuje zbyt dużo czasu.
Najpopularniejsze narzędzia do testowania GUI obejmują Zunifikowane testy funkcjonalne Micro Focus (UFT) , Selen , Test zakończony i Microsoft Coded UI (który jest częścią wersji Ultimate i Premium programu Visual Studio).
Podobnie jak typy testów automatyzacyjnych, istnieje wiele typów struktur.
Struktury automatyzacji
Niektóre powszechnie używane struktury automatyzacji obejmują:
- Liniowy (nagrywanie i odtwarzanie)
- Oparte na słowach kluczowych
- Oparte na danych
- Model obiektu strony
- Modułowe
Dalsza lektura => Struktury automatyzacji
Jak widzisz, pierwszym krokiem w procesie automatyzacji jest zidentyfikowanie typu automatyzacji, następnie możesz zidentyfikować ramy do zaprojektowania i pamiętając o tym, możesz wybrać narzędzia, które odpowiadają Twoim potrzebom.
Narzędzia automatyzacji
W zależności od typu testowania, do którego chcesz się kierować, i typu platformy, którą możesz chcieć stworzyć wokół niego, dostępne są następujące narzędzia:
- Selen : Bardzo wydajne narzędzie do testowania aplikacji internetowych. Zapewnia obsługę wielu przeglądarek.
- Junit i Nunit: Narzędzia używane głównie do testów jednostkowych przez programistów.
- QTP : Świetne narzędzie do aplikacji innych niż internetowe i ma wbudowane repozytorium obiektów.
- Sikuli: Narzędzie open source do testowania GUI.
- Interfejs mydła: Narzędzie do testowania API.
- Bądź pewny: Biblioteka do tworzenia struktury testowej API.
- appium : Narzędzie obsługujące testowanie mobilne, testowanie aplikacji natywnych, testowanie aplikacji hybrydowych i mobilnych aplikacji internetowych.
- Jmeter : Narzędzie używane do testów wydajnościowych.
- TestNG: TestNG nie jest narzędziem do automatyzacji samym w sobie, jednak zapewnia doskonałe wsparcie dla frameworków automatyzacji zbudowanych z selenu, appium, pewności itp.
Dalsza lektura => Narzędzia do automatyzacji testów
Błędne poglądy na temat testów automatycznych
Przez lata słyszałem nieporozumienia dotyczące automatyzacji testów. Myślę, że powinienem je również wyczyścić w tym artykule.
Fałszywy pogląd nr 1. Automatyzacja ma zastąpić testery ręczne.
Automatyzacja testów ma na celu pomóc testerom przyspieszyć i zwiększyć wiarygodność testów. Nigdy nie zastąpi ludzi.
Pomyśl o automatyzacji testów jak o samochodzie. Spacerując, dojdziesz do domu w około 20 minut. Ale jeśli użyjesz samochodu, dotrzesz w dwie minuty. Kierowcą samochodu nadal jesteś Ty, człowiek, ale… samochód pomaga człowiekowi szybciej osiągnąć cel. Poza tym większość energii jest oszczędzana, ponieważ nie chodziłeś. W ten sposób możesz wykorzystać tę energię do wykonywania ważniejszych rzeczy.
To samo dotyczy testów automatycznych. Używasz go do szybkiego testowania większości powtarzanych, długich i nudnych testów oraz oszczędzania czasu i energii, aby skupić się i testować nowe i ważne funkcje.
Tak jak James Bach powiedział wspaniały cytat:
„Narzędzia nie testują. Tylko ludzie testują. Narzędzia wykonują tylko czynności, które „pomagają” testować. „
Narzędzia mogą klikać obiekty. Ale tester ręczny zawsze powie, gdzie kliknąć. Myślę, że teraz rozumiesz, o co mi chodzi.
Fałszywy pogląd nr 2 . Wszystko pod słońcem można zautomatyzować
Jeśli spróbujesz zautomatyzować 100% swoich przypadków testowych, być może będziesz w stanie to zrobić, ale jeśli możesz to zrobić, nasz pierwszy punkt stanie się fałszywy. Jeśli wszystko jest zautomatyzowane, co zrobi tester ręczny?
Zmieszany? Dobrze?
Właściwie chodzi o to, że nie możesz zautomatyzować 100% przypadków testowych. Ponieważ my, jako testerzy, uważamy, że żadna aplikacja nie może zostać przetestowana w 100%. Zawsze będą jakieś scenariusze, za którymi będziemy tęsknić. Zawsze pojawią się błędy, które pojawią się tylko wtedy, gdy Twoja aplikacja będzie używana przez klientów.
Jeśli aplikacji nie można przetestować w 100%, jak możesz obiecać 100% automatyzację?
Istnieje również bardzo mała szansa, że będziesz w stanie zautomatyzować wszystkie istniejące przypadki testowe. Zawsze istnieją scenariusze, które są trudne do zautomatyzowania i łatwiejsze do wykonania ręcznie.
Na przykład , Jeden użytkownik wprowadzi dane, drugi użytkownik zatwierdzi dane, trzeci użytkownik będzie przeglądał dane, a czwarty użytkownik ma zakaz przeglądania danych. Te scenariusze można zautomatyzować, ale zajmie to dużo czasu i wysiłku. Więc będzie łatwiej, jeśli zrobisz to ręcznie.
Pamiętaj, że do pokonywania odległości używamy samochodów, ale po drodze mogą pojawiać się długie sygnały, będzie zużycie paliwa, będą problemy z miejscami parkingowymi, opłaty parkingowe i znacznie więcej bólu głowy. W niektórych scenariuszach po prostu spacerujemy i docieramy do celu :) .
Dlatego nie powinieneś próbować automatyzować wszystkiego. Automatyzuj tylko te scenariusze, które są ważne i te, których wykonanie ręcznie zajmuje dużo czasu.
Fałszywy pogląd nr 3 . Automatyzacja obejmuje tylko nagrywanie i odtwarzanie.
Proszę, nie żyj w świecie fantasy. Ta fantazja jest w rzeczywistości tworzona przez fałszywe reklamy różnych dostawców narzędzi do automatyzacji. Mówią, że po prostu rejestrujesz i odtwarzasz swoje kroki, a twoje przypadki testowe zostaną zautomatyzowane. Cóż, to wielkie kłamstwo!
Automatyzacja to wszystko, a nie tylko nagrywanie i odtwarzanie. Inżynierowie zajmujący się wyłącznie automatyką zwykle w ogóle nie używają funkcji nagrywania i odtwarzania. Nagrywanie i odtwarzanie są zwykle używane do zrozumienia, w jaki sposób narzędzie generuje skrypt dla naszych kroków.
Po zapoznaniu się ze skryptami zawsze używamy skryptów do tworzenia testów automatycznych. Zapamiętaj, musisz znać programowanie, jeśli chcesz automatyzować testy . Z drugiej strony nie zniechęcaj się, jeśli nie znasz programowania. Podobnie jak w przypadku każdego innego zadania, programowania można się nauczyć z praktyką i poświęceniem.
Znam ludzi, którzy nie mają nawet wykształcenia informatycznego, ale uczą się programować, a teraz są niesamowitymi inżynierami automatyki. W firmie Microsoft zatrudniają testerów, którzy potrafią programować. Nazywają się SDET (Inżynierowie rozwoju oprogramowania do testów). Pierwsza linia opisu stanowiska mówi: „SDET pisze dużo kodu…”.
Proszę, naucz się programować, nie uciekaj od tego. To sprawi, że będziesz mieć niesamowity tester .
Wniosek
Mam nadzieję, że ten artykuł pomógłby w wyjaśnieniu niektórych pojęć związanych z automatyzacją testów.
Omówiliśmy wysoki poziom różnych typów testów automatyzacji, z różnymi sposobami klasyfikacji.
Główne klasyfikacje obejmują:
- Automatyzacja oparta na typie testów (funkcjonalne lub niefunkcjonalne).
- Automatyzacja oparta na fazie testowania (jednostka, API lub UI).
- Automatyzacja oparta na różnych typach testów (Wiele typów testów).
Wymieniliśmy również różne narzędzia, których można użyć do tego rodzaju testów automatycznych.
W naszym nadchodzącym artykule omówimy procedura krok po kroku jak rozpocząć automatyzację testów w Twojej organizacji .
POPRZEDNIA samouczek nr 1 | NASTĘPNY samouczek nr 3
rekomendowane lektury
- Testowanie obciążenia za pomocą samouczków HP LoadRunner
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)
- Czy testerzy tracą przyczepność podczas testowania z powodu automatyzacji?
- Wyzwania związane z testowaniem ręcznym i automatycznym
- 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)
- Top 10+ najlepszych książek o testowaniu oprogramowania (książki o testowaniu ręcznym i automatyzacji)