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.
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.
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
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:
- V (G) to maksymalna liczba niezależnych ścieżek w grafie
- V (G) >=1
- G będzie miał jedną ścieżkę, jeśli V (G) = 1
- 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) –
- M może być liczbą przypadków testowych wymaganą do osiągnięcia pokrycia gałęzi (górna granica)
- 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.