Code Narzędzie do pomiaru zasięgu: testowanie oświadczeń, gałęzi i decyzji
⚡ Inteligentne podsumowanie
Code pokrycie to pomiar typu „biała skrzynka”, który raportuje stopień, w jakim kod źródłowy został przetestowany przez zestaw testów, helping Zespoły lokalizują nieprzetestowane stwierdzenia, gałęzie, warunki i ścieżki, w których mogą znajdować się ukryte defekty.

Czym jest Code Zasięg?
Code pokrycie jest miarą opisującą stopień przetestowania kodu źródłowego programu. Jest to jedna z form testowanie w białej skrzynce który znajduje obszary programu nieprzetestowane przez zestaw przypadków testowych. Pomaga również tworzyć dodatkowe przypadki testowe w celu zwiększenia pokrycia i określenia ilościowej miary pokrycia kodu.
W większości przypadków system pokrycia kodu gromadzi informacje o uruchomionym programie. Następnie łączy je z informacjami o kodzie źródłowym, aby wygenerować raport dotyczący pokrycia kodu zestawu testowego.
Dlaczego warto korzystać Code Testowanie zasięgu?
Oto kilka głównych powodów stosowania pokrycia kodu:
- Pomaga zmierzyć efektywność wdrażania testów.
- Oferuje ilościowy pomiar testowania.
- Określa stopień, w jakim kod źródłowy został przetestowany.
Code Metody pokrycia
Poniżej przedstawiono główne metody pomiaru pokrycia kodu:
- Zasięg oświadczenia
- Zakres decyzji
- Zasięg oddziałów
- Toggle Pokrycie
- Pokrycie FSM
Zasięg oświadczenia
Zasięg oświadczenia To technika testowania typu „białej skrzynki”, w której wszystkie instrukcje wykonywalne w kodzie źródłowym są wykonywane co najmniej raz. Służy do obliczania liczby instrukcji w kodzie źródłowym, które zostały wykonane. Głównym celem pokrycia instrukcji jest pokrycie wszystkich możliwych ścieżek, wierszy i instrukcji w kodzie źródłowym.
Pokrycie instrukcji służy do wyprowadzania scenariuszy w oparciu o strukturę testowanego kodu.
W testach białoskrzynkowych tester koncentruje się na tym, jak działa oprogramowanie. Innymi słowy, tester koncentruje się na wewnętrznym działaniu kodu źródłowego, w tym na grafach przepływu sterowania lub schematach blokowych.
Ogólnie rzecz biorąc, w każdym oprogramowaniu, jeśli spojrzysz na kod źródłowy, znajdziesz tam szeroką gamę elementów, takich jak operatory, funkcje,ping, obsługi wyjątków itd. Na podstawie danych wejściowych do programu, niektóre instrukcje kodu mogą nie zostać wykonane. Celem pokrycia instrukcji jest pokrycie wszystkich możliwych ścieżek, wierszy i instrukcji w kodzie.
Zrozumiemy to na przykładzie obliczania pokrycia wyciągu. W tym przykładzie sprawdzamy procent pokrycia wyciągu dla każdego z dwóch różnych scenariuszy.
Źródło Code:
Prints (int a, int b) { ------------ Printsum is a function int result = a + b; If (result > 0) Print ("Positive", result) Else Print ("Negative", result) } ----------- End of the source code
Scenariusz 1: Jeśli A = 3, B = 9
Instrukcje oznaczone na żółto to te, które są wykonywane zgodnie ze scenariuszem. Liczba wykonanych instrukcji = 5, całkowita liczba instrukcji = 7, zatem Pokrycie instrukcji = 5/7 = 71%.
Scenariusz 2: Jeśli A = -3, B = -9
Instrukcje oznaczone na żółto to te, które są wykonywane zgodnie ze scenariuszem. Liczba wykonanych instrukcji = 6, całkowita liczba instrukcji = 7, zatem Pokrycie instrukcji = 6/7 = 85%.
Ale ogólnie rzecz biorąc, jeśli spojrzysz, wszystkie stwierdzenia są uwzględnione w obu scenariuszach. Możemy więc wnioskować, że ogólne pokrycie stwierdzeń wynosi 100%.
Co obejmuje ubezpieczenie oświadczenia?
- Niewykorzystane wyciągi
- Dead Code
- Nieużywane gałęzie
- Brakujące oświadczenia
Testowanie pokrycia decyzji
Zakres decyzji to technika testowania typu „białej skrzynki”, która raportuje wynik „prawda” lub „fałsz” dla każdego wyrażenia boolowskiego w kodzie źródłowym. Celem testowania pokrycia decyzji jest pokrycie i walidacja całego dostępnego kodu źródłowego poprzez sprawdzenie i upewnienie się, że każda gałąź każdego możliwego punktu decyzyjnego zostanie wykonana co najmniej raz.
W tym typie pokrycia wyrażenia mogą być złożone, co utrudnia osiągnięcie 100% pokrycia. Dlatego do raportowania tej metryki stosuje się różne metody. Metody te priorytetyzują najbardziej krytyczne kombinacje. Chociaż jest to podobne do pokrycia gałęzi, zapewnia większą czułość na przepływ sterowania.
Przykład pokrycia decyzji
Rozważ następujący kod:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Scenariusz 1: Wartość a wynosi 2. Wynik decyzji „Nie” Jeżeli zaznaczono (a>5), wówczas Pokrycie Decyzji = 50%.
Scenariusz 2: Wartość a wynosi 6. Wynik decyzji „Tak”. Jeśli zaznaczono (a>5), wówczas Pokrycie Decyzji = 50%.
| Przypadek testowy | Wartość A | Wydajność | Zakres decyzji |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Testowanie zasięgu oddziałów
Zasięg oddziałów to metoda testowania typu „białej skrzynki”, w której testowany jest każdy wynik modułu kodu (instrukcji lub pętli). Celem pokrycia rozgałęzień jest zapewnienie, że każdy warunek decyzyjny z każdej rozgałęzienia zostanie wykonany co najmniej raz. Pomaga ona mierzyć ułamki niezależnych segmentów kodu i znajdować sekcje, które nie mają rozgałęzień.
Na przykład, jeśli wyniki są binarne, należy przetestować zarówno wyniki Prawda, jak i Fałsz.
Wzór na obliczenie zasięgu oddziału:
Przykład zasięgu oddziału
Aby poznać pojęcie pokrycia gałęzi, rozważmy ten sam przykład, który został użyty wcześniej. Pokrycie gałęzi uwzględnia również gałąź bezwarunkową.
| Przypadek testowy | Wartość A | Wydajność | Zakres decyzji | Zasięg oddziałów |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Zalety zasięgu oddziału:
- Umożliwia sprawdzenie wszystkich gałęzi w kodzie.
- Pomaga upewnić się, że żadna gałąź nie spowoduje żadnych nieprawidłowości w działaniu programu.
- Usuwa problemy wynikające z testowania pokrycia instrukcji.
- Umożliwia znalezienie obszarów, które nie są testowane innymi metodami testowania.
- Umożliwia znalezienie ilościowej miary pokrycia kodu.
- Pokrycie rozgałęzień ignoruje rozgałęzienia wewnątrz wyrażeń boolowskich.
Testowanie pokrycia stanu
Pokrycie stanuPokrycie warunku, czyli pokrycie wyrażenia, to metoda testowania używana do testowania i oceny zmiennych lub podwyrażeń w instrukcji warunkowej. Celem pokrycia warunku jest sprawdzenie poszczególnych wyników dla każdego warunku logicznego. Pokrycie warunku zapewnia lepszą czułość na przepływ sterowania niż pokrycie decyzji. W tym pokryciu uwzględniane są tylko wyrażenia z operandami logicznymi.
Na przykład, jeśli wyrażenie zawiera operacje logiczne, takie jak AND, OR lub XOR, oznacza to całkowitą liczbę możliwości. Pokrycie warunków nie gwarantuje pełnego pokrycia decyzji.
Wzór do obliczenia pokrycia stanu:
W przypadku wyrażenia z dwoma operandami możliwe są cztery kombinacje: TT, FF, TF i FT. Rozważmy dane wejściowe X=3, Y=4 (x b) FAŁSZ, co daje stopień pokrycia 1/4 = 25%.
Skończony zasięg maszyny stanowej
Skończone pokrycie automatu stanowego jest z pewnością najbardziej złożoną metodą pokrycia kodu. Dzieje się tak, ponieważ opiera się ona na zachowaniu projektu. W tej metodzie pokrycia należy sprawdzić, ile razy konkretne stany są odwiedzane lub przechodzone. Sprawdza również, ile sekwencji znajduje się w skończonym automacie stanowym.
Który typ Code Zakres ubezpieczenia do wyboru
To z pewnością najtrudniejsza odpowiedź. Aby wybrać metodę pokrycia, tester musi sprawdzić, czy:
- kod poddawany testom ma pojedyncze lub wiele nieodkrytych defektów,
- koszt potencjalnej kary,
- koszt utraconej reputacji,
- koszt utraconej sprzedaży, itd.
Im większe prawdopodobieństwo, że wady spowodują kosztowne awarie produkcyjne, tym poważniejszy poziom ochrony należy wybrać.
Code Zasięg a zasięg funkcjonalny
| Code Pokrycie | Pokrycie funkcjonalne |
|---|---|
| Informuje, w jakim stopniu kod źródłowy został przetestowany na stanowisku testowym. | Mierzy stopień, w jakim funkcjonalność projektu została objęta testem na stanowisku badawczym. |
| Nigdy nie stosuje specyfikacji projektowej. | Wykorzystuje specyfikację projektową. |
| Wykonane przez programistów. | Wykonane przez testerów. |
Code Narzędzia zasięgu
Oto lista ważnych narzędzi do pomiaru pokrycia kodu:
| Nazwa narzędzia | OPIS |
|---|---|
| Cobertura | Narzędzie do pomiaru pokrycia kodu źródłowego. Mierzy pokrycie testami poprzez instrumentację bazy kodu i analizę, które wiersze kodu są wykonywane, a które nie podczas uruchamiania zestawu testów. |
| Koniczyna | Koniczyna (OpenClover) skraca również czas testowania, ponieważ uruchamia tylko testy obejmujące kod aplikacji zmodyfikowany od czasu poprzedniej kompilacji. |
| Partner deweloperski | DevPartner umożliwia programistom analizę Java kod pod kątem jakości i złożoności kodu. |
| Emma | EMMA obsługuje klasy, metody, wiersze i podstawowe bloki, agregowane na poziomie pliku źródłowego, klasy i metody. |
| Kalistick | Kalistick to aplikacja zewnętrzna, która analizuje kod z różnych perspektyw. |
| CoView i CoAnt | Narzędzie do pomiaru pokrycia kodu, tworzenia obiektów pozorowanych, testowania kodu, pokrycia ścieżek i gałęzi i nie tylko. |
| Celny strzał w dziesiątkę C++ | BullseyeCoverage to narzędzie do pomiaru pokrycia kodu C++ i C. |
| Echosonda | Sonar to otwarte narzędzie do pomiaru pokrycia kodu, które pomaga zarządzać jego jakością. |
Zalety i wady użytkowania Code Pokrycie
| Zalety | Wady |
|---|---|
| Przydatne do oceny ilościowej miary pokrycia kodu. | Nawet jeśli w projekcie nie zaimplementowano konkretnej funkcji, pokrycie kodu i tak wynosi 100%. |
| Umożliwia tworzenie dodatkowych przypadków testowych w celu zwiększenia zasięgu. | Nie można ustalić, czy wszystkie możliwe wartości danej funkcji zostały przetestowane za pomocą pokrycia kodu. |
| Umożliwia znalezienie obszarów programu, które nie zostały sprawdzone przez zbiór przypadków testowych. | Code zasięg nie mówi, w jakim stopniu i jak dobrze pokryłeś swoją logikę. |






