Cyklomatyczna złożoność Mccabe'a: Oblicz za pomocą wykresu przepływu (przykład)

Spisie treści:

Anonim

Aby zrozumieć złożoność cyklomatyczną, najpierw zrozummy -

Co to są metryki oprogramowania?

Pomiar to nic innego jak ilościowe wskazanie rozmiaru / wymiaru / pojemności atrybutu produktu / procesu. Metryka oprogramowania jest definiowana jako ilościowa miara atrybutu posiadanego przez system oprogramowania w odniesieniu do kosztu, jakości, rozmiaru i harmonogramu.

Przykład-

Środek - liczba błędówMetryki - liczba błędów znalezionych na osobę

W tym samouczku nauczysz się:

  • Co to są metryki oprogramowania?
  • Co to jest złożoność cyklomatyczna?
  • Zapis wykresu przepływu dla programu:
  • Jak obliczyć złożoność cyklomatyczną
  • Właściwości złożoności cyklomatycznej:
  • Jak ta metryka jest przydatna do testowania oprogramowania?
  • Więcej o V (G):
  • Narzędzia do obliczania złożoności cyklomatycznej:
  • Zastosowania złożoności cyklomatycznej:

Cyklomatyczna złożoność w testowaniu oprogramowania

Cyklomatyczna złożoność w testowaniu oprogramowania to miernik testowy używany do pomiaru złożoności programu. Jest to ilościowa miara niezależnych ścieżek w kodzie źródłowym programu. Złożoność cyklomatyczną można obliczyć za pomocą grafów przepływu sterowania lub w odniesieniu do funkcji, modułów, metod lub klas w programie.

Niezależna ścieżka jest definiowana jako ścieżka, która ma co najmniej jedną krawędź, po której wcześniej nie przebyto żadnej innej ścieżki.

Metryka ta została opracowana przez Thomasa J. McCabe w 1976 roku i jest oparta na reprezentacji przepływu sterowania w programie. Przepływ sterowania przedstawia program jako wykres składający się z węzłów i krawędzi.

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

Zapis wykresu przepływu dla 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, until i normalna sekwencja przepływu.

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

Reprezentacja matematyczna:

Matematycznie jest to zestaw niezależnych ścieżek na diagramie graficznym. 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-Liczba węzłów obecnych na wykresiepodczas gdy (i 

Wykres przepływu dla tego programu to

Obliczenia 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 wykonywania 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 na wykresie
  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 Basis Path jest jedną z technik białej skrzynki i gwarantuje wykonanie co najmniej jednej instrukcji podczas testowania. Sprawdza każdą liniowo niezależną ścieżkę w programie, co oznacza , że liczba przypadków testowych będzie równoważna cyklicznej złożoności programu.

Ta miara jest przydatna ze względu na właściwości złożoności cyklomatycznej (M) -

  1. M może być liczbą przypadków testowych, aby osiągnąć pokrycie gałęzi (górna granica)
  2. M może być liczbą ścieżek przez wykresy. (Dolna granica)

Rozważ ten przykład -

Jeśli (warunek 1)Oświadczenie 1JeszczeOświadczenie 2Jeśli (warunek 2)Oświadczenie 3JeszczeOświadczenie 4

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

Ponieważ złożoność została obliczona na 3, do pełnego pokrycia ścieżki w powyższym przykładzie potrzebne 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 - Cyklomatyczne obliczanie złożoności

Krok 4 - Projektowanie przypadków testowych

Po utworzeniu podstawowego zestawu należy napisać PRZYPADKI TESTOWE, 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. Opierając się na liczbie złożoności, zespół może podsumować działania, które należy podjąć w celu wykonania pomiaru.

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

Liczba złożoności Znaczenie
1-10 Ustrukturyzowany i dobrze napisany kod Wysoki koszt testowalności i mniejszy nakład pracy
10-20 Złożony kod Medium Testowalność Koszt i wysiłek jest średni
20-40 Bardzo złożony kod Niski koszt i wysiłek związany z testowalnością są wysokie
> 40 W ogóle niemożliwe 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
  • Reflector Add In - metryki kodu dla zestawów .NET
  • GMetrics - znajdź metryki w aplikacjach powiązanych z językiem Java

Zastosowania złożoności cyklomatycznej:

Cyklomatyczna złożoność może okazać się bardzo pomocna w

  • Pomaga programistom i testerom w określaniu niezależnych wykonań ścieżek
  • Deweloperzy 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żynierii oprogramowania
  • Oceń ryzyko związane z aplikacją lub programem
  • Korzystanie z tych wskaźników na wczesnym etapie cyklu zmniejsza większe ryzyko programu

Wniosek:

Złożoność cykliczna to miernik oprogramowania przydatny w testowaniu strukturalnym lub białoskrzynkowym. Służy głównie do oceny złożoności programu. Im więcej punktów decyzyjnych, tym większa jest złożoność programu. Jeśli program ma wysoki stopień złożoności, prawdopodobieństwo błędu jest wysokie przy wydłużonym czasie konserwacji i rozwiązywania problemów.