Scenariusze testowe pozwalają zweryfikować poprawność testowanego oprogramowania, a także sprawdzić czy założone w specyfikacji projektowej procesy biznesowe zostały zaimplementowane poprawnie. Innymi słowy jest to ciąg akcji pozwalających na przeprowadzenie testu.
Główną istotą podczas tworzenia scenariuszy testowych jest skupienie się na najważniejszych obszarach aplikacji z punktu widzenia użytkownika końcowego.
Aby tester napisał dobry scenariusz potrzebny jest przede wszystkim obszerny zasób informacji na temat aplikacji, którą chcemy przetestować. Diabeł tkwi w szczegółach, zatem ważne jest, aby przypadki w scenariuszu testowym były rozpisane w taki sposób, aby każda osoba przychodząca z „zewnątrz”, która nie posiada żadnych informacji o projekcie, była w stanie wykonać testy aplikacji zgodnie z przygotowanym skryptem.
W procesie tworzenia scenariuszy technika „lepiej więcej niż mniej” jest bardzo dobrą praktyką, ponieważ pozwala na przejście potencjalnych ścieżek przyszłych użytkowników w aplikacji i wyśledzenie błędów z jakimi mogliby się spotkać użytkownicy. Warto wypisać jak najwięcej możliwych ścieżek przejść użytkownika w aplikacji, starajmy się jednak rozsądnie ograniczać ilość przypadków testowych, chociażby ze względu na ogromny zasób czasu jaki należy poświęcić na ich przygotowanie. Tworzenie scenariuszy testowych w pracy testera nie jest koniecznością, jednak pozwala na usystematyzowanie pracy i uniknięcia zatracenia się w „wirze testowania” eksploracyjnego.
Iteracyjność projektu i dostosowywanie funkcji sprawia, że zmieniają się także wymagania, a wraz z nimi scenariusze testowe. Aby dochodziło także do zmian scenariuszy konieczne są okresowych przeglądy i uaktualnienia, na przykład po zmianach założeń biznesowych w trakcie trwania projektu.
Podobnie jak sportowcy, testerzy także muszą trenować. Powinni wciąż rozwijać umiejętności kreatywnego myślenia, komunikacji z pozostałymi członkami zespołu, a co za tym idzie efektywnego pozyskiwania informacji. Umiejętności miękkie pozwalają zdobywać dogłębną wiedzę o projekcie w przystępniejszy sposób. Umiejętność efektywnego tworzenia scenariuszy testowych można zdobyć jedynie poprzez praktykę oraz dogłębne zrozumienie celu powstawania aplikacji, która ma zostać przetestowana.
Nie jest możliwe odnalezienie wszystkich błędów w systemie, jednak opierając testy na ścieżkach rozpisanych w scenariuszu testowym dąży się do tego, aby wyeliminować wszystkie błędy krytyczne znajdujące się w aplikacji, np. takie, które uniemożliwiają korzystanie z niej. Ważne jest, aby scenariusz testowy pokrywał główne funkcjonalności jakie mają zostać zaimplementowane w systemie tak, aby zadowolić użytkownika końcowego i spełnić założone wcześniej wymagania.
Napisanie dobrego scenariusza testowego w początkowej fazie tworzenia oprogramowania pozwala zaoszczędzić wiele nakładu czasu w kolejnych etapach.
Szukasz software house’u, który dba o jakość kodu? Skontaktuj się z nami.
Wskazówki jak pisać scenariusze testowe:
Poniżej 4 wskazówki pomocne przy tworzeniu scenraiuszów testowych aplikacji mobilnych/webowych.
1. Nadawanie nazwy, opisu i niezbędnych informacji dla każdego przypadku testowego
Jest to dobra praktyka, która pozwala już na pierwszy rzut oka zweryfikować czego dotyczy konkretny przypadek testowy. Ułatwia odnalezienie się w scenariuszu testerom, którzy nie uczestniczyli w projektowaniu przypadków testowych, a także osobie, która tworzyła scenariusz jednak “odłożyła go” na rzecz pracy nad innym projektem. Każdy przypadek powinien zawierać krótki, lecz zrozumiały opis obejmujący wszelkie informacje, które pozwalają odpowiedzieć na pytanie “Co chcę przetestować?”. Określenie założeń i warunków wstępnych koniecznych do wykonania testu, a także uzupełnienie przypadku o niezbędne dane testowe do wykonania go.
2. Pisanie przypadków pod użytkownika końcowego
Podczas budowania scenariusza testowego należy postawić się po stronie użytkownika końcowego. Dobry scenariusz testowy to taki, który pokrywa jak najwięcej ścieżek, przez które będzie przechodził potencjalny użytkownik w aplikacji, stąd ogromne znaczenie odgrywa dogłębna analiza projektu przez testera, a także kontakt z klientem, aby możliwe było jak najlepsze zrozumienie idei wytwarzanego produktu, a także zapewnienie jak najlepszego wrażenia podczas korzystaniu z aplikacji przez klienta i użytkowników końcowych.
3. Grupowanie przypadków testowych
Często scenariusze testowe są budowane w arkuszach kalkulacyjnych. Wraz ze wzrostem przypadków testowych w scenariuszu odnajdywanie się w arkuszu może sprawiać problem. Obecnie istnieje wiele narzędzi pozwalających na zarządzanie scenariuszami testowymi w sposób bardziej efektywny, jak na przykład używając oprogramowania do budowania map myśli. Po zakończeniu pracy nad scenariuszem konieczna jest dokładna analiza tego, co uda nam się przetestować ze stworzonym scenariuszem. Dzięki temu, tester jest w stanie określić: czy scenariusz jest wystarczająco dobry, czy pozwala zweryfikować wymagania projektowe, czy przypadki są łatwe do zrozumienia i wykonania przez testera, a także czy jest możliwość ich ponownego wykorzystania.
4. Uniwersalność przypadków testowych
Przy kolejnych (nowych) projektach możemy wykorzystać część przypadków testowych ze scenariuszy, które powstały wcześniej przy realizacji innych projektów. Często także podczas pisania scenariusza możemy wykorzystać część testu z przypadku, który został już rozpisany w scenariuszu dla zupełnie innego przypadku testowego.
Biorąc pod uwagę fakt, że liczba przypadków testowych wzrasta wraz z każdą nową funkcją oraz ze względu na ograniczenia czasowe i budżetowe, ogromnym wyzwaniem jest stworzenie uniwersalnego scenariusza testowego, który zapewni stuprocentowe pokrycie testami każdego z obszarów aplikacji. Efektywne przygotowywanie scenariuszy testowych jest umiejętnością, którą da się nabyć tylko w praktyce.
Jeśli podczas tworzenia scenariuszy testowych stawiamy się w perspektywie użytkownika końcowego, to jesteśmy na dobrej drodze. Warto skorzystać np. z priorytetyzacji przypadków. Aby tego dokonać konieczna jest analiza i zdefiniowanie, które funkcjonalności w systemie są kluczowe. Wykonywanie przypadków testowych w oparciu o priorytety znacznie zmniejszy wysiłki poświęcone na testy regresyjne, które są wykonywane, aby zweryfikować czy zmiany wprowadzone w oprogramowaniu nie spowodowały błędów, a jakość wypracowanych rozwiązań sprawi, że użytkownicy będą chcieli korzystać z produktu.