Przeglądy kodu to technika testowania oprogramowania przeprowadzana bardzo wcześnie na etapie projektowania jeszcze przed dynamicznym uruchomieniem produktu.
Błędy wykryte dzięki przeglądowi we wczesnej fazie cyklu tworzenia oprogramowania są zazwyczaj znacznie tańsze do usunięcia niż te wykryte podczas wykonywania testów (np. defekty znalezione w wymaganiach).
Przegląd może zostać wykonany w całości manualnie lub przy użyciu narzędzi.
Przegląd kodu manualny ma wiele wad ponieważ jego wynik jest ściśle uwarunkowany podejściem osoby która taką czynność wykonuje. Wynik działania jest zależny od predyspozycji, czasu podejścia i wielu innych czynników które nie dają obiektywnego rezultatu. Dlatego czynności manualne powinny kończyć się na etapie uzupełnienia kodu o komentarze.
Zalecane jest wykorzystywanie do przeglądów kodu narzędzi które podchodzą do problemu w sposób obiektywny i dający pewność że przegląd jest wykonany prawidłowo. Oczywiście narzędzia też mają swoje mankamenty typu zbyt szczegółowe podejście do problemu, gdzie wynikiem działania będzie szereg ostrzeżenie nie mających wpływu na poprawne działanie systemu.
Korzyści przeglądów to:
- wczesne wykrycie defektów i ich korekta,
- poprawa produktywności rozwoju oprogramowania,
- zredukowanie czasu potrzebnego na tworzenie oprogramowania,
- zredukowanie czasu i kosztów testowania, zredukowanie kosztów cyklu życia,
Przegląd może również znajdować błędy które zostaną pominięte w dynamicznych testach po skompilowaniu aplikacji. Przegląd, analiza statyczna i dynamiczne testowanie mają te same cele - znajdywanie błędów.
Obie techniki uzupełniają się, mogą znaleźć różne typy defektów efektywniej i wydajniej.
techniki dynamiczne znajdują raczej problemy spowodowane przez defekty to przeglądy kodu znajdują same defekty.
Typowe defekty są łatwiejsze do znalezienia poprzez przegląd niż przez testy dynamiczne: odchylenia od standardu, złe wymagania, wady projektowe, niedostateczna serwisowalność i zła specyfikacja interfejsów.
Polecane narzędzia:
- Cppcheck - http://freshmeat.net/projects/cppcheck
- Splint - http://www.splint.org/