gpt4 book ai didi

unit-testing - 分支覆盖和断言覆盖?

转载 作者:行者123 更新时间:2023-11-28 19:49:46 24 4
gpt4 key购买 nike

我认为大多数人现在都将分支覆盖率用作语句覆盖率的质量指标,但我不太了解的一个指标是:测试本身的质量。

例如,我可以编写测试代码中的许多分支,但没有一个测试执行断言。因此,虽然我执行了很多分支,但我没有正确检查返回条件。有什么方法可以捕获此“断言”指标吗?

人们自己是否在测试中使用任何指标?

最佳答案

博客文章 What does code coverage really mean? 处理这个问题。研究结果表明,单元测试的代码覆盖率通常是回归测试可靠性的良好指标。对于系统测试(执行软件系统的大部分),代码覆盖不是可靠性的有用近似值。

变异测试可用于评估测试用例的有效性。这个想法是通过引入故障来改变源代码,并检查测试用例是否能够检测到故障。通常的方法是在单个方法上应用突变运算符(例如:删除一行代码,用减法替换加法,反转 bool 条件),运行所有测试并检查是否至少有一个测试用例失败。失败的测试用例能够揭示损坏的代码。突变测试的缺点是它的计算复杂性和等效突变体扭曲结果的问题(等效突变体是在句法上发生突变但在语义上保持不变的代码块)。 Pitest是一个用于工业界的Java变异测试系统。

关于不包含任何断言的测试用例, Martin Fowler writes :

Although assertion-free testing is mostly a joke, it isn’t entirely useless. [...] Some faults [such as null pointer exceptions] do show up through code execution.

关于unit-testing - 分支覆盖和断言覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27398240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com