testing - 为什么动态分析不能覆盖一个程序的所有执行路径?

标签 testing code-analysis static-analysis dynamic-analysis

我是程序分析领域的新手,在阅读了该领域的一些资料后,我有一些问题找不到相应的答案..

看,如果我实现一个工具:符号执行+具体执行 就像DART

那我觉得应该覆盖所有的执行路径,同时保持动态分析的特性..

有人告诉我动态分析不能覆盖所有的执行路径,但基本上是为什么?我认为像 DART 这样的技术现在已经很成熟了......

其他的,比如模型检查,理论上可以保证 100% 的代码覆盖率……我说的对吗?

谁能帮帮我?谢谢!

最佳答案

通过一段代码的路径数量与“if”语句的数量成指数关系。例如,如果您有这样一段代码:

if (a) {
  // do something
}
if (b) {
  // do something
}
...
if (z) {
  // do something
}

然后有 67108864 种可能的代码路径,具体取决于 26 个 bool 变量的值。

关于testing - 为什么动态分析不能覆盖一个程序的所有执行路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22059433/

相关文章:

objective-c - 如何从 Objective-C 代码中提取 AST?

visual-c++ - 如何在 MSBuild objective-c lCompile 中禁用代码分析?

c - 在 C 宏中,是否应该更喜欢 do { ... } while(0,0) 而不是 do { ... } while(0)?

c++ - Vera++ 规则实现

Clang Static Analyzer 没有发现最基本的问题

Android 应用程序如何测试开发版与实时版

testing - "Semantic Constraints"对软件测试意味着什么?

testing - TFS 测试结果详细报告与 SoapUI 项目结构不一致

java - Unitils 项目还活着吗?

visual-studio-2010 - C++/CLI : CA2123: Requires SecurityCriticalAttribute?