Lekcja 1.5: Proces Testowy

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:

  1. Planowanie testów (Test planning)
  2. Monitorowanie i sterowanie testami (Test monitoring and control)
  3. Analiza testów (Test analysis)
  4. Projektowanie testów (Test design)
  5. Implementacja testów (Test implementation)
  6. Wykonanie testów (Test execution)
  7. 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.

Najczęściej Zadawane Pytania (FAQ)

Czy proces testowy zawsze przebiega w tej kolejności?
Niekoniecznie. Chociaż kolejność (Planowanie -> Analiza -> Projektowanie -> Implementacja -> Wykonanie -> Zakończenie) jest logiczna, w praktyce działania te często się przenikają, są iteracyjne lub wykonywane równolegle. Monitorowanie i sterowanie odbywa się przez cały czas trwania procesu.
Kto jest odpowiedzialny za poszczególne etapy procesu testowego?
Odpowiedzialność może się różnić w zależności od organizacji i projektu. Planowanie, monitorowanie i sterowanie często leżą w gestii Kierownika Testów (Test Managera). Analizą, projektowaniem, implementacją i wykonaniem zajmują się Analitycy Testów i Testerzy. W podejściach zwinnych odpowiedzialność jest często rozproszona na cały zespół.
Czym różni się analiza testów od projektowania testów?
Analiza odpowiada na pytanie "Co testować?", identyfikując testowalne cechy i warunki testowe na podstawie podstawy testów. Projektowanie odpowiada na pytanie "Jak testować?", przekształcając warunki testowe w konkretne przypadki testowe i określając potrzebne dane oraz środowisko.
Czym różni się projektowanie testów od implementacji testów?
Projektowanie tworzy abstrakcyjne przypadki testowe (co sprawdzić, jakie kroki, jaki wynik). Implementacja bierze te przypadki i tworzy konkretne, gotowe do wykonania artefakty: procedury testowe (szczegółowe skrypty), zestawy testów, przygotowuje środowisko i dane.
Czy plan testów tworzy się tylko raz na początku projektu?
Nie. Planowanie testów jest czynnością ciągłą. Początkowy plan testów jest tworzony na początku, ale powinien być regularnie przeglądany i aktualizowany w miarę postępu projektu, pojawiania się nowych informacji, zmian wymagań czy identyfikacji nowych ryzyk.
Co to jest "podstawa testów"?
Podstawa testów (test basis) to dowolny dokument lub artefakt, na podstawie którego można określić wymagania dotyczące systemu lub komponentu i zaprojektować testy. Przykłady to specyfikacje wymagań, historyjki użytkownika, dokumentacja projektowa, kod, analiza ryzyka, standardy.
Co to jest "warunek testowy"?
Warunek testowy (test condition) to element lub zdarzenie komponentu lub systemu, które może być zweryfikowane za pomocą jednego lub więcej przypadków testowych. Jest to wynik analizy testów, np. "sprawdź logowanie z niepoprawnym hasłem", "zweryfikuj obliczenie podatku VAT dla stawki 23%".
Co to jest "przypadek testowy"?
Przypadek testowy (test case) to zestaw warunków wstępnych, danych wejściowych, kroków działania i oczekiwanych rezultatów, opracowany w celu weryfikacji zgodności z określonym wymaganiem lub warunkiem testowym. Jest to wynik projektowania testów.
Co to jest "procedura testowa"?
Procedura testowa (test procedure), często nazywana skryptem testowym, to sekwencja kroków do wykonania przypadku testowego. Opisuje ona szczegółowo, jak skonfigurować środowisko, jakie dane wprowadzić i jakie czynności wykonać. Jest to wynik implementacji testów.
Kiedy kończy się proces testowy?
Czynności zakończenia testów wykonuje się po osiągnięciu określonych kamieni milowych, np. zakończeniu danego poziomu testów (np. testów systemowych), wydaniu wersji oprogramowania, zakończeniu sprintu w Agile lub całkowitym zakończeniu projektu.
Czy ten proces stosuje się w Agile?
Tak, ale w sposób bardziej zwinny i iteracyjny. Wszystkie te grupy czynności występują w Agile, ale są często wykonywane w krótszych cyklach, równolegle i przez cały zespół. Planowanie może być mniej formalne, a dokumentacja lżejsza, ale podstawowe cele każdej grupy czynności pozostają aktualne.
Co to jest "traceability" (powiązanie)?
Traceability to możliwość śledzenia powiązań między różnymi artefaktami procesu testowego i deweloperskiego. Na przykład, powiązanie wymagania z warunkami testowymi, przypadkami testowymi, wynikami testów i zgłoszonymi defektami. Pomaga to w ocenie pokrycia i analizie wpływu zmian.
Jaki jest najważniejszy dokument w procesie testowym?
Trudno wskazać jeden najważniejszy, ponieważ zależy to od kontekstu. Plan Testów jest kluczowy dla zarządzania. Przypadki Testowe są podstawą wykonania. Raporty o Defektach są kluczowym wynikiem dla poprawy jakości. Raport Podsumowujący Testy jest ważny dla interesariuszy.
Czy zawsze trzeba tworzyć wszystkie dokumenty?
Poziom formalności i zakres dokumentacji zależą od kontekstu projektu (zasada 6). W niektórych projektach (np. regulowanych) wymagana jest pełna dokumentacja. W innych (np. małe projekty Agile) dokumentacja może być minimalna, a nacisk kładziony jest na komunikację i działające oprogramowanie.
Co jeśli podczas wykonania testu wynik jest inny niż oczekiwany?
Należy to przeanalizować. Może to być spowodowane defektem w oprogramowaniu, błędem w samym teście (np. złe kroki, błędny oczekiwany rezultat), problemem ze środowiskiem testowym lub niepoprawnymi danymi. Jeśli podejrzewamy defekt w oprogramowaniu, należy go zaraportować.

Przykładowe Pytania Egzaminacyjne

Pytanie 1 (K1): Która z poniższych grup czynności NIE należy do fundamentalnego procesu testowego według ISTQB?

  • a) Analiza testów
  • b) Debugowanie
  • c) Wykonanie testów
  • d) Zakończenie testów

Poprawna odpowiedź: b (Debugowanie, czyli znajdowanie i usuwanie przyczyn defektów, jest czynnością deweloperską, a nie częścią procesu testowego, chociaż testowanie dostarcza informacji do debugowania.)

Pytanie 2 (K2): Na którym etapie procesu testowego definiuje się warunki testowe?

  • a) Planowanie testów
  • b) Analiza testów
  • c) Projektowanie testów
  • d) Implementacja testów

Poprawna odpowiedź: b (Analiza testów polega na analizie podstawy testów i zdefiniowaniu warunków testowych, czyli odpowiedzi na pytanie "Co testować?")

Pytanie 3 (K2): Porównywanie rzeczywistego postępu testów z planem i podejmowanie działań korygujących to główne zadania której grupy czynności?

  • a) Planowanie testów
  • b) Monitorowanie i sterowanie testami
  • c) Wykonanie testów
  • d) Zakończenie testów

Poprawna odpowiedź: b (Monitorowanie to śledzenie postępu, a sterowanie to podejmowanie działań w odpowiedzi na odchylenia od planu.)