Некоторые отличия между статическим и динамическим анализом параллельных программ:
Цель: статический анализ направлен на выявление ошибок в исходном коде программы без её запуска, динамический — на обнаружение ошибок во время работы программы. 15
Проверяемый код: статический анализ позволяет проверять лишь то поведение, которое не зависит от пользователя. 1 Динамический анализ проверяет только код, выполняющийся во время теста. 1
Сложность использования: статический анализ проще, так как не требует запуска программы. 25 Динамический анализ сложнее, так как для достижения большей эффективности тестируемой программе требуется подача достаточного количества входных данных. 5
Количество диагностических сообщений: динамические анализаторы обычно выдают меньше диагностических сообщений, чем статические анализаторы. 3 Это связано с тем, что реально в программе были выполнены не все возможные ветки кода, и гарантировать, что все ошибки обнаружены, невозможно. 3
Возможность выявления ошибок: статический анализ позволяет выявлять ошибки даже в тех областях кода, который получает управление только в редчайших случаях. 3 Динамический анализ не позволяет найти все ошибки, так как часто невозможно выполнить весь тестируемый программный код, или последовательность его выполнения сильно отличается от реальной системы. 3
Таким образом, один вид анализа не способен полностью заменить другой, и для повышения качества требуется использовать инструменты разного типа, чтобы они дополняли друг друга. 5