Błędnie działające oprogramowanie może doprowadzić do wielu problemów (np. sprzedaż artykułu, którego nie ma w magazynie), a co za tym idzie także do strat finansowych. Dlatego też każde oprogramowanie przed komercyjnym użyciem musi zostać dokładnie przetestowane i pozbawione błędów. Praca testerów staje się więc coraz bardziej potrzebna i popularna. Kim jest tester automatyzujący i jak nim zostać? O tym więcej w artykule!
Obowiązki testera
Na początek kilka słów o tym, jakie są główne zadania testera:
- Współpraca z programistami – dobra komunikacja jest tutaj podstawą
- Tworzenie scenariuszy i przypadków testowych
- Przeprowadzanie testów
- Raportowanie błędów
- Przygotowywanie raportów
Tester manualny vs automatyzujący – dlaczego jedno nie istnieje bez drugiego?
Tester manualny ocenia każdy przypadek za pomocą tzw. interfejsu białkowego, czyli “na oko”, a tester automatyzujący ma za zadanie te czynności zautomatyzować. Czy można od razu zostać testerem automatyzującym bez znajomości wiedzy z zakresu testowania manualnego? W teorii tak, ale nie polecamy takiej kolejności w rozwoju kariery, ponieważ znajomość uniwersalnych zagadnień związanych z testami (również manualnymi) jest niezbędna w pracy testera automatyzującego.
Jeżeli choć trochę czytaliście na temat testów to pewnie natrafiliście na pojęcie przypadek testowy (ang. test case). Co to jest? Otóż przypadek testowy opisuje, w jaki sposób przetestować pojedynczą funkcjonalność, np. załączanie pliku w formularzu kontaktowym.
Aby dobrze opisać przypadek testowy należy podać następujące informacje:
- ID – unikalny identyfikator
- Tytuł – tytuł, który mówi czego dotyczy przypadek testowy.
- Środowisko uruchomienia – system operacyjny, przeglądarka, ew. inne oprogramowanie
- Warunek początkowy – warunki niezbędne do wykonania przypadku testowego
- Dane testowe – dane, które chcemy użyć do testowania
- Kroki do wykonania – instrukcja, która w punktach mówi, co należy wykonać.
- Oczekiwany rezultat – opisanie oczekiwanego rezultatu, dzięki czemu będziemy w stanie stwierdzić, czy test zakończył się sukcesem lub porażką. Przykład; plik został prawidłowo załączony do formularza.
- Warunek końcowy – warunek, który jednoznacznie określa kiedy test można uznać za wykonany
Inne ważne pojęcie to scenariusz testowy, jest to “przepis”, który mówi krok po kroku, w jaki sposób należy sprawdzić działanie systemu lub jego fragmentu. Scenariusz testowy składa się z przypadków testowych.
Sprawdź kurs online PythON: Początek!
Kiedy automatyzować testy, a kiedy to jest nieopłacalne?
Kiedy warto automatyzować?
- Wtedy, gdy testy są powtarzalne i należy je wykonywać często
- W przypadku testowania po modyfikacjach (regresja)
- Gdy testy są łatwe do automatyzacji i przynoszące dużą wartość zwrotu – ROI
- Przy testach wydajności – ponieważ nie jesteśmy w stanie “ręcznie” zasymulować ruchu wielu użytkowników i wygenerować dużego obciążenia.
Przykładem są serwisy bankowe, które przed produkcyjnym wdrożeniem nowej wersji muszą przejść szereg, zaplanowanych wcześniej, testów.
Kiedy nie warto automatyzować?
Nie warto automatyzować testów w przypadku projektów:
- Które są małe z dużym tempem zmian
- Które są krótkie, w których automatyzacja nie zdąży się zwrócić
- W których trudno byłoby cokolwiek zautomatyzować np. ze względu na integracje z innymi systemami/urządzeniami
Warto dodać, że często możemy zrobić zaślepki niektórych części systemu (np. drukarka) lub innych, dających się wyodrębnić, elementy systemu. Te zaślepki symulują działanie określonych modułów.
Automatyzacja, to nie tylko testy interfejsu
Jakie mamy rodzaje testów poza testowaniem interfejsu?
- Jednostkowe
- Wydajnościowe
- Testy API
- Testy e2e (end to end)
- Integracyjne
- Bezpieczeństwa
W tym momencie warto wspomnieć o piramidzie testowej, która pokazuje, które testy trwają najkrócej/najdłużej, jaki jest ich koszt i ile ich trzeba wykonać. Wspomniana piramida została szerzej omówiona podczas webinaru.
Źródło: http://fabiopereira.me/blog/wp-content/uploads/2012/03/testing-pyramid-fabio-pereira.png
Jak rozpocząć naukę testowania automatycznego?
- Przede wszystkim należy być świadomym tego, że automatyzując testy piszemy kod w jakimś języku, np. Pythonie lub Javie
- Najlepiej zacząć od nauki podstaw języka programowania, w którym potem będziemy chcieli automatyzować testy
- Potem warto nauczyć się jednego z frameworków do testowania, np. Selenium (np. webdriver)
- Praktyka – znaleźć dowolny serwis, np. taki, który umożliwia logowanie – zrobić automatyzację logowania, potem idziemy dalej, np. wypełniamy formularz
- Napotkamy problemy – np. chcemy kliknąć przycisk, który jest niewidoczny, bo się nie wczytał – takie przypadki należy obsłużyć w teście.