生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

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

关注

评论

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

2021春招最新分享:Java一线大厂高岗面试题解析合集(六大专题

爱好编程进阶

Java 面试 后端开发

DDD领域驱动设计实战-分层架构及代码目录结构

爱好编程进阶

Java 面试 后端开发

架构训练营模块八

刘帅

2021字节面经纯分享:面试真题+Java成长笔记

爱好编程进阶

Java 面试 后端开发

@Autowired注解 -【Spring底层原理

爱好编程进阶

Java 面试 后端开发

git(7)自定义 Git

爱好编程进阶

Java 面试 后端开发

Flink处理函数实战之三:KeyedProcessFunction类

爱好编程进阶

Java 面试 后端开发

JAVA 序列化、反序列化以及serialVersionUID

爱好编程进阶

Java 面试 后端开发

【国产化替代专题】星环科技春季新品发布周

星环科技

7步搞懂分布式全内容,我不信面试官还敢“怼

爱好编程进阶

Java 面试 后端开发

Elasticsearch Query DSL概述与查询、过滤上下文

爱好编程进阶

Java 面试 后端开发

2020年Mybatis常见面试题总结(附答案)

爱好编程进阶

Java 面试 后端开发

20年最新金九银十面试必备,教你一份文档吊打面试官,拿到offer

爱好编程进阶

Java 面试 后端开发

Java中的复用类

爱好编程进阶

Java 面试 后端开发

week6作业

Asha

JavaWeb快速入门--Servlet(2)

爱好编程进阶

Java 面试 后端开发

Alibaba2021年船新Java架构师成长笔记开源

爱好编程进阶

Java 面试 后端开发

JAVA 短链码生成工具类

爱好编程进阶

Java 面试 后端开发

Java7日期时间API

爱好编程进阶

Java 面试 后端开发

【模块八】设计消息队列存储消息数据的MySQL 表格

yhjhero

#架构训练营

Java中高级核心知识全面解析——Linux基本命令

爱好编程进阶

Java 面试 后端开发

市场进展不断,STI 包括ZB等一系列上线预示着什么?

西柚子

2020年最具影响力的4种编程语言 平均薪资20K+

爱好编程进阶

Java 面试 后端开发

8 应用服务器性能优化

爱好编程进阶

Java 面试 后端开发

DNS解析时发现域名和IP不一致,访问了该域名会如何(大厂真题

爱好编程进阶

Java 面试 后端开发

JavaWeb之Cookie和Session技术(四)

爱好编程进阶

Java 面试 后端开发

Hibernate和MyBatis的区别比较

爱好编程进阶

Java 面试 后端开发

ActiveMQ详细入门教程系列(一)

爱好编程进阶

Java 面试 后端开发

Canal 如何实现数据库库事务的一致性

爱好编程进阶

Java 面试 后端开发

ELK + Filebeat + Kafka 分布式日志管理平台搭建

爱好编程进阶

Java 面试 后端开发

HashMap + 软引用进行缓存

爱好编程进阶

Java 面试 后端开发

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