可覆盖性分析与启发式驱动的测试用例选择
可覆盖性分析的改进
在可覆盖性分析方面,为了提升性能,可采取以下几种启发式方法:
1. 观察反例 :将所有可覆盖性任务放入任务池中。当创建反例证明某个任务可覆盖时,检查是否有其他未覆盖的任务能被该反例覆盖,若有则从任务池中移除。
2. 使用随机模拟 :模拟速度快,可生成程序可能执行的轨迹。在寻找特定任务前,对程序进行几次模拟,移除所有观察到的任务。此外,模拟可扩展反例,包含剩余可覆盖性任务中涉及的所有值,提高检测和移除这些任务的可能性。
3. 使用静态分析 :为每个任务识别一个额外任务列表(可能为空),若该任务被覆盖,则所有额外任务也被覆盖。使用集合覆盖算法,选择任务子集并尝试仅覆盖这些任务,减少需要覆盖的任务数量。
4. 使用程序转换 :可覆盖性分析规则,特别是语句可覆盖性分析规则,可基于修改程序进行优化。创建一个更简单的辅助程序,在辅助程序上运行规则可得到相同结果。
目前,已实现了前两种启发式方法,结果很有前景,可在接近或略超过模型检查大小限制的模块上测量可覆盖性。一方面,许多任务通过快速模拟被消除;另一方面,模型检查引擎中的许多简化方法适用于可覆盖性分析中的简单规则。
启发式驱动的测试用例选择理论基础
标记迁移系统(LTS)
LTS 是描述进程行为的基本模型,如规范、实现和测试。一个标记迁移系统是一个 4 元组 < Stat, L, T, s0 >,其中 Stat 是可数的非空状态集,L
超级会员免费看
订阅专栏 解锁全文
40

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



