写点什么

developerWorks:敏捷测试系列文章

  • 2009-10-17
  • 本文字数:1924 字

    阅读完需:约 6 分钟

最近,IBM 中国软件开发中心高级工程师谢明志在 developerWorks 上发表了《敏捷测试的最佳实践》系列文章的第四篇——《自动化测试的 ROI》

在这一系列的文章中,谢明志以 IBM 测试工程师的身份和视角,总结并分享了 IBM 在采纳推广敏捷开发策略过程中,尤其自己亲身参与的产品开发测试过程中对敏捷开发和测试的思考。

我们在敏捷项目开发的过程中使用了定制的测试流程,我们有两部分测试,即 Confirmative 和 Investigative 两部分。我们将这两部分测试都放在当前迭代的计划内完成。原因是,敏捷测试团队针对当前迭代的任务计划本应服务于当前的产品,过去的迭代产物,或者因为需求变更不再适用,又或者因为未解决的质量缺陷使得实际测试效果不佳。

以笔者所在团队为例,历时 1 年,经历 12 个迭代后,我们逐渐形成了一套可以遵循测试活动时间表。这张表包含了敏捷测试团队的各项活动安排和必要的前提与进入条件。在这张表中,测试团队较早的涉 入,较早的开展测试,以及各项相关工作,并与设计和开发人员紧密的合作,它确保了测试团队乃至整个敏捷团队的工作的按期完成,是值得向大家推荐一种最佳实 践。

“如何看待敏捷测试和对测试人员做绩效考评呢?”——敏捷团队中无论开发还是测试都不是个人的开发和测试,这是团队的工作。一名好的测试人员除了能 够做好本职测试工作外,表现为愿意并能够做超出原有范围的工作,能够并愿意帮助团队其他成员解决其他复杂问题,实现团队的共同目标。测试人员能够主动发现 并弥补团队中的重要缺失的环节,帮助团队其他成员完成工作任务。

系列文章的第四篇是对自动化测试的思考:

无论在敏捷开发还是传统开发论坛中我们听到更多的问题仍集中于如何自动化测试,采用什么行之有效的工具和方法才是最好的,似乎重点仍然是工具和 技术。因为很少人认真考虑投入自动化开发占整个项目测试投入的比例的科学性,而更少有人曾经清晰的分析何时,花费多少人力的自动化开发与维护才是颇为合理 的规划,而仍然用经验和教训在维持似是而非的自动化测试体系。

经过在多个自动化测试的项目环境中调研,我们认为成功的自动化测试很大程度决定于合理的投入规划。相反不计成本的规划,或者疏于成本规划的自动化测 试只能带来负担而不是效率的提高,尽管有些人为了满足对其自动化技术的一味崇尚而调整了各种报告结果,并且已经满足了某些人对自动化投入的愚昧狂热后,他 们仍然欢欣于一个价值公式,一些精确的指导来调整或者提高他们自动化测试收益。那么如何做好自动化测试的成本规划呢?

作者试图用 ROI 公式来计算自动化测试的投资回报率,并利用假设和前提来推导出结论,这样的结论包括:

如果自动化后的测试脚本在项目中只运行一遍,那么自动化脚本本身开发的成本不应大于手动执行一遍对应测试用例的执行时间。即完全没必要自动化。

d%(平均出错率,也就是说一个产品的代码中如果有 d% 的出错率,对产品质量缺陷的修复仍然将带来 d% 的新质量缺陷)的值越大,质量缺陷越多,我们依赖于手动测试的可靠性更大。

回归测试产生的质量缺陷是产品出错率的等比数列之和。

当考虑自动化测试成本收益时,我们应该先考虑那些可能迭代次数更多,运行次数更多的测试用例进行自动化脚本开发。而对于产品的质量缺陷,当质量缺陷越少,质量越好的产品,自动化开发成本收益也会比较大。反之,则致使自动化开发并不合算。

而针对在 Scrum 迭代开发过程中的自动化测试成本分析,作者提出:

应该说迭代次数(n),测试覆盖次数越多,自动化测试带来的好处就应该越多,而产品开发中出错率(d%)越小,自动化测试效果越好。但是,自动 化脚本也许因为迭代目标和对象的差异性需要大幅修改。而重新构造和改变测试脚本带来的代价和成本也非常大。特别在敏捷测试中,产品变化之大给自动化测试带 来难度也陡然增加。因此,敏捷测试中,我们要以更精细的单位来计算自动化测试的投入产出比。即,决策敏捷自动化测试的投入产出应该基于每个迭代自身的收 益,而不是整个产品开发周期。

结论是,一般产品的测试错误率高于 20%,也就说为了达到质量好到足够能够退出,回归测试至少需要 3 次,在这种情况下我们其允许投入到自动化开发的成本为不多于 3 人天。而当产品质量非常好,错误率低于 20%,因为不需要经过多次测试以达到退出标准,我们也就可以省去自动化测试的步骤了。最后关于本文的经验之谈,当我们从事着敏捷测试活动时,在四周为周 期的迭代测试中,测试人员在第二周的开始进入自动化脚本开发。开发活动不易超过 3 天。

总之,

不要指望自动化投入越多对产品和质量越好,也不要指望自动化测试可以取代手动测试。但是,自动化测试是需要测试人员合理、科学的使用来提高测试成效的途径之一。ROI 的自动化规划将是非常适合敏捷测试、传统测试的最佳原则。

2009-10-17 03:592054
用户头像

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

关注

评论

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

OpenHarmony应用开发之ETS开发方式中的Image组件

坚果

HarmonyOS Open Harmony OpenHarmony 3.1 Release 7月月更 harmony

项目协作的进度如何推进| 社区征文

卢卡多多

初夏征文

Python 入门指南之开胃菜

海拥(haiyong.site)

7月月更

今晚要修稿子準備發佈。但是,仍卡在這裡,也許你需要的是一個段子。

叶小鍵

Vuex(二)

小恺

7月月更

NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线

小哈区块

Python|函数和模块

AXYZdong

7月月更

「Docker 那些事儿」还不会安装Docker?建议看这篇就够了

Albert Edison

7月月更

x86汇编语言-从实模式到保护模式 笔记

贾献华

7月月更

设计电商秒杀系统

大眼喵

「架构实战营」

你开发数据API最快多长时间?我1分钟就足够了

雨果

API API开发

rxjs Observable filter Operator 的实现原理介绍

汪子熙

typescript 响应式编程 angular RXJS 7月月更

疫情常态化大背景下,关于远程办公的思考|社区征文

如浴春风

初夏征文

远程办公之如何推进跨部门项目协作 | 社区征文

Tech技术攻关

远程办公 7月日更 项目协调 初夏征文 工作协调

封装一个koa分布式锁中间件来解决幂等或重复请求的问题

程序知音

编程 程序员 后端

TOGAF认证自学宝典V2.0

涛哥 数字产品和业务架构

企业架构 TOGAF

ORACLE进阶(一) 通过EXPDP IMPDP命令实现导dmp

No Silver Bullet

oracle DMP 7月月更

远程办公之大家一同实现合作编辑资料和开发文档 | 社区征文

Tech技术攻关

远程办公 协同办公 7月日更 初夏征文

Hive的UDF

怀瑾握瑜的嘉与嘉

hive 7月月更

聊聊Flink框架中的状态管理机制

百思不得小赵

大数据 flink 状态 7月月更

深入理解 SQL 中的 Grouping Sets 语句

元闰子

sql spark spark SQL

『快速入门electron』之实现窗口拖拽

是乃德也是Ned

Electron electron实战 7月月更

CSRF

急需上岸的小谢

7月月更

Jenkins抛弃Java 8拥抱Java 11

FunTester

TCP拥塞控制详解 | 3. 设计空间

俞凡

算法 网络 TCP拥塞控制

最全SQL与NoSQL优缺点对比

雨果

sql NoSQL 数据库

Spring Boot应用在kubernetes的sidecar设计与实战

程序员欣宸

Java Kubernetes Sidecar 7月月更

NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线

西柚子

架构实战营 - 第 6 期 毕业总结

乐邦

「架构实战营」

Flutter 退出当前操作二次确认怎么做才更优雅?

岛上码农

flutter ios 安卓 移动端开发 7月月更

cgroup简介

总想做点什么

Cgroups

developerWorks:敏捷测试系列文章_研发效能_张凯峰_InfoQ精选文章