Listy kontrolne read-do i do-confirm w testowaniu

Listy kontrolne read-do i do-confirm w testowaniu
Błędy w pracy zespołów rzadko wynikają z braku wiedzy czy niekompetencji. Najczęściej są efektem pominięcia pojedynczego kroku w złożonym procesie. Im bardziej skomplikowany system, tym więcej zmiennych trzeba kontrolować: od konfiguracji środowisk i zależności między komponentami, po przygotowanie danych testowych i procedury wdrożeniowe.

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.

read-do-do-confirm.png

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.

punkt-zatrzymania-procesu.png

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.

W których obszarach checklisty są u Ciebie najbardziej przydatne?
W których obszarach checklisty są u Ciebie najbardziej przydatne?
0 %
przygotowanie środowiska testowego
0 %
przeglądy kodu / testów
0 %
dane testowe i konfiguracja
0 %
procesy release / deployment
100 %
nie używam checklist
Łącznie głosów: 1
Źródła:
https://www.shortform.com/blog/types-of-checklists
https://sketchplanations.com/read-do-do-confirm-checklists

To powinno Cię zainteresować