Po zapoznaniu się z podstawowymi definicjami i zasadami testowania, nadszedł czas, aby przyjrzeć się, jak te działania są zorganizowane w praktyce.
Testowanie nie jest chaotycznym zbiorem przypadkowych czynności, ale ustrukturyzowanym procesem, który składa się z logicznie powiązanych grup działań.
Zrozumienie tego procesu jest kluczowe dla efektywnego zarządzania testami i zapewnienia ich spójności z celami projektu.
W tej lekcji omówimy fundamentalny proces testowy zdefiniowany przez ISTQB, składający się z głównych grup czynności testowych.
Należy pamiętać, że chociaż przedstawimy te grupy czynności w pewnej logicznej kolejności, w rzeczywistych projektach często są one realizowane iteracyjnie lub równolegle.
Na przykład, analiza testów może prowadzić do potrzeby aktualizacji planu testów, a wykonanie testów może ujawnić potrzebę zaprojektowania nowych przypadków testowych.
Model procesu testowego stanowi ramy, które mogą być dostosowywane do konkretnego cyklu życia oprogramowania (SDLC) i kontekstu projektu.
Główne Grupy Czynności Testowych
Fundamentalny proces testowy według ISTQB obejmuje następujące główne grupy czynności:
- Planowanie testów (Test planning)
- Monitorowanie i sterowanie testami (Test monitoring and control)
- Analiza testów (Test analysis)
- Projektowanie testów (Test design)
- Implementacja testów (Test implementation)
- Wykonanie testów (Test execution)
- Zakończenie testów (Test completion)
Przyjrzyjmy się bliżej każdej z tych grup.
1. Planowanie Testów (Test Planning)
Planowanie testów to czynność polegająca na zdefiniowaniu celów testowania oraz określeniu podejścia, które najlepiej pozwoli osiągnąć te cele w ramach ograniczeń narzuconych przez kontekst projektu (np. budżet, harmonogram, dostępne zasoby, ryzyka).
Jest to kluczowy etap, który nadaje kierunek wszystkim późniejszym działaniom testowym.
Główne zadania w ramach planowania testów obejmują:
- Określenie zakresu, celów i ryzyk związanych z testowaniem.
- Definiowanie ogólnego podejścia do testowania (strategii testów), w tym poziomów testów, typów testów i kryteriów wejścia/wyjścia.
- Planowanie działań testowych, w tym identyfikacja zadań, szacowanie pracochłonności i zasobów.
- Określenie harmonogramu działań testowych.
- Wybór metryk do monitorowania postępu i jakości testów.
- Ustalenie budżetu na działania testowe.
Wynikiem planowania jest zazwyczaj Plan Testów, dokument opisujący wszystkie powyższe aspekty.
Planowanie jest czynnością ciągłą, a plan testów może być aktualizowany w miarę postępu projektu i pojawiania się nowych informacji. (Szczegółowo omówimy planowanie w Rozdziale 5).
2. Monitorowanie i Sterowanie Testami (Test Monitoring and Control)
Monitorowanie i sterowanie testami to działania trwające przez cały projekt.
Monitorowanie polega na ciągłym porównywaniu rzeczywistego postępu prac testowych z planem testów oraz na zbieraniu informacji i metryk dotyczących procesu testowego.
Sterowanie polega na podejmowaniu działań korygujących, gdy monitorowanie wykaże odchylenia od planu lub gdy zidentyfikowane ryzyka zaczną się materializować.
Główne zadania obejmują:
- Mierzenie i analizowanie wyników testów.
- Monitorowanie i dokumentowanie postępu testów, pokrycia testowego i kryteriów wyjścia.
- Raportowanie postępów i statusu testów do interesariuszy.
- Podejmowanie działań w odpowiedzi na zidentyfikowane ryzyka i odchylenia od planu (np. zmiana priorytetów testów, alokacja dodatkowych zasobów, zmiana harmonogramu).
Celem monitorowania i sterowania jest zapewnienie, że proces testowy przebiega zgodnie z planem i efektywnie przyczynia się do osiągnięcia celów projektu. (Szerzej omówimy to w Rozdziale 5).
3. Analiza Testów (Test Analysis)
Analiza testów to czynność polegająca na analizie podstawy testów w celu zidentyfikowania testowalnych cech i zdefiniowania powiązanych z nimi warunków testowych.
Podstawa testów to wszystkie dokumenty, na podstawie których można określić wymagania dotyczące komponentu lub systemu (np. specyfikacje wymagań, dokumentacja projektowa, kod źródłowy, analiza ryzyka).
Analiza testów odpowiada na pytanie: "Co testować?".
Główne zadania obejmują:
- Analizowanie podstawy testów pod kątem testowalności (czy wymagania są jasne, kompletne, mierzalne?).
- Identyfikowanie cech (funkcji, charakterystyk) systemu, które mają być przetestowane.
- Definiowanie i priorytetyzowanie warunków testowych dla każdej cechy (warunek testowy to element lub zdarzenie, które może być zweryfikowane za pomocą jednego lub więcej przypadków testowych, np. "sprawdź logowanie z poprawnym hasłem").
- Ustalanie powiązań (traceability) między podstawą testów, warunkami testowymi i innymi artefaktami.
Wynikiem analizy są zdefiniowane i spriorytetyzowane warunki testowe, które stanowią podstawę do dalszego projektowania testów.
4. Projektowanie Testów (Test Design)
Projektowanie testów polega na przekształceniu warunków testowych w konkretne przypadki testowe wysokiego poziomu.
Odpowiada na pytanie: "Jak testować?".
Na tym etapie wybiera się odpowiednie techniki projektowania testów (czarnoskrzynkowe, białoskrzynkowe, oparte na doświadczeniu – omówione w Rozdziale 4), aby stworzyć efektywne przypadki testowe.
Główne zadania obejmują:
- Projektowanie i priorytetyzowanie przypadków testowych oraz zestawów przypadków testowych.
- Identyfikowanie niezbędnych danych testowych do wsparcia warunków i przypadków testowych.
- Projektowanie środowiska testowego i identyfikacja wymaganej infrastruktury i narzędzi.
- Ustalanie dwukierunkowych powiązań między podstawą testów, warunkami testowymi, przypadkami testowymi i procedurami testowymi.
Wynikiem projektowania są przypadki testowe (opisujące kroki i oczekiwane rezultaty), zidentyfikowane dane testowe i opis wymaganego środowiska.
5. Implementacja Testów (Test Implementation)
Implementacja testów to etap, na którym przygotowuje się wszystko, co jest potrzebne do wykonania testów.
Obejmuje to tworzenie konkretnych zasobów testowych (testware) i przygotowanie środowiska.
Główne zadania obejmują:
- Tworzenie i priorytetyzowanie procedur testowych (szczegółowych skryptów opisujących kroki wykonania przypadków testowych).
- Tworzenie zestawów testów (grup procedur testowych) i ustalanie harmonogramu ich wykonania.
- Budowanie środowiska testowego, w tym konfiguracja narzędzi, systemów, danych.
- Przygotowanie i weryfikacja danych testowych.
- Weryfikacja i aktualizacja powiązań między podstawą testów, warunkami, przypadkami, procedurami i zestawami testów.
Wynikiem implementacji są gotowe do wykonania procedury i zestawy testowe, przygotowane środowisko testowe oraz dane testowe.
6. Wykonanie Testów (Test Execution)
Wykonanie testów to czynność polegająca na uruchamianiu zestawów testów zgodnie z ustalonym harmonogramem.
Główne zadania obejmują:
- Rejestrowanie identyfikatorów i wersji obiektu testowego, narzędzi testowych i testware.
- Wykonywanie testów manualnie lub za pomocą narzędzi do automatyzacji.
- Porównywanie rzeczywistych wyników z oczekiwanymi rezultatami.
- Analizowanie anomalii w celu ustalenia ich prawdopodobnych przyczyn (np. czy to defekt w oprogramowaniu, błąd w teście, czy problem środowiskowy).
- Raportowanie defektów na podstawie zaobserwowanych awarii.
- Rejestrowanie wyników wykonania testów (np. status: zaliczony, niezaliczony, zablokowany).
- Weryfikacja i aktualizacja powiązań między przypadkami testowymi, procedurami, wynikami i zarejestrowanymi defektami.
Wynikiem wykonania są logi testów, raporty o defektach oraz udokumentowany status wykonania poszczególnych testów.
7. Zakończenie Testów (Test Completion)
Zakończenie testów to ostatnia grupa czynności, która ma miejsce po osiągnięciu określonych kamieni milowych projektu (np. zakończenie poziomu testów, wydanie oprogramowania, zakończenie projektu Agile).
Polega na zebraniu danych ze wszystkich zakończonych działań testowych w celu skonsolidowania doświadczeń, testware oraz wszelkich innych istotnych informacji.
Główne zadania obejmują:
- Sprawdzenie, czy wszystkie raporty o defektach zostały zamknięte lub przekazane do dalszych działań.
- Tworzenie raportu podsumowującego testy (Test Summary Report) dla interesariuszy.
- Finalizowanie i archiwizowanie środowiska testowego, danych testowych, infrastruktury testowej i innego testware w celu późniejszego ponownego użycia.
- Przekazanie testware zespołowi utrzymania, innym zespołom projektowym lub interesariuszom.
- Analizowanie wniosków (lessons learned) z zakończonych działań testowych w celu doskonalenia procesu testowego w przyszłości.
- Wykorzystanie zebranych informacji do poprawy dojrzałości procesu testowego.
Wynikiem zakończenia testów jest raport podsumowujący, zarchiwizowane testware oraz wnioski i rekomendacje dotyczące usprawnienia procesu.
Podsumowanie
Fundamentalny proces testowy ISTQB dostarcza ustrukturyzowanych ram dla działań testowych.
Obejmuje on planowanie, monitorowanie i sterowanie, analizę, projektowanie, implementację, wykonanie oraz zakończenie testów.
Chociaż przedstawiony liniowo, w praktyce proces ten jest często iteracyjny i dostosowywany do kontekstu projektu.
Zrozumienie poszczególnych grup czynności, ich celów i wyników jest niezbędne dla każdego profesjonalnego testera.