Zapewne znacie poetycki film kostiumowy, pastisz powieści płaszcza i szpady, czyli „Rękopis znaleziony w Saragossie”. Zapewne domyślacie się, co film Wojciecha Jerzego Hasa (oparty na powieści hrabiego Jana Potockiego) ma wspólnego z testowaniem?
Tak, zgadliście! I tu, i tu występuje scenariusz! 😂 Wiem, suchy żart…
Gdyby się jednak dłużej zastanowić, to tych elementów wspólnych jest więcej. „Rękopis znaleziony w Saragossie” – zarówno powieść, jak i film – mają konstrukcję szkatułkową, w której każda kolejna opowieść wywodzi się z poprzedniej.
Plan wpisu
W tym artykule spróbuję wyjaśnić, czym jest scenariusz testowy, z czego się składa, czym się różni od przypadku testowego oraz w jakim celu się go tworzy.
Zacznijmy więc od definicji. Co o scenariuszu testowym mówią źródła ISTQB–międzynarodowej rady certyfikującej testerów? Gdy zacząłem zgłębiać zawiłości tego zagadnienia, początkowo poczułem się zagubiony niczym wielu widzów oglądających po raz pierwszy dzieło Hasa.
Czym jest scenariusz testowy – teoria
W glosariuszu opartym na aktualnie obowiązującym sylabusie ISTQB 2018 słowo „scenariusz” pojawia się tylko w kontekście testowania statycznego („przegląd oparty na scenariuszach”), które nas tutaj nie interesuje.
Hmm, co się dzieje?! Gdzie się podział scenariusz testowy? Na szczęście zawsze można liczyć na pomoc Wujka Gugla. 😊
Nasza zguba odnalazła się w „Słowniku wyrażeń związanych z testowaniem”, wersja. 2.2.2 (2013). Pod hasłem scenariusz testowy jest odnośnik do terminu specyfikacja procedury testowej, którą definiuje się jako „dokument określający ciąg akcji umożliwiający wykonanie testu. Znana także jako skrypt testowy lub manualny skrypt testowy [wg IEEE 829]”.
Zajrzyjmy więc do tekstu normy IEEE 829-2008 (IEEE Standard for Software and System Test Documentation). Jest tam termin procedura testowa, którego definicja brzmi następująco:
(A) Szczegółowe instrukcje dotyczące konfiguracji, wykonania i oceny wyników dla danego przypadku testowego.
(B) Dokument zawierający zestaw powiązanych instrukcji jak w A.
(C) Dokumentacja, która określa sekwencję działań dla wykonania testu. [moje tłumaczenie angielskiej wersji normy].
Na koniec wróćmy do glosariusza ISTQB wersja 2018. Znajdziemy tam dwa terminy, z którymi można powiązać scenariusz testowy:
1) Specyfikacja przypadków testowych – dokumentacja zestawu jednego lub więcej przypadków testowych.
2) Procedura testowa – sekwencja przypadków testowych w kolejności wykonywania oraz wszelkie powiązane działania, które mogą być wymagane do ustanowienia warunków wstępnych i wszelkich czynności podsumowujących po wykonaniu.
Hasła te zawiera również „Słownik wyrażeń związanych z testowaniem wykorzystywanych w sylabusie CTFL 2018”, wersja 3.2 (2018), oficjalna publikacja Stowarzyszenia Jakości Systemów Informatycznych.
Dla nowicjusza, takiego jak ja, wszystkie te definicje mogą się wydawać dość zagmatwane i abstrakcyjne. Czy nie można tego wyjaśnić prościej? Można! Zapytajmy Waldemara! 😎
W e-booku „Podstawy testowania oprogramowania” (żeby otrzymać bezpłatny e-book formacie pdf, wejdź na tę stronę ) możemy przeczytać, że scenariusz testowy to dokument określając ciąg akcji umożliwiających wykonanie testu. Inaczej mówiąc, scenariusz składa się z przypadków testowych w celu przetestowania konkretnej funkcjonalności systemu.
Przy okazji polecam Ci artykuł omawiający, jak pisać przypadki testowe.
Scenariusz testowy w praktyce
Scenariusze testowe opracowywane są na podstawie Specyfikacji Wymagań Biznesowych lub Specyfikacji Wymagań Systemowych. Określają, co – np. jaka funkcjonalność – ma być przedmiotem testów.
Weźmy jako przykład internetowy serwis informacyjny, do którego wymaganych funkcjonalności należy między innymi:
F1. Rejestrowanie się użytkowników
F2. Logowanie się zarejestrowanych użytkowników
F3. Dodawanie komentarzy pod artykułami przez zalogowanych użytkowników
F4. Zablokowanie możliwości dodawania komentarzy pod artykułami przez niezalogowanych użytkowników
Każda z tych funkcjonalności będzie testowana w ramach osobnego scenariusza testowego. Skupmy się teraz na pierwszej funkcjonalności, czyli rejestrowaniu się użytkowników. Będzie to również nazwa scenariusza, w którego opisie podajemy cel testów:
Sprawdzenie działania funkcjonalności rejestrowania się nowego użytkownika /zakładania konta użytkownika.
Następnie wymieniamy czynności przygotowawcze, czyli co powinno być zrobione, żeby można było wykonać scenariusz. W tym wypadku będzie to dostępność odpowiedniej przeglądarki oraz posiadanie aktywnego konta e-mail przez użytkownika.
Teraz możemy dobrać lub stworzyć przypadki testowe (test cases).
– Test Case 1: Rejestrowanie się nowego użytkowania przez podanie poprawnego adresu e-mail, spełniającego wymogi hasła (o odpowiedniej długości i zawierającego dopuszczalne znaki), przejście testu CAPTCHA, potwierdzenie akceptacji regulaminu
– Test Case 2: Rejestrowanie się nowego użytkowania przez podanie niepoprawnego adresu e-mail, spełniającego wymogi hasła (o odpowiedniej długości i zawierającego dopuszczalne znaki), przejście testu CAPTCHA, potwierdzenie akceptacji regulaminu
– Test Case 3: Próba rejestracji użytkownika z takim samym adresem e-mail, co zarejestrowany już użytkownik itd.
Kolejne przypadki testowe pokryją inne warianty poprawnego lub niepoprawnego wypełnienia poszczególnych pól formularza rejestracji, czy próbę rejestracji użytkownika z takim samym adresem e-mail, co zarejestrowany już użytkownik itd.
Być może należałoby dodać jeszcze jeden scenariusz powiązany z tym pierwszym: testowanie potwierdzenia rejestracji nowego użytkownika. Chodzi o potwierdzenie rejestracji poprzez kliknięcie przycisku/linka w mailu, który przychodzi na skrzynkę użytkownika po poprawnym wypełnieniu i wysłaniu formularza rejestracji. Sądzę, że można tutaj napisać kilka przypadków testowych, które uzasadniają ujęcie ich w osobnym scenariuszu, choć można by również podpiąć je do scenariusza pierwszego.
Można też stworzyć dłuższy scenariusz, testujący kilka funkcjonalności, np. próba dodania komentarza przez niezarejestrowanego użytkownika, który zostaje przekierowany na stronę rejestracji, następnie rejestruje i loguje się, by w końcu dodać komentarz. Taki rozbudowany scenariusz testowy ma zastosowanie w sytuacji, gdy chcemy sprawdzić, czy zmiany dokonane w jakiejś funkcjonalności serwisu internetowego nie popsuły działania innych funkcjonalności.
W artykule „Przypadek testowy. Teoria i praktyka” opublikowanym w magazynie Core, Radosław Smilgin pisze, że dobry opis przypadku testowego powinien zawierać m.in. „wstępne i końcowe warunki wykonania. Warunki wstępne umożliwiają nam odpowiednie przygotowanie środowiska do wykonania testu. Z kolei końcowe warunki umożliwiają nam przede wszystkim łączenie przypadków w scenariusze, gdzie informacja wyjściowa z jednego przypadku jest informacją wejściową dla kolejnego przypadku”.
Dlatego scenariusze powinny raczej obejmować jedną funkcjonalność. Im więcej wynikających z siebie przypadków testowych będzie zawartych w scenariuszu testowym, tym większe prawdopodobieństwo, że wykonywanie scenariusza zawiesi się na przypadku testowym, dla którego wynik będzie negatywny. W powyższym przykładzie rozbudowanego scenariusza, jego wykonanie może się zatrzymać, gdy użytkownik chcący dodać komentarz do artykułu zarejestruje się i otrzyma maila, ale link potwierdzający rejestrację okaże się niepoprawny i poprowadzi do nieistniejącej strony.
Z czego powinien składać się scenariusz
Tutaj zacytuję fragment artykułu Karoliny Kowalskiej na bulldogjob.pl.
Scenariusz testowy powinien składać się z następujących elementów:
- Identyfikacja scenariusza testowego – w tej sekcji dokumentowane są takie dane jak: :
- identyfikator scenariusza
- nazwa scenariusza
- opis scenariusza (cele)
- typ scenariusza (np. testy funkcjonalne, bezpieczeństwa)
- Wykaz czynności przygotowawczych scenariusza testowego – spis wszystkich czynności, które należy wykonać przed przystąpieniem do wykonywania danego scenariusza testowego. Takimi czynnościami przygotowawczymi mogą być:
- weryfikacja poprawności instalacji i konfiguracji testowanego oprogramowania
- weryfikacja narzędzi potrzebnych do wykonania i udokumentowania testów
- weryfikacja użytkowników i ich uprawnień niezbędnych do przeprowadzenia testów
- Wykaz przypadków testowych – w tej sekcji należy zidentyfikować i uporządkować wszystkie przypadki testowe przewidziane do realizacji danego scenariusza testowego.
- Wykaz czynności końcowych scenariusza testowego – wykaz czynności, jakie należy wykonać po zakończeniu testów w ramach danego scenariusza. Są to czynności, bez których niemożliwe byłoby wykonanie kolejnych scenariuszy. Mogą być to również czynności wynikające z polityk bezpieczeństwa.
Czym scenariusz testowy różni się od przypadku testowego? Po co tworzy się scenariusze testowe?
Scenariusz jest swego rodzaju organizerem na przypadki testowe. Można go porównać do zestawu narzędzi do naprawiania opon lub dętek rowerowych, gdzie mamy m.in. mały zestaw kluczy do odkręcenia koła, klucz do szprych, śrubokręt, klej i łatkę, skrobaczkę do oczyszczenia klejonego miejsca, ewentualnie pompkę, itp. Scenariusz wymiany opony składa się więc z „przypadków testowych”, takich jak zdjęcie koła, zdjęcie opony i dętki, przygotowanie dętki do naprawy, przyklejenie łatki itd.
Scenariusze testowe zbierają więc poszczególne przypadki testowe w grupy lub sekwencje, które mogą być też rozgałęzione na różne warianty zachowania się użytkownika, np. przypadek wpisywania poprawnych, częściowo niepoprawnych i całkiem niepoprawnych danych lub niewpisanie żadnych danych w formularzu rejestracji nowego użytkownika.
Podsumowanie
Artykuł ten jest zaledwie wprowadzeniem do tematu scenariuszy testowych i zdaję sobie sprawę, że wielu aspektów jeszcze nie poruszyłem. Dużo uwagi poświęciłem definicji scenariusza testowego, a właściwie – wg aktualnego sylabusa – specyfikacji przypadków testowych. Wiedza teoretyczna oczywiście konieczna jest do zdania egzaminu, przydaje się na rozmowach rekrutacyjnych, a także daje pewne niezbędne podstawy dla rozpoczynających pracę jako junior testerzy. Natomiast warto mieć świadomość, że oficjalna terminologia i sylabusy to jedno, a praktyka testerska to drugie. Nie przywiązujmy się sztywno do definicji, dostosowujmy tę wiedzę teoretyczną do realnych wyzwań w pracy. Temat będziemy zapewne rozwijać w przyszłych wpisach. Czekamy na pytania i komentarze z Waszej strony!
* Zdjęcie tytułowe: Nuno Silva na Unsplash
Suchar na początku- super:-)