在 Concolic 测试中,"concrete execution" 是什么意思?

In concolic testing, what does "concrete execution" mean?

我在研究 concolic testing 的概念时遇到了术语 "concrete & symbolic execution"。 (那里提到的文章 "CUTE: A concolic unit testing engine for C" 在其摘要部分使用了该术语。)

"The approach used builds on previous work combining symbolic and concrete execution, and more specifically, using such a combination to generate test inputs to explore all feasible execution paths."

谁能确认一下"concrete execution"是什么意思?尽管我进行了搜索,但我找不到任何直接引用/明确的陈述。

据我了解,"concrete execution" 表示 "the execution of a program with actual input values unlike symbolic execution, which assumes symbolic values to variables, inputs etc."。如果我错了,请指正(如果可能的话,举个小例子)。

在您提到的上下文中,我很确定 "concrete execution" 实际上指的是 运行 特定输入的程序并查看会发生什么。您链接到的 "concolic testing" 文章建议在特定输入测试(具体执行,完整但不健全)和符号测试(符号执行,听起来但不完整)之间采用混合方法。

希望对您有所帮助!

Concolic 执行是 CONCrete 执行和 symbOLIC 执行的混合,以可行性为目的。

符号执行允许我们通过所有可能的执行路径来执行程序,从而实现所有可能的路径条件(路径条件=将我们带到执行中的特定点的一组逻辑约束)。问题在于,除了微基准测试之外,通过所有可能的执行路径执行程序的成本呈指数级增长,因此令人望而却步。

另一方面,如果我们为符号执行提供具体的值,则可以引导它通过特定的执行路径(无需遍历所有路径)并达到各自的路径条件。这是可行的。

我希望这能回答您的问题