写点什么

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

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

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

关注

评论

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

dcm4che 依赖下载异常

JefferLiu

企业如何轻松上云?华为云弹性云服务器ECS给出答案

IT科技苏辞

架构实战营 模块四作业

白杨

数据上云难?华为云对象存储服务OBS给企业最便捷体验

路过的憨憨

华为云弹性云服务器 ECS,如何引领行业高速发展?

路过的憨憨

用大数据服务医疗行业,华为云大数据BI,为医院智能决策提供保障

秃头也爱科技

华为云数据库,安全、专业,值得信赖

与时俱进的时代

CSDN 2022年度榜单揭晓,华为端云协同智能流程机器人斩获大奖

极客天地

2023-01-12:一个n*n的二维数组中,只有0和1两种值, 当你决定在某个位置操作一次, 那么该位置的行和列整体都会变成1,不管之前是什么状态。 返回让所有值全变成1,最少的操作次数。 1 <

福大大架构师每日一题

算法 rust Solidity 福大大

看不见的控制流 — Rust 异步取消问题的几点思考

Greptime 格睿科技

数据库 rust 异步编程 tokio

读 2022 年 JavaScript 趋势报告

devpoint

typescript vite SOLID tauri

华为云云原生数据库,激发数据活力

与时俱进的时代

安全、高效、便捷,华为云CDN助力企业体验升级!

i生活i科技

CDN

华为云桌面Workspace荣获CSDN年度创新产品与解决方案大奖

极客天地

Python数据可视化:数据分布图表可视化

不脱发的程序猿

Python 数据可视化 大数据分析

聊一聊华为云弹性公网IP的那些事儿

路过的憨憨

数据即价值,华为云大数据BI解决方案助力企业实现数据高效转化

秃头也爱科技

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)

码界西柚

分布式事务 seata Alibaba SpringCloud Alibaba Seata框架

华为云CDN全站加速助力网站性能全面优化

i生活i科技

CDN

华为云OBS对象存储,企业存储的好帮手

科技说

华为云CDN为企业下载加速,极大提升客户体验

i生活i科技

CDN

瑞萨E1/E20烧录工具自检方法

不脱发的程序猿

嵌入式 汽车电子 MCU 瑞萨 RH850

Java在Mac里启动一个新的Terminal

IT蜗壳-Tango

IT蜗壳教学

华为云ECS,专为您打造安全、灵活、高效的应用环境

与时俱进的时代

华为云OBS助力企业解决数据存储难题

科技说

华为云为瑞星量身打造下载加速方案,助力瑞星完成产品升级

秃头也爱科技

本地数据怎么备份上云?华为云对象存储服务OBS帮你实现

科技说

告别“自建房”,华为云ECS为企业提供更优选

科技说

Jira + GitLab 实践 DevOps

跟YY哥学Jira

DevOps gitlab jenkins Jira

Atlassian FaaS 云开发平台 Forge 解析

跟YY哥学Jira

Jira Atlassian 云版 app development Forge

解决企业数据存储难题:华为云OBS,企业“上云”的不二之选

路过的憨憨

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