如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

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

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

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

关注

评论

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

iOS应用如何签名?使用xcode签名的办法和工具 附xcode14下载安装包

南屿

Xcode Mac版 应用签名 Xcode签名

解读 | Mint Blockchain 为何选择 OP Stack 作为 L2 技术方案?

NFT Research

blockchain NFT\ Layer 2

让数据同步纵享丝滑,ETLCloud安装指南

谷云科技RestCloud

ETL

引领功能型对话大模型的部署实践革新

百度开发者中心

人工智能 nlp ChatGPT

云组态是什么?云组态软件特点及应用

2D3D前端可视化开发

物联网 可视化 组态软件 工业自动化 云组态

软件测试/测试开发丨从原理到实战,四天带你轻松进阶Python

测试人

软件测试

Meta推出大模型开源项目Llama 2

百度开发者中心

人工智能 大模型 LLM

为何 DevOps 会给开发人员带来压力和倦怠?

不在线第一只蜗牛

架构 DevOps 开发

数字孪生开发:基础知识、类型、优势和成本

3D建模设计

3D数字孪生场景编辑器 3D场布工具 3D场景搭建

智能工厂:为制造业的数字化转型奠定基础

3D建模设计

3D场景建模 3D数字孪生场景编辑器 3D场布工具

什么是制造业中的数字孪生?

3D建模设计

3D场景应用 3D场景建模 3D数字孪生场景编辑器 3D场布工具

Beyond Compare4 for Mac怎么使用?Beyond Compare功能特点详解

南屿

Mac软件 Beyond Compare 4 注册版 Beyond Compare注册码 文件夹比较工具

【第七在线】时尚鞋服企业商品运营如何实现智能化?

第七在线

简单两步,轻松卸载AlDente Pro,来围观~~

南屿

AlDente Pro破解版 AlDente Pro mac mac电池保护 AlDente Pro卸载 苹果电池助手

使用 Parallels Desktop 彻底改变您的开发和测试工作流程

南屿

Mac虚拟机 Parallels Desktop 18破解 Parallels Desktop 19

SD-WAN组网方式详解

Ogcloud

网络 SD-WAN 组网 组网网络

macOS 14 Sonoma(最新MacOS系统) pkg完整安装包 14.2正式版

南屿

苹果系统下载 macOS 14 Sonoma

软件开发

Geek_8da502

SVN客户端 smartsvn mac破解版 附许可文件 兼容M/intel

南屿

svn Mac软件 SmartSVN mac破解版 SmartSVN下载

在智能制造中使用数字孪生的优势

3D建模设计

3D数字孪生 3D数字孪生场景编辑器 3D场布工具 3D场景搭建

详述 IntelliJ IDEA 遇到 java -source 1.3 中不支持某某操作的解决方法

南屿

IntelliJ IDEA IntelliJ IDEA 2023最新 IntelliJ IDEA密钥

微店商品详情数据接口(micro.item_get)丨微店API接口

tbapi

微店API接口 微店商品详情API接口 微店商品数据接口

通过智能钱包监控降低加密交易费用

Footprint Analytics

区块链 加密货币

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