写点什么

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

  • 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:301725
用户头像

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

关注

评论

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

使用 KubeSphere 快速部署 Chaos Mesh

TiDB 社区干货传送门

集群管理 安装 & 部署

备份的 “算子下推”:TiDB BR 简介

TiDB 社区干货传送门

TiDB 底层架构 备份 & 恢复

专栏技术文章发布指南&奖励

TiDB 社区干货传送门

社区活动

TIDB调优小结

TiDB 社区干货传送门

伴鱼数据库之MongoDB数据在线迁移到TiDB

TiDB 社区干货传送门

Dumpling 导出表内并发优化

TiDB 社区干货传送门

性能调优 TiDB 底层架构 备份 & 恢复

在TiDB中实现一个关键字——Parser篇

TiDB 社区干货传送门

TiDB 底层架构

TiDB 在小米的落地及云原生探索

TiDB 社区干货传送门

使用DM迁移MySQL数据到TIDB小测试

TiDB 社区干货传送门

TiKV源码略读-Config

TiDB 社区干货传送门

TiDB 社区专栏:让技术人员成为更好的读者/作家

TiDB 社区干货传送门

新版本/特性发布 新版本/特性解读

TiDB4PG 之兼容 Gitlab

TiDB 社区干货传送门

DBA之伤-truncate/drop

TiDB 社区干货传送门

TiDB 在实时分析应用场景下的探索

TiDB 社区干货传送门

DM 分库分表 DDL “悲观协调” 模式介绍

TiDB 社区干货传送门

迁移 TiDB 底层架构

带着问题读 TiDB 源码:Power BI Desktop 以 MySQL 驱动连接 TiDB 报错

TiDB 社区干货传送门

故障排查/诊断 TiDB 源码解读

大量 SET autocommit 导致的 TiDB Server CPU 高案例

TiDB 社区干货传送门

故障排查/诊断

x86和ARM混合部署下的两地三中心方案验证

TiDB 社区干货传送门

实践案例

TiDB 升级到5.1.1 的性能表现

TiDB 社区干货传送门

一栈式 X 规模化 X 多元化:PingCAP 马晓宇谈 TiDB HTAP 演进之路

TiDB 社区干货传送门

Tikv节点磁盘耗尽恢复经验

TiDB 社区干货传送门

分布式数据库TiDB在百融云创的探索与实践

TiDB 社区干货传送门

实践案例

PlacementRules in SQL 初试

TiDB 社区干货传送门

Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB

TiDB 社区干货传送门

TiDB如何修改alter-primary-key参数

TiDB 社区干货传送门

发生即看见,一切可回溯 | TiDB 故障诊断与性能排查探讨

TiDB 社区干货传送门

监控 故障排查/诊断

Ti-Click:通过浏览器快速搭建 TiDB 在线实验室 | Ti-可立刻团队访谈

TiDB 社区干货传送门

TiDB SQL 优化案例几则

TiDB 社区干货传送门

DM 分库分表 DDL “乐观协调”模式介绍

TiDB 社区干货传送门

迁移 TiDB 底层架构

有关 TiDB 升级的二三事——教你如何快乐升级

TiDB 社区干货传送门

版本升级

关于我作为前端报名 TiDB Hackthon 2021 然后被毫无悬念地淘汰这档事

TiDB 社区干货传送门

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