1. Strona główna
  2. Sylabus dla poziomu zaawansowanego – Techniczny analityk testowy (wersja z 19.10.2012)
  3. 3. Techniki analityczne
  4. 3.2 Analiza statyczna
  5. 3.2.4 Grafy wywołań

3.2.4 Grafy wywołań

Grafy wywołań stanowią statyczną reprezentację złożoności komunikacji. Są to grafy skierowane, w których węzły oznaczają jednostki programów, a krawędzie – komunikację między tymi jednostkami.

Grafy wywołań mogą znaleźć zastosowanie w testach jednostkowych, w których istnieją wzajemne wywołania różnych funkcji i modułów, w testach integracyjnych i systemowych, w których istnieją wywołania między modułami, a także w testach integracji systemów, w których istnieją wywołania między systemami.

Grafy wywołań można stosować w następujących celach:

  • projektowanie testów wywołujących konkretny moduł lub system,
  • określanie liczby miejsc w oprogramowaniu, w których następuje wywołanie modułu lub systemu,
  • analiza struktury kodu i architektury systemu,
  • określenie zaleceń dotyczących integracji (integracja parami lub sąsiadująco); opcje te zostały szerzej opisane w dalszej części rozdziału.

W sylabusie poziomu podstawowego [ISTQB_FL_SYL] przedstawiono dwie kategorie testowania integracyjnego: przyrostowe (zstępujące, wstępujące itp.) oraz nieprzyrostowe („wielkiego wybuchu”). Stwierdzono tam, że preferowane są metody przyrostowe, ponieważ kod jest analizowany w przyrostach, co ułatwia wykrywanie błędów, ponieważ ilość uwzględnianego każdorazowo kodu jest ograniczona.

W niniejszym sylabusie dla poziomu zaawansowanego prezentowane są trzy dodatkowe metody nieprzyrostowe  wykorzystujące grafy wywołań. Mogą one okazać się bardziej przydatne od metod przyrostowych, w których do realizacji testów prawdopodobnie niezbędne będzie budowanie dodatkowych wersji i tworzenie pomocniczego kodu nieprzeznaczonego do dystrybucji. Te metody to:

  • Testowanie integracji parami (nie należy mylić tego pojęcia z czarnoskrzynkową techniką testowania o nazwie „testowanie sposobem par”): forma testowania integracyjnego, która uwzględnia pary współpracujących modułów, zgodnie z ich rozmieszczeniem w grafie wywołań. Metoda ta pozwala ograniczyć liczbę budowanych wersji tylko w niewielkim stopniu, jednak umożliwia zmniejszenie rozmiaru niezbędnego kodu tzw. jarzma testowego.
  • Testowanie integracji sąsiadująco: forma testowania integracyjnego, w której wszystkie węzły połączone z danym węzłem uczestniczą w testowaniu integracyjnym. Wszystkie poprzedniki i następniki danego węzła w grafie wywołań są uwzględniane w testach.
  • Podejście McCabe’a oparte na predykatach projektowych korzysta z teorii złożoności cyklomatycznej w odniesieniu do grafu wywołań modułów. Wymaga ono skonstruowania grafu wywołań, w którym zostaną uwzględnione różne sposoby wzajemnych wywołań modułów, a w szczególności:
    • wywołania bezwarunkowe: wywołania jednego modułu przez inny moduł, które zawsze mają miejsce;
    • wywołania warunkowe: wywołania jednego modułu przez inny moduł, które występują tylko w pewnych sytuacjach;
    • wykluczające się wzajemnie wywołania warunkowe: moduł wywołuje dokładnie jeden spośród pewnej liczby innych modułów;
    • wywołania iteracyjne: moduł wywołuje inny moduł co najmniej raz, choć może również wywoływać go wielokrotnie;
    • iteracyjne wywołania warunkowe: moduł może wywołać inny moduł wiele razy, jednak może nie wywołać go w ogóle.

Po utworzeniu grafu wywołań oblicza się złożoność integracji i tworzy testy celem pokrycia grafu.

W pracy [Jorgensen07] można znaleźć więcej informacji na temat używania grafów wywołań i testowania integracyjnego parami.