看下面简单明了的代码:
function sum(a, b) { return a + b; }
现在,让我们为它编写一些测试:
test('sum', () => { expect(sum(1, 2)).toBe(3); expect(sum(2, 3)).toBe(5); expect(sum(3, 4)).toBe(7); expect(sum(4, 5)).toBe(9); });
我们的覆盖率是 100%,对吗?嗯,是的,我们确实做到了,事实上我们可以说我们获得了 400% 的覆盖率,因为所有代码都经过了 4 次全面测试,但是我们做到了吗?
事实是我们没有。我们正在使用有限的输入集来测试该函数,并且我们没有考虑边缘情况,也没有使用无效的输入来测试该函数。
考虑以下因素:
sum(1, '2'); sum(1, null); sum(1, undefined);
在这种情况下会发生什么?该函数会抛出错误吗?它会返回一个值吗?它会破坏我们的应用程序吗?
测试覆盖率是一个强大的工具,但它不是最终的解决方案。这是一个可以帮助您了解有多少代码正在被测试的指标,但它并不能告诉您它的测试情况如何。
测试覆盖率可以在数量上为您提供帮助,但在质量上却无济于事。您可以编写良好的测试,考虑边缘情况,使用无效输入测试代码,并确保您的测试有意义且有价值。
这是一篇非常短的文章,我承认,但我仍然希望它对您有用,提醒您编写良好测试的重要性。请记住,测试覆盖率是一种工具,而不是目标。充分利用它取决于您。
再见,
迈克尔。
以上是关于测试覆盖率的真相的详细内容。更多信息请关注PHP中文网其他相关文章!