【FCon上海】与行业领袖共话AI大模型、数字化风控等前沿技术。 了解详情
写点什么

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

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

    阅读完需:约 5 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

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

首先,让我们解释一下自动化的验收测试是什么意思:它是指在迭代开始时编写的测试,是用可执行形式表示的需求。当它们描述的需求开发完成后,就可以 作为详细的例子说明系统具有什么样的功能──也是对“我完成后,系统看上去是什么样的呢?”这个问题最好的解答。以前最常用的自动化验收测试工具是 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:181820
用户头像

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

关注

评论

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

超高速稳定!香港虚拟主机助你网站飞一般的速度!

一只扑棱蛾子

香港虚拟主机

点云标注的算法优化与性能提升

来自四九城儿

基于列存储的开源分布式NoSQL数据库Apache Cassandra入门分享

快乐非自愿限量之名

开源 NoSQL 数据库

CentOS7系统更新yum源教程

百度搜索:蓝易云

MySQL Linux centos 运维 yum

2023全球数字经济大会召开,天翼云携手产业链共建开放共赢云生态

天翼云开发者社区

云计算

点云标注与自动驾驶的安全性

来自四九城儿

模块七:王者荣耀商城异地多活设计

家有两宝

架构训练营

GitHub上整理的一些实用的工具

这我可不懂

GitHub 程序员 提升效率

Maxon Qualcomm QCN9024 WiFi6 Module 4x4 MIMO PCI Express 3.0

wifi6module

Buck电路的原理及器件选型指南

元器件秋姐

电路 元器件 PCB设计 电源 Buck

区块链技术协议有哪些?

TiAmo

区块链 技术协议

技术分享 | 如何利用GPU云服务器加速AIGC训练

阿里云弹性计算

云计算 阿里云 大模型 AIGC

对线面试官-Redis 八 | 基于哨兵HA的原理

派大星

Java 面试题

私有化部署这件事儿

高端章鱼哥

低代码 私有化部署 JNPF

HDC精彩回顾|7月8日OpenTiny重磅发布

OpenTiny社区

开源 前端 UI组件库

基于 EMQX 和 Neuron 的工业物联网 MQTT Sparkplug 解决方案

EMQ映云科技

解决方案 工业物联网 sparkplug

RTC+AI|“即智”数智人创新内容生产体验,为企业降本增效再提速

ZEGO即构

数字人 虚拟直播 AI人工智能 数字人短视频 直播间

汽车ECU软件开发之应用层软件与底层软件

DevOps和数字孪生

汽车ECU 仿真建模

点云标注的标准化与数据共享

来自四九城儿

Cilium 流量治理功能与部署实践

谐云

ZipZapAI大模型与勇者斗恶龙:探索AVG游戏的无限可能

Ricky

AI Chat ChatGPT

低代码的出现,程序员要拒绝还是拥抱

互联网工科生

软件开发 低代码 JNPF

CDN与前端技术

天翼云开发者社区

前端 CDN

华为云云原生数据库,让企业离应用更进一步

新消费日报

Python源码剖析:深度探索Cpython对象-达观数据

NLP资深玩家

Python CPython 达观数据

一文详解新一代高效前端构建工具VITE-达观数据

NLP资深玩家

vite 前端构建 es modules

不要爱上解决方案,而是爱上问题!什么是设计思维

汽车之家客户端前端团队

前端 设计思维 学会思考 ChatGPT

语音标注平台:推动语音技术发展的关键支撑

来自四九城儿

瓴羊QuickBI为什么被称为国内口碑最好的BI工具

夜雨微澜

玩转云端| 天翼云边缘安全加速平台AccessOne实用窍门之多款产品管理难?一站式平台管理全hold住!

天翼云开发者社区

云计算 云平台 边缘安全

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