《xUnit Test Patterns》学习笔记2 - Goal Of Test Automation
或许有人觉得单元测试可有可无,因为觉得需要付出太多的精力,而客户并不需要它。这就涉及到投资回报率的问题,其实所付出的用于测试的投资,往往会收获到更多回报。它让我们减少了Bug的数量,减少了调试代码寻找Bug的时间。看下图,有效的自动化测试投资下,测试和开发付出的努力的时间图:
初期,随着测试的介入,开发付出的投入逐渐减少。后期,随着测试案例的完善和自动化,测试和开发所需要付出的投入都减少到一个很低的水平。阴影部分是节省的开发投入。
同时,如果自动化测试做的不好,在后期,将可能加大测试和开发的负担:
自动化测试的目标
- Tests should help us improve quality.
- Tests should help us understand the SUT.
- Tests should reduce (and not introduce) risk.
- Tests should be easy to run.
- Tests should be easy to write and maintain.
- Tests should require minimal maintenance as the system evolves around them.
Tests should help us improve quality
- Tests as Specification 测试案例可以验证产品的行为,验证是否“building the right software”
- Bug Repellent 自动化测试的主要目的不是发现Bug,而是预防或防止Bug的出现。
- Defect Localization 顶层的customer tests只会告诉你案例失败了,unit tests会告诉你为什么失败了,能定位到具体的问题。如果customer tests失败了而所有的unit tests却通过的话,说明单元测试案例缺失了。(Missing Unit Test)
Tests should help us understand the SUT
测试案例是非常好的文档,它告诉了你SUT做了些什么。同时,它还让你可以直接调试测试案例,单步跟踪,去了解整个系统是如何运作的。
Tests should reduce (and not introduce) risk
- Tests as Safety Net 测试案例应该成为修改代码安全的保障,让我们在重构旧代码时能够大刀阔斧,而不必担心会破坏什么。
- Do No Harm 测试案例不能对产品造成影响,一个重要的原则是,不要修改SUT。
Tests should be easy to run
- Fully Automated Test 完全自动化
- Self-Checking Test 能够自我检查,说白了就是不需要人工去检查案例执行的结果对不对
- Repeatable Test 需要具备可重复性。鼓励开发人员在每一次按下保存按钮时都执行一次测试案例(我没事就喜欢Ctrl+S)。案例需要具备可重复性,必须具备自我清理能力(self-cleaning),通常,是在Test Fixture的TearDown中进行环境的清理。
Tests should be easy to write and maintain
- Simple Tests 一个首要的原则是,让测试案例尽量的简单,使得其更容易维护。一次只测一种条件(Verify One Condition per Test)
- Expressive Tests 测试案例要达到表达清晰的目的,比如,可以使用一些Creation Mehods和Custom Assertion。有点像BDD。
- Separation of Concerns 测试案例要尽量测试单一,独立的功能,不要依赖过多。往往需要前期就介入参与产品的可测性设计(design for testability)。
Tests should require minimal maintenance as the system evolves around them
测试案例需要最小化维护的工作,因此,我们需要编写健壮的测试案例(Robust Test)。
---------------
这章讲的是测试的目标,保持案例简单,稳定,容易维护的声音似乎总是在不停的重复着,是不是有点烦了?也许作者就是希望通过这种不停的唠叨,让我们真正记住、接受,并最终体会和感悟到这些东西给我们带来的好处吧。
转载于:https://www.cnblogs.com/coderzh/archive/2010/01/18/xUnit-Test-Patterns-2.html
《xUnit Test Patterns》学习笔记2 - Goal Of Test Automation相关推荐
- 《xUnit Test Patterns》学习笔记3 - Philosophy of Test Automation
这一章主要讲自动化测试的原则.前面的章节介绍了很多测试的思想,而思想的东西难免有点虚,这一章就是告诉你,遇到了具体的什么问题时,应该怎么办.作者咨询了很多的开发人员和测试人员,同时也和Martin F ...
- 《xUnit Test Patterns》学习笔记4 - Principles of Test Automation
自动化测试过程中,有一些基本的原则,就如同宣言(Manifesto).由于大部分的原则在前面其实都提到的,因此,有的不做太多说明了. 原则:Write the Tests First 原则:Desig ...
- 大卫的Design Patterns学习笔记19:Observer
一.概述 Observer(观察者)模式又被称作发布-订阅(Publish -Subscribe)模式,用于定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自 ...
- Structural patterns (proxy、bridge、decorator)学习笔记(一)
Structural patterns (proxy.bridge.decorator)学习笔记(一) 一.proxy pattern是实际应用中,一般都用于比较复杂的一些对象当中,尤其是创建对象需要 ...
- 运动学习与控制-学习笔记(三)——运动控制理论
运动学习与控制-学习笔记(三)--运动控制理论 一.理解控制理论以及两个重要概念 1.Motor Control Theory 2.两个重要概念:Coordination,Degree of Free ...
- 运动控制与学习 学习笔记(四)——复杂技能的表现特征、本体感觉及视觉
运动控制与学习 学习笔记(四)--复杂技能的表现特征.本体感觉及视觉 1.理解Speed Accuracy Trade-off 现象及其与Fitts'Law的关系 1.1Speed Accuracy ...
- CSS3秘笈第三版涵盖HTML5学习笔记6~8章
第二部分----CSS实用技术 第6章,文本格式化 指定备用字体: font-family:Arial,Helvetica,sans-serif; 当访问者没有安装第一种字体时,浏览器会在列表中继续往 ...
- maven学习笔记之IDEA+Maven+Jetty运行一个简单的web项目
maven学习笔记 一.什么是maven Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Life ...
- AI学习笔记--人机对话的四种形态
AI学习笔记--人机对话的四种形态 ><div class="show-content-free"><p>最近在筹备转行 AI PM 由于之前的产品线 ...
最新文章
- 筱玛爱游戏——线性基
- C++成员变量和成员函数分开存储
- php试卷分析,试卷分析失分原因和改进措施
- 2.6 MYSQL的输出格式
- java的handleback类,CallbackHandler
- java中Map,List与Set的区别
- 前端页面,引入PingFang SC(苹方简)字体
- 模糊综合评价的 matlab,模糊综合评价法代码matlab
- 基于数字孪生高校可视化的综合运营管理平台
- java监控网卡流量_流量监控脚本监控网卡
- (七)练习:美萍酒店管理系统中系统设置的房间管理选项卡部分测试
- 标注的尺寸避让lisp_AutoCAD中尺寸公差的自动标注 一短小AutoLISP程序轻松实现.doc...
- asa 防火墙拦截了https_思科ASA防火墙下抓包方法
- 用python简单的判断闰年,输出当前月份是多少天
- word或excel图片没有另存为怎么办
- win10网络连接的错误问题的解决方案
- 【Qt】基于Qt的CAN分析仪二次开发
- swapidc的php语言,SWAPIDC目录说明及文件说明及某些常量内容
- 茶餐厅销售管理系统的设计与实现
- java课程设计简单计算器_JAVA课程设计--简易计算器(201521123022 黄俊麟)