QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

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

关注

评论

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

week6 学习总结 Nosql

Z冰红茶

探秘 Spring 的 PropertyEditor

CoderLi

Java spring 后台

架构师训练营」第 6 周作业

edd

极客大学架构师训练营

猿灯塔:spring Boot Starter开发及源码刨析(六)

猿灯塔

CAP 原理及Doris 临时失效的处理过程

Acker飏

极客大学架构师训练营 CAP

学会使用Vue JSX,一车老干妈都是你的

前端有的玩

Java Vue 大前端 技巧 React

架构师训练营第六周作业

sunnywhy

架构师训练营第6周作业

饶军

CAP

Kiroro

总结

Kiroro

最右JS2Flutter框架——渲染机制(二)

刘剑

flutter 大前端 跨平台 探索与实践

NOSQL - 第六周总结

孙志平

GaussDB for DWS:内存自适应控制技术总结

华为云开发者联盟

大数据 数据湖 内存管理 sql 华为云

「1.4万字」玩转前端 Video 播放器 | 多图预警

阿宝哥

大前端 流媒体 Video播放器 HLS

CAP原则

熊威

一个成都程序猿写于离开北京一周年与26岁生日的这一天

why技术

生活 程序人生 北漂 成都

架构师训练营第六周总结

sunnywhy

图解:有向环、拓扑排序与Kosaraju算法

淡蓝色

Java 数据结构 算法

Apache Flink 是什么?

Apache Flink

flink

程序员的眼界真的不要,也不能只局限于技术

非著名程序员

极客时间 程序员 提升认知

蟒周刊-429-Python 3.8.4 可用ed

ZoomQuiet大妈

Python 大妈 蟒周刊

学习总结 - 第 6 周

饶军

架构师训练营第六周作业

王铭铭

天猫小店、京东小店的问题分析

石云升

价值网络 新零售 天猫小店

架构师训练营第六周

大丁💸💵💴💶🚀🐟

CAP 原理

Z冰红茶

Doris 临时失效 UML 时序图(训练营第六周)

看山是山

Doris

MySQL 高可用和分布式数据库(训练营第六课)

看山是山

zookeeper CAP 主从复制 主主复制 MySQL 高可用

static关键字真能提高Bean的优先级吗?答:真能

YourBatman

spring springboot SpringCloud 极客大学架构师训练营 Spring Bean

我学会了用Python预测股票价格

博文视点Broadview

Python 读书笔记 算法 数据分析

NOSQL - 第六周作业

孙志平

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