Lekcja 3.9: Typy Przeglądów

Przeglądy, jako metoda testowania statycznego, nie są monolitem.

Istnieje całe spektrum podejść, różniących się stopniem formalności, celami, zaangażowanymi rolami i wymaganą dokumentacją.

Wybór odpowiedniego typu przeglądu jest kluczowy dla jego efektywności i osiągnięcia zamierzonych rezultatów.

Sylabus ISTQB Foundation Level v4.0, w sekcji 3.2.4 (FL-3.2.4 K2), opisuje cztery główne, często stosowane typy przeglądów, rozciągające się od bardzo nieformalnych po wysoce sformalizowane.

Zrozumienie charakterystyki, celów, zalet i wad każdego typu pozwala świadomie dobierać narzędzie do sytuacji.

Jak podkreśla sylabus: „Wybór właściwego typu przeglądu ma zasadnicze znaczenie dla osiągnięcia wymaganych celów przeglądu”.

Decyzja ta zależy od wielu czynników, które omówimy poniżej.

Sylabus wyróżnia następujące typy przeglądów:

  1. Przegląd nieformalny (Informal Review)
  2. Przejrzenie (Walkthrough)
  3. Przegląd techniczny (Technical Review)
  4. Inspekcja (Inspection)

Przyjrzyjmy się każdemu z nich, analizując ich kluczowe cechy.

Czynniki Wpływające na Wybór Typu Przeglądu

Zanim przejdziemy do szczegółowego opisu poszczególnych typów, warto zrozumieć, co wpływa na decyzję o wyborze konkretnego podejścia.

Sylabus wymienia kilka kluczowych czynników:

  • Cele przeglądu: Co chcemy osiągnąć? Wykrycie defektów, ocenę jakości, edukację, konsensus, generowanie pomysłów? Różne typy lepiej nadają się do realizacji różnych celów.
  • Potrzeby projektu: Jakie są wymagania czasowe, budżetowe i jakościowe projektu?
  • Dostępne zasoby: Ile czasu i osób możemy zaangażować w przegląd?
  • Typ produktu pracy: Czy przeglądamy krótki fragment kodu, obszerną specyfikację wymagań, czy model architektury?
  • Ryzyka związane z produktem pracy: Jak krytyczny jest dany element? Jakie są potencjalne konsekwencje błędów?
  • Przyjęty model cyklu wytwarzania oprogramowania (SDLC): Czy pracujemy w modelu kaskadowym, iteracyjnym, czy zwinnym? Modele zwinne często preferują mniej formalne, częstsze przeglądy.
  • Dojrzałość procesu wytwarzania oprogramowania: Bardziej dojrzałe organizacje mogą stosować bardziej sformalizowane i ustandaryzowane procesy przeglądów.
  • Krytyczność i złożoność produktu pracy: Im bardziej krytyczny i złożony produkt, tym bardziej formalny przegląd może być wskazany.
  • Wymogi prawne lub regulacyjne: Niektóre branże (np. medyczna, lotnicza) mogą wymagać formalnych przeglądów i szczegółowej dokumentacji (ścieżki audytu).
  • Konieczność prowadzenia ścieżki audytu: Formalne przeglądy, zwłaszcza inspekcje, zapewniają udokumentowany dowód przeprowadzenia oceny jakości.
  • Dziedzina biznesowa i kultura organizacyjna firmy: Jakie są standardy i oczekiwania w danej organizacji? Czy kultura wspiera otwartą komunikację i współpracę?

Mając na uwadze te czynniki, możemy teraz przeanalizować poszczególne typy przeglądów.

1. Przegląd Nieformalny (Informal Review)

Jest to najmniej sformalizowany typ przeglądu, często stosowany na co dzień w pracy zespołowej.

Charakteryzuje się:

  • Brakiem zdefiniowanego procesu: Nie ma sztywnych reguł dotyczących planowania, ról czy dokumentacji. Może to być np. szybkie spojrzenie kolegi na fragment kodu („pair programming review”), dyskusja nad szkicem dokumentu przy biurku, czy wymiana uwag mailowo.
  • Brakiem formalnej dokumentacji: Wyniki zwykle nie są szczegółowo protokołowane. Celem jest szybkie uzyskanie informacji zwrotnej i poprawa produktu, a nie tworzenie ścieżki audytu.
  • Głównym celem: Wykrycie anomalii: Skupia się na znalezieniu oczywistych błędów, niejasności lub potencjalnych problemów.
  • Elastycznością: Może być inicjowany przez autora lub inną osobę w dowolnym momencie.
  • Niskim kosztem: Zwykle wymaga niewielkiego nakładu czasu i zasobów.

Kiedy stosować? Przeglądy nieformalne są idealne do szybkiego sprawdzania mniejszych fragmentów pracy, wczesnego wykrywania problemów, wymiany wiedzy w zespole i w środowiskach, gdzie formalizacja nie jest konieczna lub możliwa (np. w bardzo dynamicznych projektach zwinnych).

Są świetnym uzupełnieniem bardziej formalnych metod.

Ograniczenia: Skuteczność zależy mocno od zaangażowania i wiedzy osób biorących udział.

Brak dokumentacji utrudnia śledzenie postępów i może nie być wystarczający w przypadku wymogów audytowych.

2. Przejrzenie (Walkthrough)

Przejrzenie jest bardziej ustrukturyzowane niż przegląd nieformalny, ale nadal stosunkowo elastyczne.

Kluczowe cechy:

  • Prowadzone przez autora: To autor prezentuje produkt pracy uczestnikom, prowadzi ich przez jego treść, wyjaśnia logikę i odpowiada na pytania.
  • Wiele celów: Przejrzenie może służyć różnym celom, w tym:
    • Ocena jakości produktu pracy i zwiększenie zaufania do niego.
    • Edukacja przeglądających (np. zapoznanie zespołu z nowym modułem kodu, projektem interfejsu).
    • Osiągnięcie konsensusu co do proponowanych rozwiązań.
    • Wygenerowanie nowych pomysłów i alternatywnych podejść.
    • Zmotywowanie autora do udoskonalania przyszłych produktów pracy.
    • Wykrycie anomalii (choć nie zawsze jest to główny cel).
  • Opcjonalny przegląd indywidualny: Uczestnicy mogą (ale nie muszą) zapoznać się z produktem przed spotkaniem.
  • Spotkanie przeglądowe: Zazwyczaj odbywa się spotkanie, podczas którego autor prezentuje produkt.
  • Opcjonalny protokolant: Może być wyznaczony protokolant do notowania uwag i decyzji, ale nie jest to regułą.
  • Elastyczny proces: Proces może być dostosowany do potrzeb, nie ma sztywnych wymagań co do ról czy metryk.

Kiedy stosować? Przejrzenia są użyteczne do nauki, zdobywania zrozumienia, osiągania konsensusu i zbierania opinii na temat produktu pracy.

Są dobre, gdy chcemy zapoznać zespół z nowym rozwiązaniem lub przedyskutować alternatywy.

Ograniczenia: Ponieważ autor prowadzi spotkanie, może nieświadomie wpływać na dyskusję lub pomijać trudniejsze fragmenty.

Skupienie na edukacji może czasem odbywać się kosztem dokładnego wykrywania defektów.

3. Przegląd Techniczny (Technical Review)

Przegląd techniczny jest bardziej formalny niż przejrzenie i skupia się na osiągnięciu konsensusu co do technicznych aspektów produktu pracy.

Charakteryzuje się:

  • Prowadzony przez moderatora (nie autora): Spotkanie jest prowadzone przez wyszkolonego moderatora, co zapewnia neutralność i skupienie na celach.
  • Udział ekspertów technicznych: W przeglądzie biorą udział osoby z odpowiednią wiedzą techniczną (np. architekci, starsi programiści, specjaliści ds. bezpieczeństwa).
  • Wymagany przegląd indywidualny: Uczestnicy muszą przygotować się przed spotkaniem, analizując produkt pracy.
  • Główny cel: Konsensus i decyzje techniczne: Skupia się na ocenie technicznej poprawności, zgodności ze standardami, wykonalności, identyfikacji alternatywnych rozwiązań i podjęciu decyzji co do dalszych kroków. Wykrywanie defektów jest również ważnym celem.
  • Zdefiniowany proces: Przebiega według ustalonego procesu, choć może być mniej formalny niż inspekcja.
  • Opcjonalny protokolant: Zwykle obecny, aby dokumentować dyskusje, decyzje i znalezione defekty.
  • Listy kontrolne i przygotowanie: Często wykorzystuje się listy kontrolne, aby upewnić się, że kluczowe aspekty techniczne zostały sprawdzone.

Kiedy stosować? Przeglądy techniczne są idealne do oceny dokumentów technicznych (np. specyfikacji, projektów architektury, planów testów), kodu, wymagań pod kątem ich technicznej poprawności i wykonalności.

Są użyteczne, gdy potrzebny jest konsensus ekspertów w kwestiach technicznych.

Ograniczenia: Wymaga zaangażowania ekspertów, co może być kosztowne.

Może być bardziej czasochłonny niż przegląd nieformalny czy przejrzenie.

4. Inspekcja (Inspection)

Inspekcja to najbardziej formalny i rygorystyczny typ przeglądu.

Jej głównym celem jest maksymalizacja efektywności w wykrywaniu defektów.

Kluczowe cechy:

  • Prowadzona przez wyszkolonego moderatora (nie autora): Moderator zarządza całym procesem i spotkaniem.
  • Zdefiniowane role: Wszystkie role (Moderator, Autor, Przeglądający, Protokolant, czasem Lider Przeglądu) są jasno określone i obsadzone.
  • Rygorystyczny, zdefiniowany proces: Przebiega według ściśle określonych kroków (planowanie, rozpoczęcie, przegląd indywidualny, spotkanie inspekcyjne, poprawki, weryfikacja).
  • Wymagany przegląd indywidualny: Uczestnicy muszą się starannie przygotować, często stosując konkretne techniki (np. oparte na listach kontrolnych, perspektywie).
  • Główny cel: Wykrywanie defektów: Cały proces jest zoptymalizowany pod kątem jak najwcześniejszego i najskuteczniejszego znajdowania błędów.
  • Formalna dokumentacja: Wszystkie etapy, wyniki, znalezione defekty i decyzje są szczegółowo dokumentowane. Prowadzony jest protokół i raport.
  • Zbieranie metryk: Standardowo zbiera się metryki dotyczące procesu (czas, wysiłek) i wyników (liczba i typy defektów), aby oceniać i doskonalić proces inspekcji.
  • Kryteria wejścia i wyjścia: Zdefiniowane są formalne warunki rozpoczęcia i zakończenia inspekcji.
  • Spotkanie inspekcyjne: Odbywa się formalne spotkanie, podczas którego przeglądający zgłaszają znalezione anomalie, a protokolant je rejestruje. Dyskusje są ograniczone do minimum, aby skupić się na logowaniu problemów.

Kiedy stosować? Inspekcje są najbardziej odpowiednie dla krytycznych produktów pracy (np. wymagania dla systemów bezpieczeństwa, kluczowe moduły kodu), gdy wymagana jest najwyższa jakość i formalna ścieżka audytu.

Są również skuteczne w organizacjach o wysokiej dojrzałości procesowej.

Ograniczenia: Jest to najbardziej czasochłonny i kosztowny typ przeglądu.

Wymaga wyszkolonych uczestników (zwłaszcza moderatora) i dyscypliny w przestrzeganiu procesu.

Może być postrzegany jako zbyt biurokratyczny w niektórych środowiskach (np. zwinnych).

Podsumowanie Typów Przeglądów

Wybór odpowiedniego typu przeglądu jest kluczowy.

Od nieformalnych, szybkich sprawdzeń po rygorystyczne inspekcje – każdy typ ma swoje miejsce i zastosowanie.

Ważne jest, aby dopasować poziom formalności i cele przeglądu do konkretnych potrzeb projektu, produktu pracy i kontekstu organizacyjnego, aby zmaksymalizować korzyści płynące z tej potężnej techniki testowania statycznego.

Najczęściej Zadawane Pytania (FAQ)

Który typ przeglądu jest najlepszy?
Nie ma jednego „najlepszego” typu. Wybór zależy od kontekstu: celów, produktu pracy, dostępnych zasobów, wymagań formalnych. Inspekcja jest najskuteczniejsza w wykrywaniu defektów, ale też najdroższa. Przegląd nieformalny jest tani i szybki, ale mniej systematyczny.
Czy w projektach zwinnych stosuje się formalne przeglądy?
Projekty zwinne często preferują mniej formalne przeglądy (nieformalne, przejrzenia) ze względu na szybkość i elastyczność. Jednak w zależności od krytyczności produktu lub wymagań, mogą być również stosowane przeglądy techniczne lub nawet uproszczone inspekcje.
Jaka jest główna różnica między przejrzeniem a przeglądem technicznym?
W przejrzeniu spotkanie prowadzi autor, a głównym celem może być edukacja lub konsensus. W przeglądzie technicznym spotkanie prowadzi moderator, uczestniczą eksperci, a głównym celem jest osiągnięcie konsensusu technicznego i wykrycie defektów.
Czy inspekcja zawsze wymaga spotkania?
Tradycyjnie tak, spotkanie inspekcyjne jest kluczowym elementem procesu. Jednak nowoczesne narzędzia umożliwiają również przeprowadzanie bardziej asynchronicznych inspekcji, gdzie komunikacja i logowanie defektów odbywa się online, ale nadal zachowując formalny proces i role.
Czy można łączyć cechy różnych typów przeglądów?
Tak, w praktyce często dostosowuje się proces przeglądu do konkretnych potrzeb. Można na przykład przeprowadzić przegląd techniczny z elementami inspekcji (np. bardziej rygorystyczne metryki) lub przejrzenie z obowiązkowym przygotowaniem indywidualnym.
Kto decyduje o wyborze typu przeglądu?
Zazwyczaj decyzję podejmuje lider przeglądu lub kierownictwo projektu, biorąc pod uwagę wspomniane wcześniej czynniki (cele, ryzyko, zasoby, wymogi formalne itp.).
Czy przegląd nieformalny ma jakąkolwiek wartość?
Tak, ma dużą wartość! Jest tani, szybki i pozwala na wczesne wykrycie wielu problemów oraz wymianę wiedzy. Chociaż nie zastąpi formalnych przeglądów tam, gdzie są one wymagane, jest doskonałym uzupełnieniem i elementem codziennej współpracy w zespole.
Jakie są główne cele inspekcji?
Głównym celem inspekcji jest maksymalizacja efektywności wykrywania defektów na jak najwcześniejszym etapie. Dodatkowo, inspekcje służą motywowaniu autorów do poprawy jakości, zbieraniu danych do doskonalenia procesu i tworzeniu formalnej ścieżki audytu.
Czy do przejrzenia potrzebny jest moderator?
Zazwyczaj nie. Przejrzenie jest prowadzone przez autora produktu pracy. Moderator nie jest standardową rolą w tym typie przeglądu, chociaż w niektórych przypadkach może być obecny facylitator, aby wspomóc autora w prowadzeniu spotkania.
Który typ przeglądu najlepiej nadaje się do oceny zgodności ze standardami?
Przegląd techniczny i inspekcja są zazwyczaj najlepsze do oceny zgodności ze standardami, ponieważ często wykorzystują listy kontrolne oparte na tych standardach, a w procesie uczestniczą odpowiedni eksperci.

Przykładowe Pytania Egzaminacyjne

Pytanie 1 (K2): Który typ przeglądu jest najbardziej formalny i ma na celu przede wszystkim wykrywanie defektów?

  • a) Przegląd nieformalny
  • b) Przejrzenie
  • c) Przegląd techniczny
  • d) Inspekcja

Poprawna odpowiedź: d (Inspekcja jest najbardziej formalnym typem przeglądu, z rygorystycznym procesem, zdefiniowanymi rolami i głównym celem wykrywania defektów.)

Pytanie 2 (K2): Jesteś autorem nowego modułu kodu i chcesz zapoznać z nim resztę zespołu oraz zebrać wstępne opinie. Który typ przeglądu byłby najbardziej odpowiedni?

  • a) Inspekcja
  • b) Przegląd techniczny
  • c) Przejrzenie
  • d) Przegląd nieformalny

Poprawna odpowiedź: c (Przejrzenie (walkthrough), prowadzone przez autora, jest idealne do celów edukacyjnych, prezentacji produktu i zbierania opinii.)

Pytanie 3 (K1): Który z poniższych typów przeglądu charakteryzuje się brakiem zdefiniowanego procesu i formalnej dokumentacji?

  • a) Inspekcja
  • b) Przegląd techniczny
  • c) Przejrzenie
  • d) Przegląd nieformalny

Poprawna odpowiedź: d (Przegląd nieformalny jest najmniej sformalizowany, często odbywa się ad-hoc i bez tworzenia szczegółowej dokumentacji.)