1. Strona główna
  2. Sylabus dla poziomu zaawansowanego – Techniczny analityk testowy (wersja z 19.10.2012)
  3. 2. Testowanie w oparciu o strukturę
  4. 2.6 Testowanie ścieżek

2.6 Testowanie ścieżek

Testowanie ścieżek polega na zidentyfikowaniu ścieżek w kodzie, a następnie na opracowaniu testów w celu ich pokrycia. Teoretycznie rzecz biorąc, należałoby przetestować wszystkie unikatowe ścieżki w ramach systemu. Jednak w każdym nietrywialnym systemie liczba przypadków testowych może okazać się ogromna ze względu na występowanie struktur zapętlonych.

Pomijając kwestię nieskończonych pętli, użycie testowania ścieżek w pewnym zakresie jest realistyczne. W publikacji [Beizer90] znalazło się zalecenie, aby w ramach tej techniki tworzyć testy przechodzące przez różne ścieżki w module, od punktu wejścia do punktu wyjścia. Autor sugeruje uproszczenie tego potencjalnie złożonego zadania dzięki systematycznemu podejściu, polegającemu na zastosowaniu następującej procedury:

  1. Wybierz jako pierwszą najprostszą sensowną z funkcjonalnego punktu widzenia ścieżkę od punktu
    wejścia do punktu wyjścia.
  2. Wybieraj każdą kolejną, dodatkową ścieżkę tak, aby różniła się w niewielkim stopniu od poprzedniej. W kolejnych testach próbuj zmieniać tylko jedną różniącą się od poprzedniej gałąź w ścieżce. Jeśli to możliwe, wybieraj raczej krótsze ścieżki. Staraj się wybierać ścieżki, które mają sens z funkcjonalnego punktu widzenia.
  3. Wybieraj ścieżki, które nie mają sensu z funkcjonalnego punktu widzenia jedynie wówczas, gdy jest to wymagane do uzyskania pokrycia. Beizer zwraca uwagę, że takie ścieżki mogą być nadmiarowe i należy zastanowić się wówczas nad ich uwzględnieniem.
  4. Dokonując wyboru ścieżek, kieruj się intuicją (np. zastanów się, które ścieżki mają największe prawdopodobieństwo wykonania).

Należy zwrócić uwagę, że przy użyciu tej strategii niektóre segmenty ścieżek mogą być wykonywane więcej niż jeden raz. Kluczowym elementem strategii jest przetestowanie wszystkich możliwych gałęzi kodu przynajmniej raz, a jeśli to możliwe – wielokrotnie.

Obszar zastosowania

Opisane powyżej częściowe testowanie ścieżek jest często stosowane w przypadku oprogramowania o kluczowym znaczeniu dla bezpieczeństwa. Stanowi dobre uzupełnienie innych metod przedstawionych w niniejszym rozdziale, ponieważ dotyczy ścieżek w oprogramowaniu, a nie tylko sposobu podejmowania decyzji.

Ograniczenia/trudności

Wprawdzie w celu określenia ścieżek można skorzystać z diagramu przepływu sterowania, w praktyce to podejście wymaga zastosowania narzędzia, które znajdzie takie ścieżki w przypadku skomplikowanych modułów.

Pokrycie

Utworzenie testów wystarczających do pokrycia wszystkich ścieżek (z wyjątkiem pętli) gwarantuje uzyskanie pokrycia instrukcji kodu i pokrycia gałęzi. Testowanie ścieżek pozwala zapewnić większą dokładność testowania niż pokrycie gałęzi, a liczba testów wzrasta jedynie w stosunkowo niewielkim stopniu. [NIST 96]