提升软件测试覆盖率:归纳测试与浮点约束求解的研究与实践
在软件测试领域,如何提高测试覆盖率、确保软件质量一直是研究的重点。本文将介绍两种有效的测试方法:归纳测试和基于搜索的浮点约束求解,它们在不同方面展现出独特的优势,为软件测试提供了新的思路和方法。
归纳测试探索TCP栈行为
归纳测试是一种通过不断推断模型来生成更完善测试集的方法。在探索TCP栈行为的案例中,归纳测试展现出了显著的优势。
测试流程与原理
归纳测试通过一个简单的Unix Bash脚本将三个关键函数(generateTests、runTests和inferLTS)连接起来。测试集会不断执行,直到有测试失败。当测试失败时,会推断出一个新的模型,然后重新开始测试过程。这个过程会在两种情况下终止:一是找不到更多冲突的测试;二是对测试运行次数设置了限制。
归纳测试的基本原理是,推断模型的能力可以清晰地展现出已经测试过的内容,从而使测试集生成器能够在下一轮生成更复杂、更多样化的测试集。为了验证这一点,我们将归纳测试生成的测试集与相同设置但不能用推断模型替换原有模型(即模型始终停留在generateInitLTS函数生成的最通用模型)的测试集进行了比较。
测试指标评估
- 功能覆盖率 :在没有现有规范的情况下,测量功能覆盖率是一个挑战。传统的代码覆盖率只能粗略地近似程序实际功能行为的覆盖程度。而归纳测试中,我们从测试集推断出的模型为测量功能覆盖率提供了一个功能视角。我们通过计算模型中单个转换的数量来评估功能覆盖率,这些转换包括常规状态转换和导致失败/终止状态的转换。虽然这种测量方法比代码覆盖率更
超级会员免费看
订阅专栏 解锁全文
1218

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



