Kategorie szkoleń | Egzaminy | Kontakt

Odpowiedź (1)

  • 1

W normie IEEE-610-12-1990 czytamy o analizie statycznej:


"The process of evaluating a system or component based on its form,structure, content, or documentation."

Analiza statyczna jest analizą wykonywaną na kodzie aplikacji bądź innych produktach pracy programisty - przy czym obiekt poddawany analizie nie jest uruchamiany. Podczas analizy statycznej zatem nie zaobserwujemy żadnego *zachowania* testowanej aplikacji, a co za tym idzie, nie wyłapiemy żadnych awarii. Jest to jednak jak najbardziej rodzaj testowania kodu bądź innego artefaktu produktowego - choć skupiony na strukturze wewnętrznej tego, co testowane, a nie zakładający sprawdzanie w toku eksperymentu, jak to coś działa.

Proces analizy statycznej może być z powodzeniem unarzędziowiony. Narzędziami wykonującymi ją będą zarówno same środowiska programistyczne - a konkretnie te ich funkcjonalności, które podświetlają wątpliwe fragmenty kodu, jak i sam kompilator nieprzepuszczający błędów składniowych. Istnieje też wiele innych, wyspecjalizowanych narzędzi, które skupiają się na konkretnych problemach - jak precyzja obliczeń, śledzenie procesowania zmiennych, nieprawidłowości w budowie warunków pętli w oparciu o samą strukturę. 
Podkreślaną korzyścią takiej analizy jest wychwytywanie defektów na wczesnym etapie tworzenia aplikacji, co utożsamia się z oszczędnością kosztów i podejściem prewencyjnym. Ważne jest też to, że defekty wykrywane przez analizę statyczną zazwyczaj - jeśli niezauważone - przyczyniają się do awarii rozrzuconych i niejednorodnych, które znacznie wydłużają pracę testerów wykonujących testy dynamiczne. 

Mimo tego że norma nie wspomina w definicji o narzędziach, najbardziej utartym i stosowanym wykorzystaniem pojęcia jest "analiza statyczna za pomocą narzędzi" i takie jej rozumienie jest zazwyczaj domyślne w nauce do egzaminów certyfikacyjnych - nawet jeśli nie wspomniano o narzędziach. Pamiętajmy przy tym, że organizacja ISTQB jasno oddziela analizę statyczną od statycznego testowania manualnego - wykonywanego poprzez przeglądanie kodu bądź dokumentu i rozumowanie. 

Przydatne konkluzje są takie, że analiza statyczna będzie wykonywana najczęściej za pomocą narzędzi programistycznych, a jej wykonawcami będą w pierwszym rzędzie własnie deweloperzy, ewentualnie testerzy o specjalności Technicznego Analityka Testów. Analiza statyczna rozumiana jako proces unarzędziowiony nie jest sama w sobie działaniem rozumowym, a jedynie wykonaniem pewnego złożonego algorytmu, a zatem jest bezradna wobec problemów merytorycznych, semantycznych i, ogólnie mówiąc, związanych z potrzebami użytkownika końcowego i logiką biznesową.  

  • Odpowiedział
  • @ | 09.02.2015
  • TRENER MODERATOR ALTKOM AKADEMII