Czym różni się testowanie decyzji od testowania rozgałęzień (gałęzi)?
Jak ma się do siebie pokrycie decyzji i pokrycie gałęzi?
Czym różni się testowanie decyzji od testowania rozgałęzień (gałęzi)?
Jak ma się do siebie pokrycie decyzji i pokrycie gałęzi?
Ze słownika „Słownik wyrażeń związanych z testowaniem”, wersja 2.02:
decyzja (decision) = punkt w programie, w którym przepływ sterowania ma dwie lub więcej alternatywne drogi. Węzeł grafu przepływu sterowania, z którego wychodzą dwie lub więcej gałęzi.
pokrycie decyzji to odsetek możliwych wyników decyzji, które zostały przetestowane przez zestaw testowy.
gałąź (branch) = podstawowy blok, który może zostać wybrany do wykonania na podstawie konstrukcji programistycznej, która daje możliwość wybrania jednej z dwóch lub większej ilości ścieżek np. case, jump, go to, if-then-else.
pokrycie gałęzi = odsetek gałęzi sprawdzonych przez zestaw przypadków testowych.
Z definicji widać, że gdy chodzi o pokrycie 100% to oba pojęcia są zbieżne. Przy innych wartościach pokrycia widać różnice.
Rozważmy program o następującym grafie przepływu sterowania:
Decyzje są podejmowane w blokach podstawowych mających więcej niż jeden łuk wyjściowy. W naszym przypadku są to: B2, B3 i B5. Ponieważ każdy z tych bloków ma po dwa wyjścia, więc mamy 6. decyzji do rozważania.
Rozgałęzienia są zaznaczone przez łuki w grafie przepływu sterowania, razem jest ich 10.
Rozważmy przypadek testowy, który wykonuje ścieżkę B1 → B2 → B9.
Taka ścieżka wykonuje jedną decyzję (B2 → B9) i w związku z tym mamy 1/6 = 16,7% pokrycie decyzji.
Taka ścieżka wykonuje 2 z 10 rozgałęzień, dając 20% pokrycie rozgałęzień.
Rozważmy przypadek testowy, który wykonuje ścieżkę
B1 → B2 → B3 → B4 → B8 → B2 → B3 → B5 → B6 → B8 → B2 → B3 → B5 → B7
Razem z poprzednim przypadkiem testowym mamy 100% pokrycie decyzji i rozgałęzień.