有效的测试

作者:Rich Martin

原文链接:http://googletesting.blogspot.tw/2014/05/testing-on-toilet-effective-testing.html

无论我们是在写一个独立的单元测试,还是在设计一个产品的整个测试过程,重要的是退一步思考 – 我们的测试能多有效地检测、报告代码中的错误。为了保证测试的有效性,每个测试需要最大限度地具备以下三个重要特性

覆盖度

当被测代码运行出错时,测试就失败了。高覆盖度的测试,是对被测代码中的缺陷非常敏感的,这有助于避免代码中处处都是BUG。

保证你的测试能够走遍代码中的所有路径,并包含所有预期状态的相关断言,以达到最大限度的覆盖。

应变性

如果被测代码没有缺陷,测试也不应该失败。可应变的测试,是只有在被测代码发生重大变更时才会失败的测试。被测代码进行重构或其他小变更时,不需要修改测试,这样一来就降低了维护测试的成本。

仅仅测试被测代码公开的接口,避免涉及到内部,从而做到最大程度的应变。最好使用基于mock的桩和模拟;不要修改具有依赖性的交互,除非那是你明确验证过的交互。一个薄弱的测试显然是应变性很低的。

精确度

当测试失败时,高精确度的测试会准确地定位缺陷。一个编写良好的单元测试会准确地告诉你哪一行代码存在错误。编写不良的测试(特别是大型的端到端测试),时常表现出非常低的精确度,只告诉你有错误,而不知道具体在哪。

通过保持你的测试规模小且关注点高度集中,来达到最大化的精确度。选择描述性的方法名称,明确表达该测试进行验证的目的。对于系统测试,则需要验证每一个边界状态。

这三者往往是互相紧密联系的。编写高应变性的测试(例如,对空内容的测试)是容易的,但是编写一个兼具应变性和覆盖度的测试,是很难的。 当你设计和编写测试的时候,将这些特性视为框架来指导具体的实现


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值