10、基于搜索的过程式程序测试方法对比研究

基于搜索的过程式程序测试方法对比研究

在软件开发中,测试用例的生成对于确保程序的质量至关重要。本文将介绍两种测试用例生成方法,MOSA(一种整体套件方法)和 LIPS(一种迭代单目标方法),并对它们在过程式代码测试中的有效性、效率和测试套件大小等方面进行对比分析。

1. 测试用例生成算法原理

在测试用例生成过程中,采用迭代的方式进行搜索。在每次迭代 i 时,从工作列表中移除最后添加的分支,并将其作为搜索算法的目标。如果搜索算法能找到覆盖该目标的测试用例,就将新的测试用例 $t_i$ 添加到测试套件中,并把 $t_i$ 覆盖路径上决策节点的所有未覆盖分支添加到工作列表。这个过程会一直迭代,直到工作列表为空(即所有分支都被覆盖),或者搜索预算(以适应度评估次数衡量)耗尽。

在每次迭代中,使用工作列表中最后添加的分支作为搜索目标,并重用前一次迭代的最终种群(播种),因为它可能包含覆盖替代分支的测试用例,这样能减少生成覆盖目标分支测试用例的时间。

有时候,一个测试用例可能会覆盖工作列表中已有的分支(附带覆盖),这些分支会从工作列表中移除并标记为“已覆盖”。另外,在搜索覆盖特定分支的测试用例时,搜索算法生成的部分解决方案可能会覆盖工作列表中的其他分支,这些测试用例会被添加到测试套件中,被覆盖的分支也会从工作列表中移除。不过,这种方法虽然提高了搜索效率和有效性,但可能会导致测试套件中出现冗余。

2. 搜索预算的处理

单目标方法中处理预算比较棘手。将剩余预算全部用于搜索覆盖特定分支可能会造成浪费,因为目标分支可能不可行或难以覆盖。一种替代的预算处理策略是将预算平均分配到各个分支。例如,如果总预算是 $SB$(如适应度函数评估次数)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值