写点什么

好的测试应该具备哪些特质?

  • 2008-10-04
  • 本文字数:785 字

    阅读完需:约 3 分钟

什么样的测试算是好测试?我们又该怎么知道如何编写好测试?

Kent Beck 断定,好的测试应该具备下列条件:

  1. 互相隔离的(不受其他测试的表现形式、是否存在、执行结果的影响)
  2. 自动化的
  3. 编写快
  4. 运行快
  5. 独一无二(为开发人员提供自信,而不会由其他测试提供信息,与其他测试不相关)

Roy Osherove 补充道:好的测试有三个基本属性:可维护、值得信赖、易于理解。

Mike Hill 的列表要更长:

  • 它会很短,通常只有十来行代码。
  • 它不会测试运行程序内部的对象,但是会测试为了测试目的而构建的应用内部的对象。
  • 它只会调用很小的一部分代码,通常是某个函数的某一分支。
  • 它是灰盒的形式编写的。也就是说,它运作的方式像是黑盒,但是有时又会利用白盒的长处。(一般来说,这是避免组合问题的重要因素。)
  • 测试要符合生产代码的编码标准,比如,团队目前对于优秀编码的最佳看法。
  • 应用的众多小测试构成了一个“提交关卡”。这就是说,开发人员可以在所有小测试通过的情况下提交代码,否则(强烈建议、甚至不惜手段)阻止他们提交。
  • 测试应对接受测试的对象有完全的控制权,因此应是自包含的。也就是说,它不会依赖不属于测试代码及其依赖图的任何其他对象。
  • 它的运行时间非常短。
  • 它会先于要测试的代码变更之前编写。
  • 通过一系列 slip-and-fake 技巧,它会避免使用所有“糟糕”的 collaborator。
  • ……

Mike 和 Ron Jeffries 提醒我们:TDD 的核心价值是要简化设计、提升开发效率;代码质量的提升和 bug 数量的减少是因此而带来的重要好处。

Jeremy Miller 补充了良好单元测试应该具备:

  • 与顺序无关,并且是隔离的。运行测试的软件可以按照以任何顺序运行。
  • 意图明确。最好的单元测试应该能够告诉阅读者,一个对象的 API 是如何准备被调用的。
  • 易于设置。

最后, Ed Burnette 写到:要让你的单元测试在任何方面都可以重复;测试边界条件,并且要一直保持测试的通过率是 100%。

查看英文原文: What are the Qualities of a Good Test?

2008-10-04 06:301670
用户头像

发布了 479 篇内容, 共 179.0 次阅读, 收获喜欢 53 次。

关注

评论

发布
暂无评论
发现更多内容

java 后端博客系统文章系统——No5

猿灯塔

Java

第六周作业

秦宝齐

学习 极客大学架构师训练营

第六周总结

秦宝齐

作业

week6.课后作业

个人练习生niki👍

极客大学架构师训练营

架构师训练营第六周作业

R20114

极客大学架构师训练营

2020-07-11-第六周作业

路易斯李李李

用Roslyn做个JIT的AOP

八苦-瞿昙

技术 随笔杂谈 aop 代理 框架

LeetCode题解:15. 三数之和,JavaScript双循环+HashMap,详细注释

Lee Chen

大前端 LeetCode

架构师训练营第六周总结

一剑

用“实例化需求”,让需求澄清更高效

小隐乐乐

架构师训练营 Week 06 总结

Wancho

redis系列之——数据类型bitmaps:今天你签到了吗?

诸葛小猿

redis bitmaps bloomfilter

CAP Theorem

dongge

架构师训练营第 6 周作业二

不谈

区块链扩张路径变局:从技术比拼转向生态落地

CECBC

1. react起始 | 2020年前端再入门系列连载

chaozh

大前端 React

400GE燎原前夜,智能IP网络的核心路由器巅峰际会

脑极体

架构师训练营第六周作业

一剑

你要的《Spring系列源码解读》PDF它来了

z小赵

Java spring

分布式系统架构作业

qihuajun

CAP原理

chenzt

面向对象编程学习

一叶知秋

对CAP的理解

朱月俊

记一次Apache的代码导致生产问题

root

Java Apache spring BeanUtils

分布式系统架构学习总结(分布式数据库和NoSQL)

qihuajun

架构师训练营 Week 06 作业

Wancho

架构师第六周作业及总结

傻傻的帅

Rust所有权,可转可借

袁承兴

rust 指针 函数调用 引用 内存管理

React与前端开发发展史

Geek_z9ygea

架构设计篇之中台战略思想与落地

小诚信驿站

架构设计 刘晓成 中台战略 服务化改造

Week 6 作业

Shawn

好的测试应该具备哪些特质?_研发效能_Mark Levison_InfoQ精选文章