Złożoność cyklomatyczna w testowaniu oprogramowania (przykład)

Czym jest złożoność cyklomatyczna McCabe'a?

Złożoność cyklomatyczna w testowaniu oprogramowania jest metryką testową używaną do pomiaru złożoności programu komputerowego. Jest ilościową miarą niezależnych ścieżek w kodzie źródłowym programu komputerowego. Złożoność cyklomatyczną można obliczyć, używając wykresów przepływu sterowania lub w odniesieniu do funkcji, modułów, metod lub klas w programie komputerowym.

Ścieżkę niezależną definiuje się jako ścieżkę, która ma co najmniej jedną krawędź, która nie została wcześniej przebyta żadną inną ścieżką.

Metryka ta została opracowana przez Thomasa J. McCabe w 1976 roku i opiera się na reprezentacji przepływu sterowania programu. Przepływ sterowania przedstawia program w postaci wykresu składającego się z węzłów i krawędzi.

Na wykresie węzły reprezentują zadania przetwarzania, a krawędzie reprezentują przepływ sterowania między węzłami.

Złożoność cyklomatyczna McCabe'a

Notacja wykresu przepływu programu

Notacja Flow Graph dla programu definiuje kilka węzłów połączonych krawędziami. Poniżej znajdują się diagramy przepływu dla instrukcji takich jak if-else, While, dopóki i normalna sekwencja przepływu.

Notacja wykresu przepływu programu

Jak obliczyć złożoność cyklomatyczną

Reprezentacja matematyczna:

Matematycznie jest to zbiór niezależnych ścieżek przez diagram grafu. Złożoność kodu programu można zdefiniować za pomocą wzoru –

V(G) = E - N + 2

Gdzie,

E – Liczba krawędzi

N – Liczba węzłów

V (G) = P + 1

Gdzie P = liczba węzłów predykatów (węzeł zawierający warunek)

Przykład -

i = 0;
n=4; //N-Number of nodes present in the graph

while (i<n-1) do
j = i + 1;

while (j<n) do

if A[i]<A[j] then
swap(A[i], A[j]);

end do;
j=j+1;

end do;

Wykres przepływu dla tego programu będzie

Oblicz złożoność cyklomatyczną

Obliczanie matematyczne,

  • V(G) = 9 – 7 + 2 = 4
  • V(G) = 3 + 1 = 4 (węzły warunku to 1,2 i 3 węzły)
  • Zestaw podstawowy – zbiór możliwych ścieżek wykonania programu
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

Właściwości złożoności cyklomatycznej

Poniżej przedstawiono właściwości złożoności cyklomatycznej:

  1. V (G) to maksymalna liczba niezależnych ścieżek w grafie
  2. V (G) >=1
  3. G będzie miał jedną ścieżkę, jeśli V (G) = 1
  4. Zminimalizuj złożoność do 10

Jak ta metryka jest przydatna do testowania oprogramowania?

Testowanie ścieżki bazowej jest jedną z technik White box i gwarantuje wykonanie co najmniej jednego polecenia podczas testowania. Sprawdza każdą liniowo niezależną ścieżkę przez program, która oznacza liczbę przypadków testowych, co będzie równoważne złożoności cyklomatycznej programu.

Ta metryka jest użyteczna ze względu na właściwości złożoności cyklomatycznej (M) –

  1. M może być liczbą przypadków testowych wymaganą do osiągnięcia pokrycia gałęzi (górna granica)
  2. M może być liczbą ścieżek przechodzących przez grafy. (Dolna granica)

Rozważmy ten przykład –

If (Condition 1)
Statement 1

Else
Statement 2

If (Condition 2)
Statement 3

Else
Statement 4

Złożoność cyklomatyczna tego programu będzie wynosić 8-7+2=3.

Ponieważ obliczona złożoność wynosi 3, do pełnego pokrycia ścieżki w powyższym przykładzie konieczne są trzy przypadki testowe.

Kroki, które należy wykonać:

Aby obliczyć złożoność cyklomatyczną i zaprojektować przypadki testowe, należy wykonać następujące kroki.

Krok 1 – Budowa grafu z węzłami i krawędziami z kodu

Krok 2 – Identyfikacja niezależnych ścieżek

Krok 3 – Obliczanie złożoności cyklomatycznej

Krok 4 – Projektowanie przypadków testowych

Po utworzeniu podstawowego zestawu PRZYPADKI TESTOWE należy zapisać, aby wykonać wszystkie ścieżki.

Więcej o V (G)

Złożoność cyklomatyczną można obliczyć ręcznie, jeśli program jest mały. Jeśli program jest bardzo złożony, należy użyć zautomatyzowanych narzędzi, ponieważ wymaga to większej liczby wykresów przepływu. Na podstawie liczby złożoności zespół może wnioskować o działaniach, które należy podjąć w celu pomiaru.

Poniższa tabela przedstawia przegląd liczby złożoności i odpowiadającego jej znaczenia v (G):

Liczba złożoności Znaczenie
1-10 Strukturalny i dobrze napisany kod

Wysoka testowalność

Koszt i wysiłek są mniejsze

10-20 Złożony kod

Średnia testowalność

Koszt i wysiłek są średnie

20-40 Bardzo skomplikowany kod

Niska testowalność

Koszt i wysiłek są wysokie

> 40 Wcale nie do przetestowania

Bardzo wysoki koszt i wysiłek

Narzędzia do obliczania złożoności cyklomatycznej:

Dostępnych jest wiele narzędzi do określania złożoności aplikacji. Niektóre narzędzia do obliczania złożoności są używane w przypadku określonych technologii. Złożoność można znaleźć na podstawie liczby punktów decyzyjnych w programie. Punktami decyzyjnymi są instrukcje if, for, for-each, while, do, catch, case w kodzie źródłowym.

Przykładami narzędzi są

  • OCLint – Statyczny analizator kodu dla języków C i pokrewnych
  • Dodatek reflektora — metryki kodu dla zestawów .NET
  • GMetrics – Znajdź metryki w Java powiązane aplikacje

Zastosowania złożoności cyklomatycznej:

Złożoność cyklomatyczna może okazać się bardzo pomocna w

  • Pomaga programistom i testerom w określeniu niezależnych wykonań ścieżek
  • Twórcy mogą zapewnić, że wszystkie ścieżki zostały przynajmniej raz przetestowane
  • Pomaga nam bardziej skupić się na odkrytych ścieżkach
  • Popraw pokrycie kodu w Inżynieria oprogramowania
  • Oceń ryzyko związane z aplikacją lub programem
  • Korzystanie z tych wskaźników na początku cyklu zmniejsza większe ryzyko programu

Podsumowanie

Złożoność cyklomatyczna to metryka oprogramowania przydatna w przypadku strukturyzacji lub Biały Box Testowanie. Jest głównie używany do oceny złożoności programu. Jeśli punktów decyzyjnych jest więcej, złożoność programu jest większa. Jeśli program ma wysoki numer złożoności, prawdopodobieństwo błędu jest wysokie, a czas konserwacji i rozwiązywania problemów jest wydłużony.

Codzienny biuletyn Guru99

Rozpocznij dzień od najnowszych i najważniejszych wiadomości na temat sztucznej inteligencji, dostarczanych już teraz.