文章: QA部门将会消亡

标签: 文章 qa 部门 | 发表时间:2012-11-05 21:52 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

工业革命始于250年前,在工厂中、农田里、矿井上,机器开始代替人类进行生产劳动。这在极大的促进了经济增长的同时,也深深的伤害了那些技能一般、无法找到新工作或者没有足够知识去转行的人,这与目前QA所处的境地有着惊人的相似。上世纪九十年代,由于互联网泡沫的出现,对软件开发的需求急速膨胀,这就需要大量QA来进行测试,以保证软件能够顺利发布。因此,像Mercury Interactive这样的测试公司便如雨后春笋般出现。然而,当互联网泡沫破裂时,公司纷纷消减预算,敏捷开发变得更加普及,自动化测试开始接手(QA的手工测试)。就像工业革命时手工劳动者被机器所淘汰一样,以手工测试为生的QA也面临同样的困境。很多QA人员从质量保证转移到了需要编程技能的岗位上去,独立的QA团队消失,QA融合到开发团队中产生了跨职能团队。柏林墙倒了。

让我们回过头来,看看以前我们是怎么开发软件的。自五十年代开始,瀑布模型被大多数软件开发团队所采用。开发人员首先对整个系统进行预先设计,然后集中编写代码,再把写好的软件交给QA进行测试,最后修复QA找到的缺陷。当进度压力总是伴随着开发人员,使得开发人员永远无法按时交付时,开发人员对QA的依赖也越来越强。恶性循环由此产生,雇佣的QA越多,开发人员就越多的依赖QA,同时也越少对他们自己的代码进行测试,由此又需要雇佣更多的QA……最后开发人员干脆就不测试自己的代码了。

这种方式对于开发人员和测试人员都是低效的,软件交付被拖延,最终产品无法及时交付到客户手中。

在互联网泡沫破裂的同时,2001年2月敏捷宣言发布了,一种新的开发思想浮出水面。敏捷开发方法将开发人员带入了崭新的世界,适应变化和快速交付可工作的软件成为开发团队的关注点。敏捷还使得整个团队都参与到开发的各项工作中,特别是对开发人员测试的重视胜过QA的手工测试。随着敏捷更加普及,效率持续提高,对QA的需求变得更少,QA已经有一只脚踏出了(软件行业)这扇们。

QA越多,问题就越多

企业级软件开发是复杂并且昂贵的,管理层经常会发现无法达成计划的目标,从而需要决定如何应对这种情况。他们有三个选择来解决按时交付的问题。

  1. 增加预算 —— 你不是每次都能给项目增加预算的,但如果可以,这或许可以帮助你按时完成项目,同时也需要考虑效果递减法则。
  2. 减少特性 —— 开发人员和管理层一般都不倾向于让客户花同样的钱却买到更少的东西,对很多公司来说这不是一个可行的办法。
  3. 降低质量 —— 虽然我们无法摆脱软件缺陷,但软件质量可能对任何产品来说都是最重要的部分,不幸的是,降低质量通常是人们最先选择的方案。

当开发人员面临压力(或者仅仅因为懒惰),而写出质量不高的代码时,管理层却在减少QA的数量。这就是问题的根本所在,也是敏捷将要解决的问题。

敏捷就是答案

随着敏捷方法的流行,开发人员和管理者似乎找到了构建高质量软件的钥匙。虽然两方之间仍有很多不同的观点,但至少大家都希望能够在最短的时间内将软件构建出来,当然管理者还希望尽可能少花钱。

互联网泡沫破裂后,随着经济形势的回落,企业也意识到他们需要降低软件开发的成本,但他们该如何减少QA部门的高昂花销呢?

敏捷软件开发让开发人员自己测试自己的代码,单元测试通过就表示单元级别的代码能够正确完成预期的功能,当然这还需要整个团队一起努力。产品经理负责保证产品能够满足客户的需要,开发人员和测试人员一起编写测试用例,然后开发人员编写单元测试来保证质量。构造良好的测试是保证软件交付的唯一方法,也是敏捷软件开发的核心,它可以保证代码按照开发人员的意图工作。在开发人员承担测试自己代码的职责后,QA仍有存在的价值,他们需要寻找那些非常难以发现的问题。敏捷软件开发的一个支柱就是可以工作的软件,有些敏捷方法包含了测试驱动开发和开发人员执行的单元测试,而单元测试被用来检查你写的代码。通过这种保证局部的方式来让整体获益,以便得到持续的、及时的反馈,是一种快速、高效的抵御缺陷的方式。如果没有足够的单元测试覆盖,你很难敏捷起来,因为设计是在持续变化的,而变化会引入缺陷,如果无法在开发时发现这些缺陷,项目就会陷入困境。

单元测试-潜在的QA杀手

单元测试可以用来测试一小段代码,以保证代码做了正确的事,并能够被集成到整个软件系统中去。单元测试已经被证明可以达到90%以上的代码覆盖率,和QA使用的手工测试工具相比,构建良好、自动执行的单元测试可以随着代码一起演进,实时对代码进行测试。

我并不是说单元测试可以解决所有的开发问题,但作为测试代码(和促进设计)的工具,单元测试可以用更低的成本快速提升软件质量。自动化单元测试和测试驱动开发也是构建高质量软件所需要的,它们可以让开发人员更快速的适应新需求和其他的变化。

QA手工测试可能是九十年代互联网泡沫时期的救世主,但公司纷纷意识到QA团队阻碍了对变化的适应。单独的QA团队只会拖延开发人员修复错误的时间,敏捷开发和单元测试则保证了开发人员写完代码时,软件就可以工作了。

我们将去往何处?

我打赌你一定很奇怪为什么我会选择这样一个标题,这可能与我是Don McLean的粉丝有关。此外,我觉得对于一篇关于QA是如何从软件开发的主力走向边缘的文章,这会是一个很贴切的标题,QA即将消亡。可现实是,QA部门依然存在于很多公司之中,这种情况还将持续多久?我个人认为这只是时间问题,测试的任务迟早会转移到开发人员身上,开发人员需要测试自己的代码,而不依赖于任何QA部门。

当然,还会有很多专业QA继续呆在这个行业之中,不同的是他们不再是独立的部门,而是成为开发团队的一分子。敏捷需要跨职能角色之间的沟通,推倒降低效率的部门隔阂。传统的QA部门只会降低开发速度,拉高开发成本,只有一种方法可以解决:开发人员测试。这不意味着不再需要QA,而是需要QA重新定义自己的角色,与时俱进。不能再一成不变了,他们需要融入开发团队,在自动化单元测试中贡献价值;或者加入到产品管理中去,致力于定义让客户满意的产品。

当我们将(测试)职责转移到开发人员身上时,开发人员将会写出更干净的代码,构建出缺陷更少、质量更高的软件。这一切都取决于公司如何组织,以便在不降低质量的情况下降低成本。

关于作者

Eli Lopian是单元测试工具公司Typemock的创始人和首席执行官。在创建Typemock之前,Eli曾在AMDOCS(NYSE:DOX)和DEC等国际公司工作,拥有17年的研发经验,并曾负责优化开发流程和改善开发环境与工具。
 

 

查看英文原文: http://www.infoq.com/articles/day-qa-dept-died


给InfoQ中文站投稿或者参与内容翻译工作,请邮件至 [email protected]。也欢迎大家通过新浪微博( @InfoQ)或者腾讯微博( @InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

您可能也会喜欢

相关 [文章 qa 部门] 推荐:

文章: QA部门将会消亡

- - InfoQ cn
工业革命始于250年前,在工厂中、农田里、矿井上,机器开始代替人类进行生产劳动. 这在极大的促进了经济增长的同时,也深深的伤害了那些技能一般、无法找到新工作或者没有足够知识去转行的人,这与目前QA所处的境地有着惊人的相似. 上世纪九十年代,由于互联网泡沫的出现,对软件开发的需求急速膨胀,这就需要大量QA来进行测试,以保证软件能够顺利发布.

Scrum中的QA(一)

- - ITeye博客
来自“Priyanka Hasija”的经验,她认为QA在Scrum中要做到:. ① 不仅仅是完成test case,还可以作为Product Owner的代理,完成Acceptance test,在PO没有时间的时候代替PO和团队沟通,甚至通过质疑各种假设等方式帮助PO明确需求. QA在复杂的用户场景和异常流程方面更有感觉,这些可以帮助开发人员做估算时不仅仅考量“happy path”.

解放QA的唯一途径是"干掉"QA

- - 研发管理 - ITeye博客
        在整理资料的时候翻出了一位大神曾经转发给我的分享《 从QA到EP》. 联想到最近发生的事,又颇有感慨.         已经有很多前辈对QA的工作职责,现状及演变方向做了分析.         以下观点只针对部分QA,但国内几乎绝大部分QA都类似.         个人感觉QA都是苦逼的手工测试者,没什么技术含量,入行门槛极低.

Git branching strategy integated with testing/QA process - Stack Overflow

- -
In case a feature would not be accepted after testing but we would like to release other features already merged on develop that would be hell. This is a tricky step, I think the best way to avoid it is to keep features as small/specific as possible.

《我眼中的百度QA》:百度QA的特点与核心价值

- - 百度质量部 | 软件测试 | 测试技术 | 百度测试
作者:百度质量部测试架构师 董杰. 个人博客:可百度:“架构师Jack”.       来百度工作有些日子了,在未进入百度之前,由于一直以来百度质量部在业界都是比较低调的,外部的测试同行很少能了解到百度的QA们是如何工作的,如何来应对互联网的研发节奏和质量的平衡. 因此我来百度后互联网上经常都有测试工程师找我打听百度的QA是如何做测试的.

新时代的QA角色:IT全能战士

- - 透明思考 - Thoughts
故事开始于客户告诉我的一个反馈:ThoughtWorks成都的一个项目组,最近这段时间开发工作量变多,于是担任QA角色的某同学自动转入开发模式开始写代码. 不仅自己写,还拉上远在墨尔本的客户QA一起远程结对. 两个QA结对开发,效果出奇的好:代码质量毫无问题,而且对需求理解充分透彻,story完成得又快又好.

从 TikTok“重 QA 轻测试”来看中美软件开发之间的差异

- -
感觉整个一个高级黑啊,看起来像夸实际上是在吐槽. 完全就是靠堆人力成本来弥补软件工程上的不足. 原始视频链接:http://t.cn/A6671nbi. 第一点:很多西方企业都会写单元测试,每个人都知道这是非常基本的事情. 但这里的中国工程师们不需要编写单元测试. 每项代码提交都指望 QA 部门的手动测试,团队在提交之前手动测试每个 code commit 提交.

文章: HTML5之美

- - InfoQ cn
如今大热的HTML5到底美在哪里. HTML5到底能为实际的移动开发带来哪些改变. 来自阿里云云手机服务运营部的前端开发工程师 正邪 (廖健)分享了他眼中的HTML5之美,主要讲诉HTML5的常见原理并从CSS、JavaScript和框架三个方面做了细致讲解:. 白伟民:酷狗音乐的HTML5实践(百度开发者大会广州站 5月31日 免费报名).

技术文章的质量

- Kai Chen - 4G spaces
推友 @StarrySource 就微薄和推特的好坏问题写了一篇文章,正好和霍炬的文章同时发出来,推特上对这两篇文章叫好的人不少,其中还有一些直接就说 StarrySource 这篇比 virushuo 写得好. 文章好坏诚然是个很主观的事情,不过就仅从文章内容来说,就算有一千个读者一千个主观标准,我也想不出什么理由来说明 StarrySource 的这篇比 virushuo 写得好,因为客观上这两篇文章的差距会抵充掉主观上的一些好恶.

英文文章編輯checklist

- friedvan - 研究生2.0
相信我,如果你想要在學術圈混下去,想要將文章投稿到國際期刊,不管是什麼領域,英文寫作都是非常重要的. 有句話是這麼說的:好的writing讓你上天堂,不好的writing帶你住套房. 不喜歡這句的話,可以換成:好的writing給你publication,不好的writing給你rejection.