Czym jest scenariusz testowy?

Czym jest scenariusz testowy?
Scenariusz testowy to jeden z ważniejszych elementów projektowania i prowadzenia testów. Czy jednak wszyscy postrzegają go w ten sam sposób?

Od kiedy pracuję nad testowaniem mam w głowie jeden obraz scenariusza testowego. i kiedy zaczynam konfrontować swoją wiedzę i doświadczenie z testerami z innych firm nagle okazuje się, że posługując się tym samym słowem mówimy o czymś zupełnie innym.

Zacznijmy jednak od początku, czyli od ISTQB. kiedy w słowniku wyszukujemy hasło "scenariusz testowy" nie otrzymujemy definicji, a jedynie przeniesienie na inna definicję - "specyfikacja procedury testowej" czyli dokument określający ciąg akcji umożliwiających wykonanie testu. Znana także jako skrypt testowy lub manualny skrypt testowy. Nie wiem, jak Wam, ale mi mówi to naprawdę niewiele. Pewną podpowiedzią będzie jednak to, że definicja pochodzi z normy IEEE 829.

Przeglądając standard możemy znaleźć pełniejszą informację o celu procedury - to specify the steps for executing a set of test cases or, more generally, the steps used to analyze a software item in order to evaluate a set of features. Celem jest wyspecyfikowanie kroków do uruchomienia zestawu przypadków testowych by sprawdzić (przeanalizować) zbiór funkcji.

Procedura jest zestawem zadań do wykonania, gdzie przypadek testowy może być tylko jednym z zadań. Większość publikacji korzysta z tej definicji, ale każda interpret.j. ją inaczej.

Kolejnym miejscem gdzie można znaleźć informacje o scenariuszach testowych są blogi praktyków.

Na blogu buldogjob czytamy:

Scenariusz testowy jest to dokument zawierający zbiór przypadków testowych (kroków), potrzebnych do sprawdzenia poprawności działania systemu w określonym zakresie. Każdy scenariusz powinien być odzwierciedleniem dokładnie określonej funkcjonalności.

Każdy scenariusz testowy powinien składać się z: identyfikacji scenariusza testowego, wykazu czynności przygotowawczych, przypadków testowych, czynności końcowych.

Scenariusz Testowy

Id Nazwa Opis Typ Czynności przygotowawcze Czynności końcowe
1 Dodawanie komentarzy pod postem Sprawdzenie poprawności działania funkcjonalności dodawania komentarzy pod postami. Testy funkcjonalne 1. Sprawdzić czy posiadamy odpowiednią wersję aplikacji.
2. Dodać post pod którym będzie można dodawać komentarze.
Usunąć post wraz ze wszystkimi komentarzami.

Przypadki Testowe

Lp. Pr. Nazwa Warunki wstępne Kroki wykonania Oczekiwany rezultat
1 1 Dodanie komentarza poprzez przycisk „Skomentuj” Istnieje post, pod którym można dodać komentarz. 1. Wpisać treść w pole z komentarzem.
2. Wpisać treść w pole z podpisem.
3. Kliknąć przycisk „Skomentuj”.
Komentarz został dodany. Na liście komentarzy prezent.j. się nowo dodany komentarz. Licznik komentarzy wzrósł o jeden.
2 1 Dodanie komentarza poprzez wciśnięcie klawisza enter Istnieje post, pod którym można dodać komentarz. 1. Wpisać treść w pole z komentarzem.
2. Wpisać treść w pole z podpisem.
3. Zaznaczyć checkbox „Wciśnij Enter, aby dodać komentarz”.
4. Wcisnąć klawisz enter.
Komentarz został dodany. Na liście komentarzy prezent.j. się nowo dodany komentarz. Licznik komentarzy wzrósł o jeden.
3 2 Próba dodania komentarza bez treści Istnieje post, pod którym można dodać komentarz. 1. Wpisać treść w pole z podpisem.
2. Kliknąć przycisk „Skomentuj”.
Na ekranie pojawia się komunikat o obligatoryjności pola komentarz. Komentarz nie został dodany.
4 2 Próba dodania komentarza bez podpisu Istnieje post, pod którym można dodać komentarz. 1. Wpisać treść w pole z komentarzem.
2. Kliknąć przycisk „Skomentuj”.
Na ekranie pojawia się komunikat o obligatoryjności pola podpis. Komentarz nie został dodany.

Powyżej przedstawiłam kilka przykładowych przypadków testowych, ale oczywiście można również sprawdzać, co się stanie, gdy wpiszemy zbyt dużo znaków, a co, gdy wpiszemy niedozwolone znaki.

Analizując ten przykład możemy dojść do wniosku, że scenariusz jest prostym zbiorem niskopoziomowych testów stworzonych dla jednej funkcji.

Monika Lichota – Cywińska na swoim blogu daje przykład czym w jej opinii jest scenariusz.

Przyjmijmy, że mamy trzy przypadki testowe:

  1. Wysłanie wiadomości e-mail do jednego użytkownika.
  2. Wysłanie wiadomości e-mail do wielu użytkowników.
  3. Zalogowanie użytkownika do systemu pocztowego.

Powyższe przypadki testowe powinny być opatrzone odpowiednimi wartościami (nazwa, krótki opis, warunki wstępne, data, itd), które tu pominę.

Scenariusz testowy, w naszym przykładzie to kilka kroków niezbędnych do wykonania każdego z przypadków testowych osobno bądź w ciągu akcji a więc:

  1. Wprowadź login i hasło do systemu pocztowego. - Login i hasło użytkownika zostały uzupełnione.
  2. Otwórz okno nowej wiadomości e-mail. - Otwarte okno z nagłówkiem dla nowej wiadomości.
  3. Wprowadź adresata wiadomości - Został wprowadzony jeden adres mailowy w polu DO.
  4. Wpisz treść wiadomości....

itd...

zatem w tym scenariuszu testowym moglibyśmy umieścić akcje do wykonania dla każdego z zaplanowanych w tym przykładzie przypadków testowych.

Mamy tu zupełnie inne podejście, gdzie scenariusz stanowi logicznie powiązane kroki, prowadzące do weryfikacji całego procesu stworzenia maila i jego przesłania.

Na blogu Cherry-IT znajdziemy następujące stwierdzenia o scenariuszu.

Co odróżnia scenariusze testowe od przypadków użycia systemu? Scenariusze są bardziej szczegółowe, ponieważ głównym zadaniem i założeniem jest przygotowanie do weryfikacji wszystkich dostępnych funkcji w aplikacji. Nie oznacza to, że przypadki użycia są nam kompletnie nieprzydatne. Jeśli zostały stworzone na etapie analizy to możemy je wykorzystać właśnie w procesie tworzenia scenariuszy testowych.

Scenariusz testowy może przybierać różne formy, poniżej przedstawiam przykład, który moim zdaniem jest najlepszy, ze względu na jasny i klarowny przekaz oraz łatwość jego interpretacji w późniejszych etapach pracy.

Drugi element składa się z części opisującej test oraz części opisującej rezultaty.  W części dotyczącej testu powinniśmy sprecyzować następujące elementy:

  • Cel testu – bardzo ważny element, na jego podstawie, po egzekucji, możemy podjąć decyzję czy test zakończył się sukcesem czy porażką, dzięki niemu wiemy również dokładnie co chcemy osiągnąć tym testem.
  • Stan początkowy/ warunki wstępne – jakie warunki powinny być spełnione, aby móc zacząć przeprowadzać test.
  • Akcja – kroki, które musimy wykonać, aby wykonać test. Kroki powinny być opisane bardzo dokładnie, tak aby każda osoba mogła je wykonać. Dodatkowo warto w tym miejscu opisać jak system powinien reagować na poszczególne kroki.
  • Test kończy się porażką.

Jaka jest różnica pomiędzy przypadkiem testowym a scenariuszem testowym? Ogólna różnica polega na tym, że scenariusz testowy zawiera wiele przypadków testowych. czyli możemy mieć scenariusz testowy testujący funkcję obsługi koszyka w sklepie internetowym, a scenariusz ten może się składać z poniższych przypadków testowych:

  1. Dodanie produktu do koszyka – przypadek pozytywny (dodajemy produkt do koszyka z sukcesem).
  2. Dodanie produktu do koszyka – przypadek negatywny (dodajemy produkt do koszyka, ale otrzymujemy komunikat o błędzie).
  3. Usunięcie produktu z koszyka – przypadek pozytywny (usuwamy produkt z koszyka z sukcesem).
  4. sunięcie produktu z koszyka – przypadek negatywny (usuwamy produkt z koszyka, ale otrzymujemy komunikat o błędzie, a produkt nadal jest w koszyku).

czyli w matematycznym sensie: ScenariuszTestowy= {PrzypadekTestowy1, PrzypadekTestowy2, PrzypadekTestowy3,….}

Tutaj widzimy podejście, w którym scenariusz jest zbiorem testów, które weryfikują jeden obszar. Kłóci się to z samym pojęciem scenariusza (np. filmowego), który jednak zakłada jakąś płynną i zmieniającą się akcję, jak również kłóci się z definicją ISTQB gdzie mamy do pokrycia wiele funkcji.

W kolejnej publikacji napiszę czym dla mnie jest scenariusz testowy. Oto kilka atrybutów mojej definicji scenariusza:

- możliwie najprostsza ścieżka przejścia przez oprogramowanie - choć opcjonalnie może zawierać również ścieżki alternatywne,

- pozytywne dane testowe (bez danych negatywnych) ponieważ negatywne dane zatrzymują nas w miejscu i nie pozwalają przejść dalej, albo ustawiają status systemu, który może zaburzyć scenariusz,

- zbiór logicznie powiązanych testów, które tworzą scenariusz (taki jak w filmie).

Grzegorz Ler

To powinno Cię zainteresować