W takich warunkach sprawdzone metody porządkowania pracy stają się niezbędne. Jednym z najskuteczniejszych narzędzi ograniczających ryzyko przeoczenia krytycznych działań są listy kontrolne (checklisty).
Przyczyny błędów proceduralnych
Człowiek dobrze radzi sobie z rozwiązywaniem problemów i podejmowaniem decyzji, ale ma ograniczoną pamięć operacyjną. W złożonych procedurach łatwo pominąć pojedynczy krok, szczególnie gdy praca odbywa się pod presją czasu lub w stresie.
Zjawisko to zostało szczegółowo opisane w lotnictwie i medycynie. To tam narodziła się koncepcja checklist jako narzędzia, które pomaga ograniczyć błędy proceduralne poprzez uporządkowanie kolejności działań i stworzenie punktów kontrolnych procesu. Podobnie jest w inżynierii oprogramowania. Proces wytwarzania systemów obejmuje wiele elementów: kod, dokumentację, konfigurację środowiska czy dane testowe. Każdy z nich wymaga weryfikacji.
Czym jest checklista
Checklista to uporządkowany spis czynności lub pytań, które mają zostać wykonane lub sprawdzone w określonym momencie procesu. Checklisty pełnią dwie podstawowe funkcje:
- Operacyjna (read-do) - lista określa kolejne kroki procesu i pomaga wykonać zadanie w odpowiedniej kolejności.
- Weryfikacyjna (do-confirm) - lista służy do sprawdzenia, czy wszystkie działania zostały wykonane.
Typy checklist
Wyróżniamy dwa podstawowe sposoby korzystania z list kontrolnych.
Checklisty read-do
W checklistach typu read-do użytkownik czyta kolejne punkty listy i wykonuje działania zgodne z ich kolejnością. To model przypominający instrukcję obsługi. Każdy krok jest wykonywany w dokładnie określonej kolejności, a po jego wykonaniu następuje przejście do kolejnego punktu listy. Tego typu listy sprawdzają się najlepiej, gdy:
- kolejność działań ma znaczenie,
- pominięcie kroku może prowadzić do poważnych konsekwencji,
- proces jest rzadko wykonywany.
A teraz przypomnijcie sobie swoje, jak ostatnio składaliście nowy zestaw klocków Lego albo piekliście ciasto. Czytaliście instrukcję (read) i wykonywaliście polecenia (do).
Checklisty do-confirm
Drugi typ checklist działa w odmienny sposób. W modelu do-confirm działania są wykonywane z pamięci lub zgodnie z doświadczeniem zespołu. Po zakończeniu procesu następuje przerwa, w której lista służy do potwierdzenia, że wszystkie wymagane kroki zostały wykonane. Ten model daje więcej swobody działania i lepiej sprawdza się w pracy zespołowej.
A w prawdziwym życiu? Po prawie skończonych zakupach (do) jeszcze raz przechodzisz przez przygotowaną wcześniej listę i potwierdzasz, że wszystko jest w koszyku (confirm).
Różnice między podejściami
Najważniejsza różnica dotyczy momentu użycia listy. W checklistach read-do lista prowadzi użytkownika przez proces. W checklistach do-confirm lista pojawia się dopiero na etapie kontroli.
Moment użycia checklisty w procesie
Skuteczność checklist zależy w dużej mierze od momentu ich użycia. Projektując checklistę, należy określić tzw. punkt zatrzymania procesu, w którym lista będzie wykorzystywana. Może to być początek procedury, moment wysokiego ryzyka czy zakończenie procesu. Wiele checklist stosowanych w zespołach inżynierskich pojawia się właśnie w takich punktach kontrolnych.
Jak projektować checklisty
Badania nad checklistami wskazują kilka zasad ich projektowania. Dobra checklista powinna być:
- zwięzła - zbyt długie spisy są ignorowane lub wypełniane bezrefleksyjnie. Należy uwzględniać tylko najważniejsze kroki,
- skupiona na ryzyku - priorytetem są działania, których pominięcie pociąga za sobą dotkliwe skutki,
- jednoznaczna - każdy punkt musi być sformułowany precyzyjnie, by nie zostawiać pola do domysłów.
Checklisty w inżynierii oprogramowania
Checklisty wspierają niemal każdy etap cyklu życia produktu. Najczęściej spotyka się je w przeglądach kodu (code review), weryfikacji dokumentacji, przygotowaniu środowisk testowych oraz w procesach release i deploymentu. Ich główną rolą jest uporządkowanie procesu kontroli jakości i zapewnienie, że wszystkie istotne elementy zostały sprawdzone.
Checklist-based reading w przeglądach kodu
Ciekawym przykładem jest technika checklist-based reading. Polega ona na analizie kodu lub dokumentacji pod kątem konkretnych pytań z listy, z których każde dotyczy innego rodzaju defektu. Badania porównujące tę metodę z podejściem ad-hoc wskazują, że różnice w liczbie wykrywanych defektów nie zawsze są istotne statystycznie. Checklisty wpływają jednak na większą systematyczność przeglądów i pomagają ujednolicić sposób pracy zespołu.
Zastosowania i ograniczenia
W ostatnich latach checklisty zaczęły pojawiać się także w nowych obszarach inżynierii oprogramowania. Jednym z przykładów jest weryfikacja scenariuszy systemów Internetu rzeczy. Udowodniono, że takie checklisty mogą wspierać proces analizy takich scenariuszy i poprawiać efektywność inspekcji elementów projektowych. Podobne podejścia zaczynają pojawiać się także w testowaniu systemów opartych na sztucznej inteligencji.
Checklisty nie są jednak uniwersalnym rozwiązaniem wszystkich problemów jakościowych. Ich skuteczność zależy od kilku czynników:
- jakości projektu listy,
- doświadczenia osób korzystających z checklisty,
- dopasowania listy do konkretnego kontekstu pracy.
Listy kontrolne są narzędziem wspierającym proces, a nie jego substytutem.
Kiedy korzystać?
Dla zespołów testerskich checklisty są najbardziej przydatne w sytuacjach, w których proces zawiera wiele powtarzalnych kroków lub wymaga weryfikacji wielu elementów jednocześnie. Dotyczy to między innymi:
- przygotowania środowiska testowego,
- przeglądów testów automatycznych,
- kontroli jakości danych testowych,
- procedur release i deployment.
W takich przypadkach checklisty pozwalają uporządkować działania i ograniczyć ryzyko pominięcia pojedynczego, ale istotnego elementu procesu.
Redakcja

