利用神经网络构建基于搜索的软件测试搜索空间
1. 引言
基于搜索的软件测试(SBST)方法在软件工程中被广泛应用。它依赖于一个反馈机制,该机制评估候选解决方案并相应地引导搜索。任何反馈机制的有效性都取决于表示方式和适应度函数的选择。在自动化搜索驱动测试的背景下,还需要选择搜索策略。本文主要关注为基于搜索的测试过程构建合适的适应度函数。
一个好的适应度函数的搜索空间应具备一些理想的特性:
- 空间要大且近似连续。
- 适应度函数的计算复杂度要低,且没有已知的最优解。
- 要真正代表其试图表示的属性。
- 度量所施加的顺序关系要有意义。
本文将为两种基本的测试策略——属性目标和多样化驱动,介绍构建具有理想特性的适应度函数的方法。
1.1 属性目标搜索景观
执行属性目标搜索策略的适应度函数需要指示候选解决方案与感兴趣属性的“接近程度”(前提是该属性尚未被观察到),即需要满足表示条件。
例如,测试人员想要执行一个数值条件语句后面的特定程序点,变量值与 if 语句谓词值之间的数值差(分支距离)就是明显的适应度函数。但在许多“大海捞针”的测试场景中,这样简单的适应度函数并不存在。比如,测试人员在寻找程序崩溃点,但对原始输入进行一千次变异执行后程序仍未崩溃,这时能否判断某些执行“更接近”崩溃,从而更适合进一步变异呢?
通过对执行轨迹和崩溃/未崩溃标签进行训练的神经网络可以为每个候选解决方案生成一个“可疑度”分数。我们可以查询神经网络,判断某些输入的行为“看起来可疑地像崩溃”。本文将展示如何构建这样的适应度函数及其有用特性。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



