Zasoby ludzkie
Promowanie testerów manualnych lub niedoświadczonych programistów do roli deweloperów automatyzacji może początkowo przynosić efekty, jednak w dłuższej perspektywie zwykle prowadzi do problemów z utrzymaniem i stabilnością testów. Automatyzacja to specjalistyczna dziedzina wymagająca odpowiednich kompetencji, a co za tym idzie — nie powinna być traktowana jako dodatkowe zadanie wykonywane „przy okazji” ani powierzana niedoświadczonemu zespołowi korzystającemu z prostych narzędzi typu „nagraj i odtwórz”. Również przydzielanie zasobów do automatyzacji w trybie dorywczym nie jest dobrym rozwiązaniem, ponieważ pisanie testów automatycznych to jedynie część pracy — równie istotną częścią obowiązków testera automatyzującego jest analizowanie uzyskiwanych wyników i naprawa uszkodzonych testów, co także pochłania znaczną ilość czasu.
Modele pracy można podzielić według poziomu zależności i niezależności zespołów:
- Wysoka zależność organizacyjna: Dedykowany zespół automatyzacji testów pracuje oddzielnie od zespołów developerskich. Takie rozwiązanie jest wygodne organizacyjnie, umożliwia szybkie zbudowanie spójnej infrastruktury i wiedzy w jednym miejscu, ale powoduje problemy komunikacyjne — automatyzacja jest często „spóźniona” w stosunku do zmian w produkcie i wymaga dodatkowej koordynacji oraz wsparcia developerów przy integracji i debugowaniu.
- Średnia zależność organizacyjna: Model „dzielonej odpowiedzialności” — deweloperzy budują komponenty infrastrukturalne i kluczowe elementy frameworka, a testerzy (często bez zaawansowanych umiejętności kodowania) korzystają z nich do przygotowywania scenariuszy testowych w stylu KDT. To podejście angażuje cały zespół QA, ale generuje ryzyko wąskich gardeł: każda zmiana w komponentach wymaga czasu i kompetencji developerów, przez co zależność między testerami a developerami utrudnia płynność pracy.
- Wysoka niezależność organizacyjna (zwinne podejście): Automatyzacja jest całkowicie powierzona developerom aplikacji w zespołach funkcjonalnych. Każdy zespół odpowiada za testy swoich funkcji i utrzymanie „zielonych” testów jako element Definition of Done. To podejście minimalizuje zależności i opóźnienia, ale wymaga wysokich kompetencji testowych i praktyki TDD/ATDD wśród programistów. Nie sprawdzi się w organizacjach, które nie mają doświadczonych developerów lub w których nie zadbano o standaryzację i transfer wiedzy.
Dodatkowo każda organizacja musi świadomie zdefiniować:
- Kto ponosi odpowiedzialność za badanie niepowodzeń testów?
- Jak zapewnić spójność standardów kodowania i projektowania testów między zespołami?
- Jak eliminować problemy wynikające z niskiej jakości frameworka lub jego niewystarczającej modularności?