写点什么

自动化的验收测试──是否只是纸上谈兵?

  • 2009-06-08
  • 本文字数:1387 字

    阅读完需:约 5 分钟

编写需求并自动生成验收测试(有时候称作测试驱动需求,故事驱动开发,以及──要看你问的是谁── 行为驱动开发),在这方面已经有了零星的成功案例。然而社区中只有很少数的人这样用过。一些思想领袖公开声称这么做不好,浪费精力。每个迭代开始编写的自动化验收测试真的只是纸上谈兵吗?由于很少有人采用,这种方法是否难以奏效?

首先,让我们解释一下自动化的验收测试是什么意思:它是指在迭代开始时编写的测试,是用可执行形式表示的需求。当它们描述的需求开发完成后,就可以 作为详细的例子说明系统具有什么样的功能──也是对“我完成后,系统看上去是什么样的呢?”这个问题最好的解答。以前最常用的自动化验收测试工具是 FIT 和 FITNesse ,然而今天已经是 cucumber rspec 了。

这种类型的测试还没有流行起来。事实上,最近有一篇讨论,题目就是 FIT 死了吗? 除此之外,在敏捷 2008 大会上 InfoQ 的一个采访中,Brian Marick 就宣称:

InfoQ:听起来有意思极了。我赞同在业务层面的测试,客户能够理解,他们也乐于看到。你还提到了一些例子。我不知道是不是因为用文字描述测试太复杂了,你说的这些例子只是为了简化吗?但是你确实提到了客户的测试,不是吗?能否多介绍一点?

Brian:我注意到一件有趣的事情, 不管在哪个方面它都与单元测试驱动设计不同,比如:你设计了一个测试,通常你对问题已经非常了解。当然单元测试做的还是单元测试的事儿。但是为了使测试自 动化,不需人工干预就把例子运行起来,你需要编写支持代码,通常你不会有任何这样的想法”哈!真高兴写了那些代码,我学到了不少东西“,相反,你会这样想 ”写这些代码真是烦死人了,没学到任何东西“。所以编写那些代码不会有任何收获,除了拥有测试,你不会有任何实际的好处。直到现在,也看不出来验收测试对 深奥复杂的结构有什么影响,就像重构对单元测试那样。所以我的问题是创建测试能否带来价值?编写这些代码还需要投入相当大的成本,把测试自动化能得到与付 出同等的价值吗?因为如果不能从中得到同样的价值,为什么不在一个白板上测试,程序员实现功能,手工检查,甚至向产品负责人手工演示,完成以后,为什么不 擦掉然后忘记它?我们为什么需要把测试保存下来,然后一遍又一遍地运行它们?

然而,社区中许多其他的思想领袖仍然推荐使用自动化的验收测试;仅举几个例子,比如 Robert C. Martin、Joshua Kerievsky 和 James Shore 这样的大牛。

Christ Matts 使用一种有趣的方式来看待这个问题, 即把它作为“信息到达“的问题。比如你在软件开发过程中(不一定是敏捷的)并没有提前编写验收测试。QA 团队运行他们自己的测试场景,发现缺陷后,就反馈 给软件开发人员。缺陷是随机发现的,所以会影响团队的开发速度,因为开发团队必须花费一定的精力来解决这些缺陷。开发过程中,类似这样的信息会随机传递给 开发团队。

现在,我们考虑一下如果QA 部门在开发开始之前就编写测试。我们就可以预测这些信息在迭代开始时就会出现。因此不确定性的因素减少了,速度也就更稳定了(随机的打断更少了),这意味着有了更高的可预测性。

所以,自动化的验收测试只有所谓精英分子(或者交了狗屎运的人)才能玩的转吗?是否某些内部缺陷尚未发现,导致它名不副实?或者它确实有诸多好处,只是比较困难而已,应该鼓励每个软件开发团队去亲自尝试?

查看英文原文 Automated Acceptance Tests - Theoretical or Practical

2009-06-08 20:181670
用户头像

发布了 37 篇内容, 共 10.5 次阅读, 收获喜欢 4 次。

关注

评论

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

快速认识 WebAssembly

devpoint

rust webassembly Wasm 6月月更

fastposter v2.8.3 发布 电商海报生成器

物有本末

Java Python 海报 海报生成

详细视图——基于函数的视图 Django

海拥(haiyong.site)

Python django 6月月更

Java—指令重排序

武师叔

6月月更

游戏源代码开发时需要什么,需要哪些团队成员?

开源直播系统源码

软件开发 游戏开发 直播源码

Spring那点事

飞天

6月月更

快速玩转CI/CD图形化编排

Jianmu

DevOps 前端 CI/CD 自动化运维 图形化编排

【深入理解TcaplusDB技术】单据受理之建表审批

tcaplus

数据库 nosql TcaplusDB 腾讯游戏

7天免费入门数据智能,“2022数据智能夏令营”开启报名!

个推

人工智能 大数据 数据智能

特别干的干货!!《Mycat》搭建分布式数据库中间件看他就够

迷彩

mycat 分布式数据库中间件 6月月更

Node.js实用的内置API(二)

devpoint

node.js utils 6月月更

什么是网络拓扑?网络拓扑有哪些类型?

wljslmz

网络技术 6月月更 网络拓扑

web前端培训 | 面试中Vue的各种原理分享

@零度

Vue 前端开发

【深入理解TcaplusDB技术】单据受理之创建游戏区

tcaplus

数据库 nosql TcaplusDB 腾讯游戏

大数据培训之Flink CEP 的简介

@零度

大数据 flink CEP

K8s的负载均衡与配置管理

Damon

云原生 k8s 6月月更

Vue-15-事件绑定

Python研究所

6月月更

Fabric.js 控制元素层级 👑

德育处主任

前端 canvas Fabric.js 6月月更

电竞迎来“新四化”,数字化产业变革正当时

科技之家

OceanBase Meetup第五期 复杂业务场景下的数据库应用需求及挑战

OceanBase 数据库

斗栱云杜文宝:如何用一款SaaS改变建筑行业?

ToB行业头条

大数据工业界解决方案

Joseph295

一个老开源人的自述-如何干好开源这件事

云智慧AIOps社区

开源 前端 开源项目 数据可视化

【CVPR2022】用于域适应语义分割的域无关先验

华为云开发者联盟

人工智能 华为云 图像域

并发数、并发以及高并发分别是什么意思?

行云管家

高并发 并发 堡垒机 IT运维 并发数

Spring Security:用户和Spring应用之间的安全屏障

华为云开发者联盟

安全 防火墙 spring security 华为云

【深入理解TcaplusDB技术】单据受理之创建游戏区

tcaplus

数据库 nosql TcaplusDB 腾讯游戏

揭开SSL的神秘面纱,了解如何用SSL保护数据

郑州埃文科技

数据安全 SSL证书 IP溯源

安擎人工智能计算中心解决方案助推“城市大脑”建设

科技热闻

【深入理解TcaplusDB技术】单据受理之创建业务指南

tcaplus

数据库 nosql TcaplusDB 腾讯游戏

自动化的验收测试──是否只是纸上谈兵?_敏捷_Amr Elssamadisy_InfoQ精选文章