Przypadki testowe

Napisanie pierwszego w życiu przypadku testowego to spore wyzwanie. Przekopywanie Google’a nierzadko powiększa tylko poczucie zagubienia, a to dlatego, że znaleźć można przeróżne wersje i tabelki z polami do uzupełnienia, których nazwy zupełnie niczego nie mówią osobie początkującej (ba, z niektórymi nawet zaawansowani mają problem). Tymczasem przypadek testowy to sprawa prosta i podstawowa.

Co to jest przypadek testowy?

Właściwie jest to coś przeciwnego, niż sugeruje nazwa. Znajdowanie błędów nie powinno być dziełem przypadku! A przypadek testowy pomaga nam uniknąć przypadkowości w naszym testowaniu. Jest to zbiór kroków, które należy wykonać, żeby przetestować daną rzecz, i oczekiwanych rezultatów. Nie należy tego mylić ze scenariuszem – scenariusz testowy może składać się z kilku przypadków.

Co testuje przypadek testowy?

Jeden przypadek testowy testuje jedną rzecz. To najważniejsza informacja, o której początkujący rzadko pamiętają i tworzą rozwlekłe przypadki, będące tak naprawdę scenariuszami, a czasem nawet zbiorem scenariuszy. Jeden przypadek sprawdza tylko jedno zachowanie czy funkcjonalność. Powinien być krótki, zwięzły i samodzielny.

Jak napisać dobry przypadek testowy?

Po pierwsze musisz poukładać sobie w głowie, co chcesz przetestować. Zazwyczaj system, który testujemy, pełen jest  ciekawych funkcjonalności, wiele rzeczy dzieje się naraz i nietrudno pogubić się w tym, co właściwie miało się sprawdzić. A w jednym przypadku sprawdzamy jedną rzecz. Otwierasz stronę, a na niej pada śnieg, gra muzyczka i uruchamia się filmik o kłótni kotów? Nie ulegaj pokusie wrzucenia tego wszystkiego do jednego worka, chociaż zwaliło Ci się na głowę, jakby właśnie z jednego worka się wyspało. Rozpisz osobny przypadek sprawdzający padanie śniegu, kolejny dla testów muzyczki i trzeci, dotyczący filmiku.

Jak wygląda przypadek testowy?

Zazwyczaj składa się z następujących elementów:

  • Numer i tytuł
  • Warunki początkowe (po angielsku zwane Preconditions) – stan systemu, który musi istnieć, abyśmy mogli wykonać nasz przypadek testowy (a więc przetestować to – i tylko to – co nas w danym przypadku interesuje). Przykładowo chcąc przetestować wylogowanie, musimy być zalogowani. Logowanie nie jest krokiem przypadku testowego dotyczącego wylogowania, a właśnie warunkiem początkowym, który musi zaistnieć PRZED wykonaniem kroków przypadku.
  • Kroki (Steps) – czyli czynności, które wykonujemy.
  • Oczekiwany rezultat (Expected Result) – jaki ma być skutek naszych działań (wykonania kroków).

Na przykład…

Załóżmy, że chcemy napisać przypadki testowe dla strony startowej pewnego znanego portalu społecznościowego. Najlepiej zacząć od zastanowienia się (a może spisania w formie listy), co można przy jej pomocy zrobić. Na samej górze mamy możliwość zalogowania się, a także przypomnienia nazwy konta. Nieco niżej widzimy formularz, przy pomocy którego można założyć konto. Odpowiednie linki umożliwiają poznanie odpowiedzi na pytanie, dlaczego trzeba podać datę urodzenia, a także zapoznanie się z regulaminem, zasadami dotyczącymi danych, zasadami dotyczącymi plików cookie. Pod przyciskiem rejestracji znajduje się łącze, umożliwiające założenie strony dla firmy. Jeszcze niżej istnieje opcja zmiany języka, a pod nią cała masa linków. Dla tej niepozornej strony startowej można by napisać co najmniej kilkadziesiąt przypadków testowych. Oto kilka przykładowych (numeracja jest umowna, przyjęty tu skrót TC rozwija się jako Test Case, ale równie dobrze może to być po prostu numer, słowo „Przypadek nr 1” czy cokolwiek innego, na co umówi się zespół) :

TC-01-1-a : Prawidłowe logowanie przy użyciu adresu e-mail

Warunki początkowe:
   Strona startowa jest otwarta.
Kroki:
   1. Wpisz zarejestrowany adres e-mail w pole "Adres e-mail lub telefon".
   2. Wpisz prawidłowe hasło w pole "Hasło".
   3. Kliknij przycisk "Zaloguj się".
Oczekiwany rezultat:
   1. Otwarta jest strona główna.
   2. Dostępna jest opcja wyszukiwania znajomych.
   3. Dostępne jest menu użytkownika z opcją wylogowania.

Logowanie przy użyciu numeru telefonu będzie innym wariantem tego przypadku testowego:

TC-01-1-b : Prawidłowe logowanie przy użyciu numeru telefonu

Warunki początkowe:
   Strona startowa jest otwarta.
Kroki:
   1. Wpisz zarejestrowany numer telefonu w pole "Adres e-mail lub telefon".
   2. Wpisz prawidłowe hasło w pole "Hasło".
   3. Kliknij przycisk "Zaloguj się".
Oczekiwany rezultat:
   1. Otwarta jest strona główna.
   2. Dostępna jest opcja wyszukiwania znajomych.
   3. Dostępne jest menu użytkownika z opcją wylogowania.

Można do tego dodać warianty negatywne:

TC-01-2: Logowanie bez podania hasła

Warunki początkowe:
   Strona startowa jest otwarta.
Kroki:
   1. Wpisz zarejestrowany adres e-mail w pole "Adres e-mail lub telefon".
   2. Kliknij przycisk "Zaloguj się".
Oczekiwany rezultat:
   1. Otwarta jest strona logowania.
   2. Pole loginu jest wypełnione podanym adresem e-mail.
   3. Pole hasła jest puste.
   4. Wyświetlony jest przycisk "Zaloguj się".
   5. Wyświetlony jest przycisk "Odzyskaj swoje konto".
TC-01-3: Logowanie przy użyciu nieprawidłowego hasła

Warunki początkowe:
   Strona startowa jest otwarta.
Kroki:
   1. Wpisz zarejestrowany adres e-mail w pole "Adres e-mail lub telefon".
   2. Wpisz nieprawidłowe hasło w pole "Hasło".
   3. Kliknij przycisk "Zaloguj się".
Oczekiwany rezultat:
   1. Otwarta jest strona logowania.
   2. Pole loginu jest wypełnione podanym adresem e-mail.
   3. Pole hasła jest puste.
   4. Wyświetlony jest przycisk "Zaloguj się".
   5. Wyświetlony jest przycisk "Odzyskaj swoje konto".
TC-01-4: Logowanie przy użyciu niezarejestrowanego adresu e-mail 
...

I tak dalej, opcji jest jeszcze trochę. A na napisanie czekają jeszcze przypadki  niezwiązane z logowaniem, na przykład:

TC-02: Otworzenie regulaminu
...
TC-03: Przejście do tworzenia strony
...

Gdyby pójść dalej i pokryć przypadkami stronę, która pokazuje się zalogowanemu użytkownikowi, każdy z nich należałoby poprzedzić warunkiem początkowym, że użytkownik jest zalogowany. W tym przypadku może to być odniesienie do spisanego już przez nas przypadku testowego:

TC-04: Wyszukiwanie znajomego

Warunki początkowe: 
      TC-01: Prawidłowe logowanie przy użyciu adresu e-mail
Kroki:
...

Podsumowując, warto dążyć do tego, żeby kroki przypadków testowych to były tylko te czynności, które są ściśle związane z zachowaniem aplikacji, które chcemy sprawdzić. Lepiej jest mieć bardzo dużo krótkich przypadków niż kilka bardzo długich – przede wszystkim z uwagi na ich „reużywalność”, czyli możliwość zastosowania w wielu różnych kontekstach. Małe przypadki z większym prawdopodobieństwem będą mogły stanowić warunek wstępny innego testu, łatwiej jest budować z nich scenariusze i są bardziej czytelne. I przede wszystkim  koncentrują się tylko na jednej funkcjonalności, której są dedykowane – a to tak naprawdę jest sensem ich tworzenia.