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.

  • 🎯 Definicja: Code pokrycie określa, jaka część kodu źródłowego jest faktycznie wykonywana przez testy.
  • 📊 metody: Istnieje pięć metod — metoda instrukcji, metoda decyzji, metoda rozgałęzienia, metoda warunku i metoda pokrycia skończonej maszyny stanowej.
  • 🧩 Oświadczenie kontra oddział: Pokrycie instrukcji sprawdza linie, natomiast pokrycie gałęzi sprawdza każdy wynik decyzji.
  • ⚖️. Code vs Funkcjonalne: Code środki pokrycia ćwiczonego kodu; środki pokrycia funkcjonalnego pokrywają wymagania.
  • 🛠️. Narzędzia: Cobertura, OpenClover, EMMA i Sonar automatyzują pomiar zasięgu.
  • 🤖 Pomoc AI: Narzędzia AI automatycznie generują testy i wykrywają nieprzetestowane i obarczone wysokim ryzykiem luki w pokryciu.

Code Samouczek dotyczący zasięgu

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.

Zasięg oświadczenia

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

Scenariusz pokrycia oświadczenia 1

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

Scenariusz pokrycia oświadczenia 2

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?

  1. Niewykorzystane wyciągi
  2. Dead Code
  3. Nieużywane gałęzie
  4. 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.

Testowanie pokrycia decyzji

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:

Wzór na pokrycie oddziałów

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:

Wzór na pokrycie 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ę.

FAQ

Wiele zespołów stawia sobie za cel 70–80% jako praktyczny cel. Osiągnięcie 100% rzadko jest opłacalne. Skoncentruj się na pokryciu krytycznej, wysoce ryzykownej logiki, zamiast dążyć do osiągnięcia jednego wyniku w całej bazie kodu.

Nie. Pełne pokrycie dowodzi, że każda linia testowa została sprawdzona, a nie, że każde dane wejściowe, wartość czy wymaganie zostały zweryfikowane. Błędy logiczne i brakujące funkcje mogą nadal pozostać niewykryte, dlatego pokrycie uzupełnia, a nie zastępuje dobry projekt testowy.

Code Pokrycie mierzy, ile kodu źródłowego jest wykonywane podczas testowania. Pokrycie testowe jest szersze, tracsprawdź, w jakim stopniu testy odpowiadają wymaganiom, cechom i ryzyku. Code zasięg jest jednym z czynników wpływających na ogólny zasięg testów.

Nie. Można osiągnąć 100% pokrycia instrukcji, pozostawiając nieprzetestowane gałęzie, takie jak brakująca ścieżka else. Pokrycie gałęzi (decyzji) jest silniejsze, ponieważ obejmuje pokrycie instrukcji i sprawdza każdy wynik.

Sztuczna inteligencja analizuje kod źródłowy i istniejące testy, aby wskazać nieprzetestowane, ryzykowne ścieżki, a następnie sugeruje lub generuje nowe przypadki. Uczenie maszynowe ustala również priorytety testów do uruchomienia, skracając czas reakcji i zachowując…ping wysoki poziom pokrycia.

Tak. Narzędzia AI, takie jak Diffblue Cover, skanują kod i autonomicznie piszą testy jednostkowe dla nieodkrytej logiki. Wykrywają ryzykowne gałęzie i warunki, zwiększając pokrycie przy znacznie mniejszym nakładzie pracy ręcznej.

OpenClover mierzy pokrycie instrukcji, gałęzi i metod oraz zbiera ponad 20 metryk. Cobertura, EMMA i JaCoCo istnieją inne powszechnie używane bezpłatne opcje Java projektów.

Zmodyfikowany zakres warunków/decyzji wymaga, aby każdy warunek w decyzji niezależnie wpływał na jej wynik. Jest on bardziej rygorystyczny niż zakres gałęzi i jest wymagany dla oprogramowania krytycznego dla bezpieczeństwa, takiego jak awionika, zgodnie z normą DO-178C.

Podsumuj ten post następująco: