4.1 slow:最大执行路径长度
我们的第一个特定于域的模糊测试应用程序是将 SlowFuzz 移植到我们的框架。此应用程序的目标是生成输入,以最大化被测程序中的执行路径长度。我们想要定义 is_waypoint(i,S,d) 谓词如下:如果输入 i 的执行导致路径长度高于 S 中的任何其他输入,则应保存该输入。特定于域的反馈映射 dsf 将单键 0 (K = {0}) 映射到自然数 (V = N)。在映射中,dsf (0) 表示测试输入 i 的执行路径长度。这些值聚合为一个数字(A =N),表示在一组输入中观察到的最大执行路径长度
在被测程序的入口点,插入一个将 dsf (0) 设置为 0 的语句。然后,在程序中的每个基本块上,插入一个语句,该语句递增存储在 dsf (0) 处的值。因此,在测试执行期间,每次访问基本块时,dsf (0) 的值都会递增 1。在测试输入执行结束时,dsf (0) 的值将包含执行路径长度。由于此域的化简器函数定义为 初始值为 0 的最大值(参见表 3 的第一行),因此特定于域的反馈 A(S, 0,d) 的聚合值将是 S 中所有输入中观察到的最大执行速率长度。