[ZZ]好的测试应该具备哪些特质?
作者 Mark Levison译者 郑柯 发布于 2008年10月4日 上午6时30分
- 社区
- Agile
- 主题
- 单元测试,
- 质量交付
- 标签
- 最佳实践,
- 测试驱动开发
什么样的测试算是好测试?我们又该怎么知道如何编写好测试?
Kent Beck断定,好的测试应该具备下列条件:
- 互相隔离的(不受其他测试的表现形式、是否存在、执行结果的影响)
- 自动化的
- 编写快
- 运行快
- 独一无二(为开发人员提供自信,而不会由其他测试提供信息,与其他测试不相关)
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?
[ZZ]好的测试应该具备哪些特质?相关推荐
- 带项目的一些体会以及合格的 Leader 应该具备什么特质?(转)
许多项目有这样几种 Leader: 1. 泛泛而谈型 很多时候 Leader 仅仅给出一个大方向,提一些高屋建瓴的理论方向,事情还是交由普通开发人员去做.完了可能又会回头埋怨开发人员的水平不行,没有达 ...
- 一套好用的MES系统,到底要具备哪些特质?
新的发展机会也面临新的挑战,现在的社会和企业环境正在面临着全面网络化,信息化.智能化,产业链协同的新型模式.而企业信息化建设被不可逆转的历史推向了市场大潮的浪尖. 越来越多企业选择引入MES软件来加强 ...
- 一个熟练程序员所具备的特质-1
前几天看了一篇文章,现在总结一下. 你知道"有能力"和"熟练"的区别吗? 这听起来像一个具有欺骗性的问题,因为两个单词看上去似乎说的是一件事情,但是两者之间的微 ...
- 优秀的量化研究员具备哪些特质?
优秀的量化研究员具备哪些特质? Hard Skills – The Essentials The work of a quantitative researcher is mission critic ...
- 一个超越时代的企业,应该具备什么特质?
提起国内外优秀的企业,我们能够想出一连串的名字,从谷歌.特斯拉到腾讯.字节跳动等等.如果在这些优秀的企业中,再选择一个能够超越时代的企业,恐怕当属苹果更有资格.在很多人看来,已经失去乔布斯的苹果现在已 ...
- 测试需要具备的能力以及探索式测试
测试需要具备的素质: 1.专业技能. 扎实的专业知识就像灯塔一样,时刻为你指明方向. 2.业务分析能力. 业务一定要分析透彻,我们才能写出好的方案和测试用例等,才能更好更快的发现问题,分析问题以及解决 ...
- 移动端测试必须具备的技能
第一:熟悉H5.Android和IOS平台的基础特性,各种应用测试特征(熟练掌握Android,IOS以及H5的测试要领) 第二:熟练使用各种性能测试工具进行问题的分析和定位 APP性能 网络性能 S ...
- 测试工程师具备的基本素质
又和大家相遇在这里,又是很久没有更新BLOG,告诉大家一个可喜的消息,watir 2.0.0已经发布了!!最近我一直在研究InternetExplorer.Application,相关文章也随即会跟上 ...
- 测试工程师具备开发能力的重要性
测试现状 为什么对测试工程师的要求在上升? 分析 技术要求 工具 测试的开发能力对测试质量的影响 分析 测试发展方向 测试现状 当前测试工程师做的主要工作是手动测试和编写测试用例:即便在一些公司,测试 ...
最新文章
- Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'的解决
- matlab gui学习手记_MATLAB论坛不可错过的30例GUI源代码
- [JS][前端]修改文件input为button样式
- idc机房运维巡检_智和信通赋能国产信创 建设IT智能监控运维体系 - 蔚颖willing...
- android寻找手机,寻找那些“干净”的Android手机
- python能开发android吗_python可以开发安卓吗
- oracle数据库inactive状态session过多的原因定位
- 扫描服务器用户,服务器安全工具(自动扫描后门路径)
- 打开计算机管理提示找不到文件,Win8系统打开计算机管理提示找不到文件怎么解决...
- java collection 遍历_Java for循环对集合的遍历
- python工资一般多少p-Python P值
- S3TC IAP15F2K61S2点亮一个发光二极管keil和stc-isp软件操作
- 实测!让M1芯片版mac也能写入NTFS格式磁盘,完整教程附上!
- Linux成长之路-基础篇(2)
- java jquery时间问候语,js实现实时问候,不同时间显示不同问候语
- 基于JavaWeb的小区车辆信息管理系统
- cv2.imshow无法正常显示图片,而是一闪而过解决办法
- Base64 在线编码解码
- 【CVPR 2022】Deblur-NeRF: Neural Radiance Fields from Blurry Images
- Java 生成随机中文、英文姓名(下)
热门文章
- Spring Boot 动态数据源(多数据源自己主动切换)
- hihocoder 1490 Tree Restoration
- Linux服务器上挂载window本地iso镜像文件的方法。
- Office 365系列(7)------ Exchange 2013与Office 365 Hybrid混合部署Step by Step参考
- 启动EBS的时候,弹出Java安全警告:“该应用程序要求具有Java的早期版本。是否要继续?”...
- BCH接下来如何走?且看这场大会传达了什么思想
- 仅支持BCH的众筹平台Coinfundr或能革新众筹业
- 细述vim编码格式配置
- Android人脸识别App(带web上传注册信息)
- [译] 关于 Angular 动态组件你需要知道的