РБПО-017. Термин: динамический анализ кода программы (часть 2/3)
Достоинства динамического анализа кода:
• в большинстве реализаций появление ложных срабатываний исключено, так как обнаружение ошибки происходит в момент её возникновения в программе. Таким образом, обнаруженная ошибка является не предсказанием, сделанным на основе анализа модели программы, а констатацией факта её возникновения;
• в некоторых случаях не требуется исходный код, это позволяет протестировать программы с закрытым кодом.
Недостатки динамического анализа кода:
• динамический анализ обнаруживает дефекты только на трассе, определяемой конкретными входными данными. Дефекты, находящиеся в других частях программы, не будут обнаружены;
• не может проверить, что код выполняет то, что задумывал программист (поясню эту мысль в следующем посте);
• требуются значительные вычислительные ресурсы для проведения тестирования;
• только один путь выполнения может быть проверен в каждый конкретный момент времени, что требует большого количества тестовых запусков для большей полноты тестирования;
• при тестировании на реальном процессоре исполнение некорректного кода может привести к непредсказуемым последствиям.
Имея свои сильные и слабые стороны, динамический анализ наиболее эффективно может быть использован вместе со статическим анализом кода.
Дополнительные ссылки:
1. Проверяем код динамического анализатора Valgrind с помощью статического анализатора.
2. Зачем нужен динамический анализ кода, на примере проекта PVS-Studio.
P.S. Кстати, сейчас при разработке PVS-Studio мы используем динамический анализ, регулярно выполняя по ночам прогоны ASan (AddressSanitizer), UBSan (UndefinedBehaviorSanitizer).
Post #269
309

- 🔥 4