W niniejszym sylabusie omówiono dwa stanowiska związane z testowaniem — są to kierownicy testów i testerzy. Czynności i zadania wykonywane przez osoby pełniące obie role zależą od kontekstu projektu i produktu, umiejętności konkretnych osób oraz specyfiki organizacji.
Kierownik testów ponosi ogólną odpowiedzialność za proces testowy i sprawne kierowanie czynnościami związanymi z testowaniem. Rolę tę może pełnić zarówno osoba zajmująca się zawodowo kierowaniem testami, jak i kierownik projektu, kierownik zespołu programistów lub kierownik ds. zapewnienia jakości. Ponadto w przypadku większych projektów lub organizacji kierownik lub koordynator testów może mieć pod sobą kilka zespołów testowych, którymi kierują liderzy testów lub testerzy prowadzący.
W zakres obowiązków kierownika testów wchodzą zwykle następujące zadania:
- opracowywanie lub dokonywanie przeglądu strategii testów i polityki testów danej organizacji;
- planowanie testów, w tym uwzględnienie kontekstu oraz zapoznanie się z celami testów i czynnikami ryzyka w zakresie testowania (zadanie to może obejmować dokonywanie wyboru podejść do testowania, szacowanie czasu, pracochłonności i kosztów testowania, pozyskiwanie zasobów, definiowanie poziomów testów i cykli testowych oraz planowanie zarządzania defektami);
- sporządzanie i aktualizowanie planu testów;
- koordynowanie realizacji strategii testów i planu testów wraz z kierownikami projektu i innymi interesariuszami;
- prezentowanie punktu widzenia testerów w ramach innych czynności projektowych (takich jak planowanie integracji);
- inicjowanie procesów analizy, projektowania, implementacji i wykonywania testów, monitorowanie rezultatów testów oraz sprawdzanie statusu kryteriów wyjścia (definicji ukończenia);
- przygotowanie i dostarczenie raportu z postępu testów i raportu sumarycznego z testów na podstawie zgromadzonych informacji;
- dostosowywanie planu testów do rezultatów i postępu testów (dokumentowanych niekiedy w raportach o statusie testów i raportach z ukończenia testów) oraz podejmowanie niezbędnych działań w zakresie nadzoru nad testami;
- udzielanie pomocy w tworzeniu efektywnego mechanizmu zarządzania konfiguracją testaliów i systemu zarządzania defektami;
- wprowadzanie odpowiednich miar służących do mierzenia postępu testów oraz oceniania jakości testowania i produktu;
- udzielanie pomocy przy wyborze i implementacji narzędzi służących do realizacji procesu testowego, w tym przy określaniu budżetu przeznaczonego na wybór narzędzi (i potencjalnie na ich zakup lub pomoc techniczną) oraz wyznaczanie czasu na realizację projektów pilotażowych, a także udzielanie dalszej pomocy w zakresie korzystania z narzędzi;
- podejmowanie decyzji o implementacji środowisk testowych;
- monitorowanie procesu testowania oraz sporządzanie i przedstawianie raportów z testów na podstawie zgromadzonych informacji;
- promowanie testerów i zespołu testowego oraz reprezentowanie ich punktu widzenia w organizacji;
- stwarzanie możliwości do rozwijania umiejętności i kariery testerów (np. poprzez plan szkoleń, ewaluacje osiągnięć, coaching).
Sposób wykonywania obowiązków kierownika testów zależy od cyklu życia oprogramowania. W ramach zwinnego wytwarzania oprogramowania niektóre z wyżej wymienionych zadań — a zwłaszcza zadania związane z codziennym testowaniem w obrębie zespołu zwinnego — wykonuje tester należący do tego zespołu. Niektóre zadania, które obejmują swoim zasięgiem kilka zespołów lub całą organizację bądź są związane z zarządzaniem kadrami, mogą wykonywać kierownicy testów spoza zespołu programistycznego (zwani niekiedy trenerami testowymi). Zarządzanie procesem testowym opisane jest bardziej szczegółowo w [Black 2009].
Typowe zadania testera to między innymi:
- dokonywanie przeglądu planów testów i uczestniczenie w ich opracowywaniu;
- analizowanie, dokonywanie przeglądu i ocenianie wymagań, historyjek użytkownika i kryteriów akceptacji, specyfikacji oraz modeli (tj. podstawy testów) pod kątem testowalności;
- identyfikowanie i dokumentowanie warunków testowych oraz rejestrowanie powiązań między przypadkami testowymi, warunkami testowymi i podstawą testów;
- projektowanie, konfigurowanie i weryfikowanie środowisk testowych (często w porozumieniu z administratorami systemu i sieci);
- projektowanie i implementowanie przypadków testowych i skryptów testowych;
- przygotowywanie i pozyskiwanie danych testowych;
- tworzenie harmonogramu wykonywania testów;
- wykonywanie testów, ocenianie rezultatów i dokumentowanie odchyleń od oczekiwanych rezultatów;
- korzystanie z odpowiednich narzędzi usprawniających proces testowy;
- automatyzowanie testowania w zależności od potrzeb (zadanie to może być wykonywane z pomocą programisty lub eksperta ds. automatyzacji testowania);
- ewaluacja charakterystyk niefunkcjonalnych, takich jak: wydajność, niezawodność, użyteczność, zabezpieczenia, zgodność, przenaszalność;
- dokonywanie przeglądu testów opracowanych przez inne osoby.
Osoby zajmujące się analizą testów, projektowaniem testów, tworzeniem określonych typów testów czy automatyzacją testowania mogą być specjalistami w tych dziedzinach. Ponadto, w zależności od czynników ryzyka związanych z produktem i projektem oraz od wybranego modelu cyklu życia oprogramowania, różne osoby mogą przyjmować rolę testerów na różnych poziomach testowania. Na poziomie testowania modułowego i integracyjnego testerami są często programiści, na poziomie testowania akceptacyjnego — analitycy biznesowi, eksperci merytoryczni i użytkownicy, na poziomie testowania systemowego i integracyjnego — członkowie niezależnego zespołu testowego, a na poziomie testów akceptacyjnych — operatorzy i/lub administratorzy systemu.