Samouczek dotyczący zakresu kodu: gałąź, oświadczenie, decyzja, FSM

Spisie treści:

Anonim

Co to jest zakres kodu?

Pokrycie kodu to miara opisująca stopień, w jakim kod źródłowy programu został przetestowany. Jest to jedna z form testowania białoskrzynkowego, która wyszukuje obszary programu nieobjęte zestawem przypadków testowych. Tworzy również kilka przypadków testowych, aby zwiększyć pokrycie i określić ilościową miarę pokrycia kodu.

W większości przypadków system pokrycia kodu zbiera informacje o uruchomionym programie. Łączy to również z informacjami o kodzie źródłowym, aby wygenerować raport o pokryciu kodu zestawu testów.

W tym samouczku nauczysz się:

  • Co to jest zakres kodu?
  • Dlaczego warto korzystać z pokrycia kodu?
  • Metody pokrycia kodu
  • Zakres oświadczenia
  • Zakres decyzji
  • Pokrycie oddziałów
  • Pokrycie stanu
  • Pokrycie maszyny skończonej
  • Jaki rodzaj pokrycia kodu wybrać
  • Pokrycie kodu a pokrycie funkcjonalne
  • Narzędzia pokrycia kodu
  • Zalety i wady korzystania z pokrycia kodem

Dlaczego warto korzystać z pokrycia kodu?

Oto kilka głównych powodów, dla których warto korzystać z pokrycia kodu:

  • Pomaga mierzyć efektywność implementacji testów
  • Oferuje pomiar ilościowy.
  • Określa stopień, w jakim kod źródłowy został przetestowany.

Metody pokrycia kodu

Poniżej przedstawiono główne metody pokrycia kodu

  • Zakres oświadczenia
  • Zakres decyzji
  • Pokrycie oddziałów
  • Przełącz zasięg
  • Pokrycie FSM

Zakres oświadczenia

Pokrycie instrukcji to technika testowania typu white box, 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 objęcie wszystkich możliwych ścieżek, linii i instrukcji w kodzie źródłowym.

Pokrycie instrukcji służy do tworzenia scenariusza na podstawie struktury testowanego kodu.

W White Box Testing tester koncentruje się na tym, jak działa oprogramowanie. Innymi słowy, tester skoncentruje się na wewnętrznej pracy kodu źródłowego w zakresie grafów kontrolnych lub schematów blokowych.

Generalnie w każdym oprogramowaniu, jeśli spojrzymy na kod źródłowy, będzie wiele różnych elementów, takich jak operatory, funkcje, pętle, wyjątkowe procedury obsługi itp. Na podstawie danych wejściowych do programu niektóre instrukcje kodu mogą nie zostać wykonane . Celem pokrycia instrukcji jest objęcie wszystkich możliwych ścieżek, linii i instrukcji w kodzie.

Zrozummy to na przykładzie, jak obliczyć pokrycie instrukcji.

Scenariusz obliczania pokrycia wyciągów dla danego kodu źródłowego. Tutaj bierzemy dwa różne scenariusze, aby sprawdzić procent pokrycia instrukcji dla każdego scenariusza.

Kod źródłowy:

Prints (int a, int b) {------------ Printsum jest funkcjąint wynik = a + b;Jeśli (wynik> 0)Drukuj („Pozytywny”, wynik)JeszczeDrukuj („Negatyw”, wynik)} ----------- Koniec kodu źródłowego

Scenariusz 1:

Jeśli A = 3, B = 9

Oświadczenia zaznaczone na żółto to te, które są wykonywane zgodnie ze scenariuszem

Liczba wykonanych wyciągów = 5, Łączna liczba wyciągów = 7

Pokrycie wyciągu: 5/7 = 71%

Podobnie zobaczymy scenariusz 2,

Scenariusz 2:

Jeśli A = -3, B = -9

Oświadczenia zaznaczone na żółto to te, które są wykonywane zgodnie ze scenariuszem.

Liczba wykonanych instrukcji = 6

Łączna liczba wyciągów = 7

Pokrycie wyciągu: 6/7 = 85%

Ale ogólnie jeśli widzisz, wszystkie wypowiedzi są objęte 2 nd scenariusze rozpatrywane. Możemy więc stwierdzić, że ogólne pokrycie instrukcji wynosi 100%.

Co obejmuje zakres oświadczenia?

  1. Niewykorzystane oświadczenia
  2. Martwy kod
  3. Nieużywane gałęzie
  4. Brakujące instrukcje

Zakres decyzji

Pokrycie decyzji to technika testowania typu white box, która raportuje prawdziwe lub fałszywe wyniki każdego logicznego wyrażenia kodu źródłowego. Celem testowania pokrycia decyzji jest pokrycie i walidacja całego dostępnego kodu źródłowego poprzez sprawdzenie i zapewnienie, że każda gałąź każdego możliwego punktu decyzyjnego jest wykonywana co najmniej raz.

W tym ujęciu wyrażenia mogą czasami się komplikować. Dlatego bardzo trudno jest osiągnąć 100% krycie. Dlatego istnieje wiele różnych metod raportowania tego wskaźnika. Wszystkie te metody koncentrują się na pokryciu najważniejszych kombinacji. Jest bardzo podobny do pokrycia decyzyjnego, ale zapewnia lepszą czułość na sterowanie przepływem.

Przykład zakresu decyzji

Rozważ następujący kod:

Demo (int a) {Jeśli (a> 5)a = a * 3Drukuj (a)}

Scenariusz 1:

Wartość a to 2

Kod podświetlony na żółto zostanie wykonany. Tutaj zaznaczony jest wynik decyzji „Nie” Jeśli (a> 5).

Pokrycie decyzji = 50%

Scenariusz 2:

Wartość a wynosi 6

Kod podświetlony na żółto zostanie wykonany. Tutaj zaznaczony jest wynik decyzji „Tak” Jeśli (a> 5).

Pokrycie decyzji = 50%

Przypadek testowy Wartość A Wynik Zakres decyzji
1 2 2 50%
2 6 18 50%

Pokrycie oddziałów

Pokrycie gałęzi to metoda testowania typu white box, w której testowany jest każdy wynik z modułu kodu (instrukcji lub pętli). Celem pokrycia gałęzi jest zapewnienie, że każdy warunek decyzji z każdego oddziału zostanie wykonany przynajmniej raz. Pomaga mierzyć ułamki niezależnych segmentów kodu i znajdować sekcje bez rozgałęzień.

Na przykład, jeśli wyniki są binarne, musisz przetestować wyniki zarówno Prawda, jak i Fałsz.

Wzór do obliczenia pokrycia branży:

Przykład zasięgu oddziału

Aby poznać zasięg gałęzi, rozważmy ten sam przykład, który został użyty wcześniej

Rozważmy następujący kod

Demo (int a) {Jeśli (a> 5)a = a * 3Drukuj (a)}

Branża będzie również uwzględniać bezwarunkową gałąź

Przypadek testowy Wartość A Wynik Zakres decyzji Pokrycie oddziałów
1 2 2 50% 33%
2 6 18 50% 67%

Zalety zasięgu branżowego:

Pokrycie gałęzi Testowanie zapewnia następujące korzyści:

  • Umożliwia sprawdzenie poprawności wszystkich gałęzi w kodzie
  • Pomaga upewnić się, że żadne rozgałęzienia nie prowadzą do nieprawidłowości w działaniu programu
  • Metoda pokrycia gałęzi usuwa problemy, które występują z powodu testowania pokrycia instrukcji
  • Pozwala znaleźć te obszary, które nie są testowane innymi metodami testowania
  • Pozwala znaleźć ilościową miarę pokrycia kodu
  • Pokrycie gałęzi ignoruje gałęzie wewnątrz wyrażeń logicznych

Pokrycie stanu

Pokrycie warunku lub pokrycie wyrażenia to metoda testowa używana do testowania i oceny zmiennych lub wyrażeń podrzędnych w instrukcji warunkowej. Celem pokrycia warunków jest sprawdzenie indywidualnych wyników dla każdego warunku logicznego. Pokrycie warunków zapewnia lepszą wrażliwość na przepływ sterowania niż pokrycie decyzji. W tym ujęciu uwzględniane są tylko wyrażenia z operandami logicznymi.

Na przykład, jeśli wyrażenie ma operacje logiczne, takie jak AND, OR, XOR, które wskazują całkowite możliwości.

Pokrycie warunku nie daje gwarancji pełnego pokrycia decyzji.

Wzór do obliczenia pokrycia warunku:

Przykład:

Dla powyższego wyrażenia mamy 4 możliwe kombinacje

  • TT
  • FF
  • TF
  • FT

Rozważ następujące dane wejściowe

X = 3

Y = 4

(x

PRAWDZIWE

Pokrycie warunku wynosi ¼ = 25%

A = 3

B = 4

(a> b)

FAŁSZYWY

Pokrycie maszyny skończonej

Pokrycie automatu skończonego jest z pewnością najbardziej złożonym typem metody pokrycia kodu. Dzieje się tak, ponieważ działa na zachowanie projektu. W tej metodzie pokrycia należy sprawdzić, ile stanów określonych w czasie jest odwiedzanych, tranzytowych. Sprawdza również, ile sekwencji jest zawartych w skończonej maszynie stanów.

Jaki rodzaj pokrycia kodu wybrać

To z pewnością najtrudniejsza odpowiedź. Aby wybrać metodę pokrycia, tester musi sprawdzić, czy plik

  • testowany kod ma jedną lub wiele nieodkrytych defektów
  • koszt potencjalnej kary
  • koszt utraconej reputacji
  • koszt utraconej sprzedaży itp.

Im większe prawdopodobieństwo, że defekty spowodują kosztowne awarie produkcyjne, tym wyższy poziom ochrony musisz wybrać.

Pokrycie kodu a pokrycie funkcjonalne

Pokrycie kodu Zasięg funkcjonalny
Pokrycie kodu informuje, jak dobrze kod źródłowy został przetestowany przez stanowisko testowe. Pokrycie funkcjonalne mierzy, jak dobrze funkcjonalność projektu została objęta przez Twoje stanowisko testowe.
Nigdy nie używaj specyfikacji projektu Użyj specyfikacji projektu
Wykonane przez programistów Wykonane przez testerów

Narzędzia pokrycia kodu

Oto lista ważnych narzędzi pokrycia kodu:

Nazwa narzędzia Opis
Cobertura Jest to narzędzie pokrycia kodu typu open source. Mierzy pokrycie testów przez instrumentowanie bazy kodu i analizuje, które wiersze kodu są wykonywane, a które nie są wykonywane po uruchomieniu zestawu testów.
Koniczyna Clover skraca również czas testowania, uruchamiając tylko testy, które obejmują kod aplikacji, który został zmodyfikowany od czasu poprzedniej kompilacji.
DevPartner DevPartner umożliwia programistom analizę kodu Java pod kątem jakości i złożoności kodu.
Emma EMMA obsługuje pokrycie klas, metod, linii i bloków bazowych, zagregowanych plików źródłowych, klas i poziomów metod.
Kalistick Kalistick to aplikacja innej firmy, która analizuje kody z różnych perspektyw.
CoView i CoAnt Oprogramowanie kodujące to narzędzie do pokrycia kodu do pomiarów, tworzenia pozorowanych obiektów, testowalności kodu, pokrycia ścieżek i gałęzi itp.
Bullseye dla C ++ BulseyeCoverage to narzędzie do pokrycia kodu dla języków C ++ i C.
Sonar Sonar to narzędzie do obsługi otwartego kodu, które pomaga zarządzać jakością kodu.

Zalety korzystania z pokrycia kodu

  • Pomocne w ocenie ilościowej miary pokrycia kodu
  • Umożliwia tworzenie dodatkowych przypadków testowych w celu zwiększenia pokrycia
  • Pozwala znaleźć obszary programu, które nie są ćwiczone przez zestaw przypadków testowych

Wady korzystania z pokrycia kodu

  • Nawet jeśli jakakolwiek konkretna funkcja nie jest zaimplementowana w projekcie, pokrycie kodu nadal raportuje 100% pokrycia.
  • Nie można określić, czy przetestowaliśmy wszystkie możliwe wartości funkcji za pomocą pokrycia kodu
  • Pokrycie kodu również nie mówi, ile i jak dobrze pokryłeś swoją logikę
  • W przypadku, gdy określona funkcja nie została zaimplementowana lub nie jest uwzględniona w specyfikacji, techniki oparte na strukturze nie mogą znaleźć tego problemu.

Podsumowanie

  • Pokrycie kodu to miara opisująca stopień, w jakim kod źródłowy programu został przetestowany
  • Pomaga mierzyć efektywność implementacji testów
  • Pięć metod pokrycia kodu to 1.) Pokrycie instrukcji 2.) Pokrycie warunku 3) Pokrycie oddziału 4) Pokrycie przełączane 5) Pokrycie FSM
  • Pokrycie instrukcji obejmuje wykonanie wszystkich instrukcji wykonywalnych w kodzie źródłowym przynajmniej raz
  • Pokrycie decyzji raportuje prawdziwe lub fałszywe wyniki każdego wyrażenia logicznego
  • W pokryciu gałęzi testowany jest każdy wynik modułu kodu
  • Warunek ujawni, w jaki sposób wartościowane są zmienne lub wyrażenia podrzędne w instrukcji warunkowej
  • Pokrycie automatu skończonego jest z pewnością najbardziej złożonym typem metody pokrycia kodu
  • Aby wybrać metodę pokrycia, tester musi sprawdzić koszt potencjalnej kary, utraconej reputacji, utraconej sprzedaży itp.
  • Pokrycie kodu informuje, jak dobrze kod źródłowy został przetestowany przez stanowisko testowe, podczas gdy pokrycie funkcjonalne mierzy, jak dobrze uwzględniono funkcjonalność projektu
  • Cobertura, JTest, Clover, Emma, ​​Kalistick to kilka ważnych narzędzi do pokrycia kodu
  • Pokrycie kodu umożliwia tworzenie dodatkowych przypadków testowych w celu zwiększenia pokrycia
  • Pokrycie kodu nie pomaga określić, czy przetestowaliśmy wszystkie możliwe wartości funkcji