BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Amr Elssamadisy 关注 0 他的粉丝 ,译者 张晓庆 关注 0 他的粉丝 发布于 2009年6月9日. 估计阅读时间: 4 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

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

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

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

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

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

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

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

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

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

在开发开始之前就编写验收测试 by Yao Scott

验收测试的scope应该有QA来主导,QA在开发开始之前根据测试用例来编写验收测试,可以减少show case时候的不断重复操作,同时使缺陷提前被开发人员发现,减少因为缺陷而产生的turnaround时间,以提高效率,降低风险。自动化的验收测试可以显著减少regression测试的时间和提高其质量。

Re: 在开发开始之前就编写验收测试 by 陈 国栋

支持自动作的验收测试.

Re: 在开发开始之前就编写验收测试 by dl z

我们的测试人员,只会 手点。估计不行吧。

Re: 在开发开始之前就编写验收测试 by 张 晓庆

我们用的cucumber,BA写story时就注意协调格式。我们开发完story再写验收测试,与story里面的AC基本上一一对应,感觉:1.比较花时间; 2.没有成就感; 另外QA写起来比较困难,只能dev写

Re: 在开发开始之前就编写验收测试 by yan lix

事实上,在开发过程中Team内或多或少都有一些Dev编写出的功能与Requirement不相符。QA的及早介入可以避免这种情况的发生,而验收测试是一种有效手段。验收测试可以在开始迭代时对需求进行约定,从而避免或提前暴露与需求不符的功能。这种预防性工作可以节省Dev很多修复缺陷的时间与精力。

---"自动化的验收测试只有所谓精英分子(或者交了狗屎运的人)才能玩的转吗?"
自动验收测试对QA Dev 以及Team的协作能力还是有具体要求的。
一个合格的QA能力起码不应该低于一个一般的Dev。
如过QA真的只会用手点,进行自动验收测试无疑将困难重重。

对大部分项目而言,开发前编写自动化测试脚本不现实 by 王 辰阳

国内公司的大部分项目测试应该还是系统测试,用的自动化工具无非都是LoadRunner、QTP等,当东西还没有做出来时,录制、编写脚本基本不可能。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

6 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT