Testowanie automatyczne a testowanie ręczne: zalety, wady i co jest lepsze

Opublikowany: 2021-10-05

Testowanie jest niezastąpioną częścią tworzenia oprogramowania. Testy jakościowe pomagają zwalczać naruszenia bezpieczeństwa, które według RiskIQ kosztują obecnie firmy około 25 dolarów za minutę.

W metodologiach Agile testowanie jest procesem ciągłym, który rozpoczyna się na samym początku rozwoju. Obecnie testy można wykonywać ręcznie lub automatycznie. Przyjrzyjmy się dylematowi między testami ręcznymi a testami automatycznymi . Poznasz zalety testowania automatyzacji w porównaniu z testowaniem ręcznym i na odwrót, a także uzyskasz porady, gdzie zastosować dane podejście do testowania.


Zawartość:

  1. Różnica między testowaniem ręcznym a testowaniem automatycznym
  2. Korzyści z testowania automatyzacji
  3. Wady testów automatycznych
  4. Korzyści z ręcznego testowania
  5. Wady ręcznego testowania
  6. Testowanie ręczne a testowanie automatyczne
  7. Gdzie należy używać testów ręcznych?
  8. Gdzie należy używać testów automatycznych?

Jaka jest różnica między testowaniem ręcznym a testowaniem automatycznym?

Testowanie ręczne jest wykonywane bezpośrednio przez specjalistę ds. zapewnienia jakości (QA), który uruchamia oprogramowanie poprzez scenariusze testowe oparte na wymaganiach. Kontrola jakości testuje jeden scenariusz na raz.

W testowaniu automatycznym scenariusze testowe są uruchamiane przez oprogramowanie, co często umożliwia jednoczesne testowanie wielu scenariuszy. Aby jednak testowanie automatyczne mogło działać, scenariusze testowe muszą zostać przygotowane przez specjalistę ds. zapewnienia jakości automatyzacji , więc testowanie automatyczne nie jest wolne od zaangażowania człowieka. Aby umożliwić testowanie automatyczne, kontroler jakości pisze skrypty w wybranym przez siebie języku programowania — zazwyczaj Python, C# lub Java . Skrypty te są następnie uruchamiane za pomocą narzędzi takich jak TestComplete, Selenium lub Appium . Oprogramowanie przeprowadza testy szybciej niż człowiek, ale potrzebuje człowieka do pracy.

Wreszcie nie wszystkie testy można uruchomić za pomocą oprogramowania.

Korzyści z testowania automatyzacji

Korzyści z testowania automatyzacji

Dlaczego w pierwszej kolejności staramy się wszystko zautomatyzować? Ponieważ to (a) uwalnia nasz czas na robienie więcej zabawy i ważniejszych rzeczy oraz (b) pozwala nam szybciej osiągnąć nasze cele. Dotyczy to również tworzenia oprogramowania. Jednak automatyzacja testowania oprogramowania to coś więcej.

  1. Automatyzacja oszczędza czas na czasochłonne zadania

    Testowanie oprogramowania może zająć dużo czasu i jest często powtarzalne — na przykład podczas sprawdzania, czy aplikacja działa tak, jak powinna po aktualizacji samej aplikacji lub systemu operacyjnego. Zarówno iOS, jak i Android są często aktualizowane, a czasami te aktualizacje wpływają na funkcje aplikacji. Jeśli aktualizacja ma wpływ na funkcje używane przez Twoją aplikację, musisz je przetestować, aby upewnić się, że aplikacja działa poprawnie z najnowszą wersją systemu operacyjnego.

    Takie powtarzalne zadania można oczywiście wykonać ręcznie, ale zabierają one dużo czasu z kontroli jakości. Zamiast tego, kontrola jakości może tworzyć algorytmy do automatycznego uruchamiania tych powtarzalnych testów, podczas gdy kontrola jakości pracuje nad testowaniem nowych funkcji. Skrypt może uruchamiać testy do pięciu razy szybciej niż osoba — a kontrola jakości wykona niektóre niezautomatyzowane zadania lub napisze więcej skryptów w tym samym czasie.

    Co więcej, testy automatyczne mogą działać 24 godziny na dobę , 7 dni w tygodniu , podczas gdy specjaliści od testów manualnych zazwyczaj pracują w tradycyjny ośmiogodzinny dzień pracy przez pięć dni w tygodniu.

    Przykład: testy regresji są powtarzane po każdej aktualizacji funkcji, aplikacji lub systemu operacyjnego. Testy te sprawdzają, czy aktualizacja powoduje błąd lub konflikt między funkcjami. Ręczne uruchamianie i ponowne uruchamianie tych testów po każdej aktualizacji zajmuje dużo czasu.

    Specjalista ds. automatyzacji QA może raz napisać skrypt testowy i uruchamiać testy tyle razy, ile to konieczne. Podczas gdy te testy są uruchomione, ręczna i automatyczna kontrola jakości może być zajęta testowaniem innych funkcji.

  2. Automatyzacja może pomóc w walce z ludzkim błędem

    Ludzie popełniają błędy i mogą coś przegapić. Prawidłowo zaprogramowane maszyny nie popełniają błędów. A gdy wystąpi błąd w kodzie testowym lub jego wykonaniu, natychmiast o tym wiesz, ponieważ test się nie powiedzie . W przypadku testów automatycznych nie ma „wydaje się, że działa zgodnie z oczekiwaniami” — albo działa, albo nie.

    Przykład: z powodu braku czasu lub specjalistów ręczne kontrole jakości mogą przeoczyć niewielkie oznaki błędów w funkcjach . Takie błędy mogą prowadzić do naprawdę epickich awarii, a ich naprawa na późniejszych etapach rozwoju będzie kosztować znacznie więcej czasu (i pieniędzy) niż naprawianie ich na wczesnym etapie.

    Ten scenariusz nie może się zdarzyć, gdy komputer uruchamia testy, ponieważ komputery (a) uruchamiają testy szybciej niż ludzie i (b) nie rozpraszają się, nie męczą ani nie przyzwyczajają się do kodu.

  3. Automatyzacja może zaoszczędzić pieniądze (jeśli zostanie zastosowana prawidłowo)

    Ta z pozoru jest prosta — kiedy kontrola jakości spędza mniej czasu na zadaniu, kosztuje mniej. W debatach na temat testowania ręcznego i automatycznego często pojawia się ten fakt. I do pewnego stopnia jest to prawda: na dłuższą metę automatyzacja tego, co można zautomatyzować, najprawdopodobniej zaoszczędzi wiele godzin pracy przy kontroli jakości, a co za tym idzie, dużo pieniędzy.

    Jest jednak druga strona medalu, ponieważ oprogramowanie do automatycznego testowania również kosztuje. Z tego powodu automatyzacja testowania jest często stosowana w dużych projektach, a nie w projektach krótkoterminowych, w których niewiele można na tym zyskać.

  4. Niektóre testy można wykonać tylko za pomocą testów automatycznych

    Jeśli chodzi o testowanie dużych aplikacji, które mają być używane przez wiele osób jednocześnie — oprogramowanie do wideokonferencji lub przesyłania strumieniowego, internetowe narzędzia edukacyjne lub popularne gry — ręczne testowanie ich wydajności w stresie jest praktycznie niemożliwe. Testy sprawdzające, czy aplikacja jest w stanie wytrzymać obciążenie kilkuset użytkowników jednocześnie bez zakłóceń, wymagałyby setek testerów. Nie wygląda na logiczne lub ekonomicznie opłacalne rozwiązanie, prawda?

    Jednak skrypt może z łatwością emulować takie obciążenie. Testy zautomatyzowane są wymagane do testów obciążeniowych, obciążeniowych i wydajnościowych. Jednak te testy nie są konieczne dla każdej tworzonej aplikacji. Musisz zdecydować, czy wykonać je dla każdego produktu osobno.

Wady testów automatycznych

Wady testów automatycznych

Teraz do wad.

  1. Testowanie automatyczne jest bardziej złożone niż testowanie ręczne

    Skrypty nie piszą się same. Kontrolerzy kontroli jakości piszą je ręcznie dla każdego zadania, a to oznacza, że ​​inżynier automatyk kontroli jakości potrzebuje umiejętności programowania i znajomości co najmniej jednego języka programowania (najpopularniejszego do testów automatycznych to Python, Java i C#). Aby skonfigurować testowanie automatyczne, kontrola jakości kompiluje scenariusz testowy do uruchomienia skryptu. Każdy scenariusz jest napisany odręcznie, co wymaga czasu ze strony kontroli jakości.

    Jednak w przypadku powtarzających się zadań i zadań, które można zautomatyzować , na dłuższą metę automatyzacja jest lepszym rozwiązaniem.

  2. Testy automatyczne nie są odpowiedzią na wszystkie problemy

    Są rzeczy, których automatyczne testy nie mogą zrobić z obecnymi technologiami. Na przykład nie mogą zastąpić testów ręcznych, jeśli chodzi o projektowanie testów lub przyjazność dla użytkownika — te rzeczy wymagają ludzkiego wglądu. Jednak testy projektu aplikacji i przyjazności dla użytkownika nie zawsze są przeprowadzane przez kontrolę jakości: opinie użytkowników można uzyskać od testowej grupy użytkowników oprócz pracowników firmy. Ta grupa testowa może, ale nie musi być opłacana.

    Innym przypadkiem, w którym automatyczne testowanie nie wystarcza, jest testowanie zupełnie nowej funkcjonalności. Aby specjalista ds. kontroli jakości wiedział, jak zaprogramować skrypt testowy, musi wiedzieć, jakich wyników powinien się spodziewać .

    Większość testów oprogramowania można zautomatyzować. Ale nie wszystko. Nadal istnieją przypadki, w których preferowaną metodą jest testowanie ręczne. Porozmawiajmy trochę o zaletach testowania ręcznego nad testowaniem automatycznym .

Korzyści z ręcznego testowania

Korzyści z ręcznego testowania

Rzeczywistość współczesnego tworzenia oprogramowania jest taka, że ​​większość testów jest nadal wykonywana ręcznie. Powody różnią się w zależności od firmy. Podkreślimy tutaj tylko niektóre z nich.

  1. Testowanie ręczne jest łatwiejsze do wdrożenia

    Wyposażenie firmy w wykwalifikowanych specjalistów od ręcznej kontroli jakości, w przeciwieństwie do specjalistów od automatyzacji, jest dość proste . Wiele ręcznych zadań testowych można wykonać bez dostępu do kodu i bez znajomości kodu. Właśnie dlatego testowanie jest czasami uważane za wstęp do tworzenia oprogramowania — możesz zacząć od minimum wiedzy i po drodze zdobyć umiejętności . Oznacza to, że na rynku jest więcej dobrych ręcznych kontroli jakości niż specjalistów od automatyzacji.

  2. Testowanie ręczne to właściwy wybór w przypadku niezwykle złożonych zadań

    Podczas testowania wyjątkowo złożonych funkcji, czas na wykonanie testów ręcznych i koszt ich wykonania może czasami być mniejszy niż czas i pieniądze potrzebne do napisania skryptów automatyzacji. Poza tym tego typu zadania, ze względu na ich specyfikę, są zazwyczaj wykonywane tylko raz. To sprawia, że ​​automatyzacja jest nieopłacalna .

    Jednak będzie to również zależeć przynajmniej częściowo od umiejętności Twojego QA, ponieważ wysoko wykwalifikowany specjalista ds. automatyzacji jest w stanie tworzyć złożone scenariusze szybciej i z większą precyzją niż młodszy QA. Musisz także obliczyć użyteczność tworzenia każdego skryptu automatyzacji .

  3. Testowanie ręczne jest bardziej odpowiednie do niektórych zadań

    Projekt interfejsu, doświadczenie użytkownika i użyteczność nadal nie mogą być testowane przez skrypty. Testy te wymagają opinii ludzi — czasami od specjalistów ds. zapewnienia jakości, innym razem od testowej grupy użytkowników.

    Inny przypadek to taki, w którym należy zwrócić szczególną uwagę na poszczególne części testu — napisanie skryptu do takiego testu jest zbyt skomplikowane i zwykle nie tak wiarygodne, jak skorzystanie z pomocy specjalisty, który wie, czego szukać.

    Czasami QA przeprowadzają również testy spontanicznie, w nietypowy sposób i bez przygotowania. Nazywa się to testowaniem ad hoc . Testy ad hoc mogą pomóc w znalezieniu nieoczekiwanych wad. W przypadku takich testów napisanie skryptu jest niemożliwe, ponieważ nie wiadomo, jakiego wyniku można się spodziewać. Poza tym takie skrypty zostałyby prawdopodobnie użyte tylko raz .

    Przykład: jeden rodzaj testów ad hoc, zwany testami na małpach , ma na celu ustalenie, co należy zrobić, aby zepsuć system. Wykonywane są losowe akcje, aby sprawdzić, czy coś powoduje awarię systemu.

Wady ręcznego testowania

Wady ręcznego testowania

Oto dlaczego testowanie automatyzacji jest obecnie często preferowane w porównaniu z testami ręcznymi.

  1. Testowanie ręczne jest z natury wolniejsze

    To samo zadanie, którego wykonanie ludzkiej kontroli jakości może zająć kilka godzin lub nawet dni, zajmie maszynie zaledwie kilka minut, a nawet sekund. Skomputeryzowane systemy i skrypty analizują dane szybciej niż człowiek. Testowanie ręczne jest żmudne i czasochłonne, zwłaszcza przy powtarzalnych zadaniach, a automatyzacja testów przeprowadzona po odpowiednim przygotowaniu jest szybka i prosta.

  2. Testowanie ręczne jest podatne na błędy

    Ludzie mogą przegapić szczegóły, jeśli chodzi o zadania, które są wykonywane w kółko, na przykład ponowne testowanie funkcji po każdej aktualizacji.

    Rozłożenie uwagi na wiele punktów w jednym zadaniu może również oznaczać kłopoty z kontrolą jakości, co sprawia, że ​​wyniki testów są mniej wiarygodne . Dzięki złożonym funkcjom będziesz musiał decydować między testami ręcznymi a automatycznymi dla każdego przypadku z osobna. Czasami automatyzacja może być nieracjonalnie kosztowna i czasochłonna ze względu na złożoność skryptów, zwłaszcza jeśli test jest uruchamiany tylko raz.

  3. Na dłuższą metę samo testowanie ręczne może być droższe

    Prawdą jest, że w przypadku testów automatycznych firma musi od samego początku zainwestować niemałą sumę, zarówno w oprogramowanie, jak i zatrudnienie wykwalifikowanego personelu (kontrole jakości automatyzacji kosztują więcej niż ręczni specjaliści).

    Jednak w zależności od rodzaju i liczby testów wymaganych w projekcie, testowanie ręczne może również stanowić obciążenie finansowe. Kiedy projekt jest duży, a testy zajmują dużo czasu lub są powtarzane wiele razy, kosztują niebotycznie . Kwestia ta powinna zostać poruszona na początku planowania projektu, aby ocenić koszt obu opcji i dowiedzieć się, która jest najbardziej ekonomicznie wykonalna. Zwykle najlepszą decyzją jest połączenie testowania ręcznego i automatycznego.

Testowanie ręczne a testowanie automatyczne — rozgrywka

Zobaczmy teraz porównanie testowania ręcznego z testowaniem automatycznym.

Testowanie ręczne Testowanie automatyczne

Zajmuje dużo czasu

Zajmuje znacznie mniej czasu

Nie wymaga umiejętności programowania

Wymaga umiejętności programowania

Niższy koszt początkowy, ale im dłużej trwają testy, tym wyższy koszt

Wymaga większych inwestycji początkowych, ale jest bardziej opłacalny w przypadku projektów długoterminowych z wieloma powtarzalnymi testami

Większe prawdopodobieństwo błędów ze względu na czynnik ludzki

Bardziej precyzyjne i wiarygodne, jeśli testy są dobrze zbudowane

Złożone zadania wymagają dodatkowych specjalistów

Złożone zadania wymagają dodatkowego czasu na przygotowanie

Nie nadaje się do testów wydajności, obciążenia lub warunków skrajnych

Nie nadaje się do testowania użyteczności, interfejsu użytkownika ani doświadczenia użytkownika

Gdzie należy używać testów ręcznych?

testowanie ręczne - gdzie używać

Oto kilka testów, które lepiej uruchomić ręcznie:

  • Testy eksploracyjne. To wstępne testowanie zupełnie nowych funkcji. Ponieważ związana z tym funkcjonalność jest nowa i nie ma gotowych przypadków testowych, automatyzacja tego rodzaju testów jest niemożliwa.
  • Wizualne GUI i testy użyteczności. Testowanie interfejsów użytkownika i doświadczeń użytkownika obejmuje ocenę wizualną i wymaga obserwacji przez człowieka.
  • Testowanie ad hoc. Są to spontaniczne testy wykonywane bez przestrzegania wymagań lub dokumentacji i mające na celu ujawnienie nieoczekiwanych błędów.

Gdzie należy używać testów automatycznych?

Gdzie powinieneś używać testów automatycznych

Automatyzacja testów jest obecnie coraz częściej stosowana i pojawiają się nowe przypadki, z którymi może sobie poradzić zautomatyzowane testowanie. Oto tylko kilka przykładów zalecanych testów automatycznych:

  • Testy dymne sprawdzają podstawową funkcjonalność. Zwykle jest nieco ustandaryzowany i wielokrotnego użytku.
  • Testy regresji ponownie testują istniejącą funkcjonalność po aktualizacji samej aplikacji lub systemu operacyjnego i mają na celu sprawdzenie, czy występują jakiekolwiek konflikty.
  • Testy wydajnościowe/obciążeniowe służą do testowania aplikacji przeznaczonych do intensywnego użytkowania przez wielu użytkowników jednocześnie. Testowanie obciążenia symuluje duże obciążenie, aby sprawdzić, czy aplikacja ulegnie awarii.
  • Testy obciążeniowe są podobne do testów obciążeniowych i polegają na tworzeniu wirtualnego obciążenia aplikacji. Jednak podczas gdy testy obciążeniowe są przeprowadzane w celu sprawdzenia, czy aplikacja jest w stanie wytrzymać określone obciążenie, testy obciążeniowe mają na celu ustalenie, gdzie leży granica obciążenia. Innymi słowy, doprowadza aplikację do punktu krytycznego.
  • Powtarzające się wykonanie. Niektóre testy są uruchamiane wielokrotnie w określonych punktach rozwoju lub są standardowymi testami wielokrotnego użytku dla różnych aplikacji.

Więc jaki jest werdykt?

Po porównaniu testowania ręcznego i automatycznego nie możemy stwierdzić z całą pewnością, czy testowanie automatyczne jest lepsze niż testowanie ręczne.
Testowanie oprogramowania to złożony i bardzo zróżnicowany proces. W zależności od tego, co jest testowane, na jakim etapie iw jakim celu, zostaną przeprowadzone różne testy. A to oczywiście wpływa na wybór między testowaniem ręcznym a automatycznym. Niektóre testy są lepiej zautomatyzowane, a inne nadal powinny być przeprowadzane ręcznie .

Najlepszym sposobem dla firm tworzących oprogramowanie na podniesienie swoich umiejętności jest połączenie specjalistów ds. testów ręcznych i automatycznych , mądry podział zadań testowych między nich i jak najlepsze wykorzystanie obu metod. Każdy projekt może łączyć testowanie ręczne i automatyczne w różnych proporcjach i najlepiej jest stworzyć strategię testowania projektu od samego początku.