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.4 Testowanie zmodyfikowane pokrycia warunków i decyzji (ZPWD)

2.4 Testowanie zmodyfikowane pokrycia warunków i decyzji (ZPWD)

Ta technika odznacza się wyższym poziomem pokrycia sterowania. Jeśli występuje N unikalnych warunków atomowych, testowanie ZPWD wymaga zwykle wykonania N+1 unikalnych przypadków testowych. Testowanie ZPWD pozwala jednocześnie uzyskać pokrycie warunków i decyzji przy spełnieniu następujących założeń:

1. Istnieje co najmniej jeden test, w którym wynik decyzji ulegnie zmianie, jeśli wartość warunku atomowego X to PRAWDA.

2. Istnieje co najmniej jeden test, w którym wynik decyzji ulegnie zmianie, jeśli wartość warunku atomowego X to FAŁSZ.

3. Dla każdego z warunków atomowych istnieją testy spełniające wymagania 1 i 2.

A B C (A LUB B) ORAZ C
Test 1 PRAWDA FAŁSZ PRAWDA PRAWDA
Test 2 FAŁSZ PRAWDA PRAWDA PRAWDA
Test 3 FAŁSZ FAŁSZ PRAWDA FAŁSZ
Test 4 PRAWDA FAŁSZ FAŁSZ FAŁSZ

W powyższym przykładzie uzyskano pokrycie decyzji (wynik predykatu decyzji to zarówno PRAWDA, jak i FAŁSZ) oraz pokrycie warunków (A, B i C mają wartości zarówno PRAWDA, jak i FAŁSZ).

W teście 1 warunek A ma wartość PRAWDA, a wynik decyzji to PRAWDA. Jeśli zmienimy A na FAŁSZ (jak w teście 3, bez zmiany innych wartości), wynik zmienia się na FAŁSZ.

W teście 2 warunek B ma wartość PRAWDA, a wynik decyzji to PRAWDA. Jeśli zmienimy B na FAŁSZ (jak w teście 3, bez zmiany innych wartości), wynik zmienia się na FAŁSZ.

W teście 1 warunek C ma wartość PRAWDA, a wynik decyzji to PRAWDA. Jeśli zmienimy C na FAŁSZ (jak w teście 4, bez zmiany innych wartości), wynik zmienia się na FAŁSZ.

Obszar zastosowania

Ta technika jest powszechnie stosowana w testach oprogramowania w przemyśle lotniczym, a także w wielu innych systemach o kluczowym znaczeniu dla bezpieczeństwa. Należy z niej skorzystać w przypadku tego typu oprogramowania, gdy ewentualna awaria może stać się przyczyną katastrofy.

Ograniczenia/trudności

Uzyskanie pokrycia ZPWD może okazać się skomplikowane, jeśli predykat zawiera wiele wystąpień tego samego warunku atomowego. Warunek taki nazywany jest „powiązanym”. W konkretnej instrukcji kodu zawierającej decyzję zmiana wartości powiązanego elementu w taki sposób, aby jedynie z tego powodu zmienił się wynik całej decyzji, może okazać się niemożliwa. Jedną z metod rozwiązania tego problemu jest przyjęcie założenia, że na poziomie ZPWD musimy testować wyłącznie niepowiązane warunki atomowe. Inny sposób polega na indywidualnym analizowaniu każdego przypadku występowania decyzji, w której pojawiają się elementy tego typu.

Niektóre języki programowania i interpretery zaprojektowano w taki sposób, aby podczas wyliczania wartości złożonego wyrażenia decyzyjnego w kodzie następowało tzw. zwarcie. Oznacza to, że w uruchomionym kodzie całe wyrażenie nie musi być obliczane, jeśli końcowy wynik obliczeń można określić już po ustaleniu wartości części wyrażenia. Na przykład, w trakcie obliczania wartości decyzji „A ORAZ B” nie ma powodu obliczać wartości warunku B, jeśli wartością warunku A jest FAŁSZ. Żadna z dostępnych wartości B nie jest w stanie zmienić wartości końcowej, zatem da się skrócić czas wykonywania kodu, rezygnując z obliczania wartości tego warunku. Zwarcie może mieć wpływ na zdolność do uzyskania pokrycia ZPWD, ponieważ niektóre wymagane testy mogą nie zostać nigdy wykonane.