
Testowanie dynamiczne a statyczne
Cześć Słońce!
Wiem, że temat, który zaraz poruszę jest dość prosty, jednak osobom początkującym często sprawia problem. Bo czym tak na prawdę są testy statyczne i dynamiczne? Czym się różnią? Jak je rozpoznać? Jak odpowiedzieć, co je różni?
Kontrola jakości jaką jest testowanie można realizować na dwa sposoby – testy statyczne i testy dynamiczne. Więc do czego sprowadzają się pierwsze z nich?
Testy statyczne
Testy statyczne, czy też testowanie statyczne to szereg metod sprawdzających aplikację głównie poprzez NIE URUCHAMIANIE KODU. Co to znaczy? Analizujemy kod lub inny produkt pracy ręcznie (np. dokumentację – tak! to też można testować!), bez jego kompilowania. Robimy tzw. przeglądy (definicja poniżej) oraz analizę statyczną, które mogą ułatwić nam różne dodatkowe narzędzia. Testy statyczne są istotne ze względu na bezpieczeństwo, gdyż są bardzo ważnym elementem testowania zabezpieczeń (w systemach związanych z bankowością, czy medycyną). Należy jednak pamiętać, że testy statyczne głównie są wykonywane przez odpowiednie automatyczne narzędzia, używane przez metodyki zwinne, CI oraz CD (na ten temat popełnię oddzielny wpis, jednak jeśli nie wytrzymasz do tego czasu, zachęcam Cię do ich zgłębienia już teraz). Większość środowisk developerskich jest wzbogacona o różne wtyczki, dodatkowe funkcje czy dodanie frameworków, sprawdzających poprawność produkowanego kodu.
Analiza statyczna
Jedną z głównych podgrup testowania statycznego jest właśnie analiza, czyli dokonanie oceny kodu, wymagań czy dokumentacji związanej z projektem, przy pomocy różnych narzędzi. Można jednak wyróżnić kilka kluczowych technik:
- pomiar skomplikowania (złożoności) kodu,
- sprawdzanie czy użyte ze sobą zmienne zgodne,
- weryfikacja poprawności stosowania standardów pisania kodu,
- analiza struktury pętli w kodzie.
Przegląd
Poniżej zacytowano ogólną definicję przeglądu, opublikowaną w słowniku ISTQB:
Przegląd – Typ testowania statycznego, podczas którego produkt pracy lub proces jest oceniany przez jedną lub więcej osób w celu wykrycia problemów i wprowadzenia udoskonaleń.
Istnieje wiele różnych klasyfikacji przeglądu, jednak pokuszę się o jedną z bardziej popularnych, którą rekomenduje sylabus poziomu podstawowego ISTQB, tj.:
- inspekcja – przejrzenia prowadzone przez autora przeglądanego produktu pracy,
- przegląd techniczny – przeprowadzany przez wykwalifikowany zespół technicznych specjalistów, którzy sprawdzają jakość produktu prac oraz identyfikują odchylenia od specyfikacji i standardów,
- przejrzenie – autor przeprowadza członków przeglądu przez produkt pracy, a członkowie zadają pytania i zgłaszają uwagi na temat ewentualnych problemów,
- przegląd nieformalny – nie ma formalnego procesu, ani oficjalnych wyników.
Co jeszcze można testować statycznie?
Techniki stosowania statycznego mogą być użyte nie tylko do specyfikacji (wymagania funkcjonalne/niefunkcjonalne/biznesowe), czy kodu źródłowego lub dokumentacji projektowej (umowy, plany projektów, harmonogramy, czy budżety), ale także do sprawdzania projektu architektury, instrukcji użytkownika, czy też instrukcji instalacji. Co jeszcze można tak testować? Strony internetowe! Na przykład pod kątem ich treści, struktury, użyteczności czy łatwości obsługi. Można też sprawdzać tzw. testalia, czyli plany testów, przypadki testowe, skrypty testów automatycznych, bądź dokumenty analizy ryzyka. Oprócz tego analizie statycznej mogą być poddane epiki, user story, kryteria akceptacji czy inne formy dokumentacji w ramach metodyk zwinnych.
Testalia – Produkty prac stworzone w ramach procesu testowego, używane do planowania, projektowania, wykonywania, oceny i raportowania testów. / Słownik ISTQB
Testowanie dynamiczne
Testowanie dynamiczne to takie, podczas którego wykonywany jest kod modułu lub systemu.
Czyli..?
Polegają głównie na testowaniu działania całości lub części programu poprzez jego uruchamianie i porównywanie danych wyjściowych z oczekiwanymi.
Różnice między testami statycznymi a dynamicznymi
Niezależnie od tego co testujemy, oba sposoby mają ten sam cel, jakim jest jak najwcześniejsze znalezienie błędów i ich zlikwidowanie, oraz ocena jakości tych produktów.
Testowanie statyczne z dynamicznym uzupełniają się. Zaleca się łączenie obu technik, np. testowanie statyczne do sprawdzania kodu źródłowego, produktów analizy biznesu, stworzonych epik czy user story jakże potrzebnych podczas tworzenia programowania, a testowanie dynamiczne do sprawdzania już uruchomionych produktów względem opisanych wymagań biznesowych. Po zaobserwowaniu awarii podczas testów dynamicznych w celu znalezienia problemu, debugujemy kod źródłowy i znajdujemy defekt odpowiedzialny za wywołanie tej awarii.
Różnicą opisywaną przez przytaczany przeze mnie sylabus jest to, że testowanie statyczne zwiększa spójność i jakość wewnętrznych owoców pracy, zaś testowanie dynamiczne skupia się na widocznych na zewnątrz rezultatach.
Warto pamiętać, że wprowadzenie na początkowych etapach produkcji oprogramowania, testowanie statyczne eliminuje późniejsze błędy, które nienaprawione w późniejszych etapach mogą wygenerować wyższe koszty ich naprawienia.

Jeden komentarz
Kamil
W artykule podałaś metody przeglądu kodu przez ludzi, czy mógłbym poprosić o artykuł na temat, w jakie sposoby realizowany jest przegląd kodu maszynowo?