QA部门将会消亡

发表于:2012-11-15 10:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王瑜珩 译    来源:51Testing软件测试网采编

  工业革命始于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重新定义自己的角色,与时俱进。不能再一成不变了,他们需要融入开发团队,在自动化单元测试中贡献价值;或者加入到产品管理中去,致力于定义让客户满意的产品。

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

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • answerball
    2012-12-05 10:14:36

    QA和测试的工作职责根本不是一样的。而且就目前情况来看,开发人员是无法代替测试人员的,即便您说的对,估计那也是N年之后了吧。

  • 爱喝可乐的猫
    2012-11-27 11:21:24

    QA和测试完全是两个方面,QA只是监控流程和质量,测试才是干活的。再就是敏捷开始也是在功能上一点一点的累加的,其实这个过程开发人员完全没时间做单元测试,那还是测试人员来做,其实我感觉手工测试可能以后会消退一些,但是针对项目而言,还是手工测试快一点,在了解需求的情况下,一个有经验的测试人员很容易定位当前功能的逻辑错误,针对产品而言,是长期发展的,可能就像自动化等一些靠拢。

  • hjchaohaohaho
    2012-11-26 18:02:49

    请笔者先百度一下QA部门和测试部门的区别,再下结论吧
    QA是质量管理部门,不是测试部门
    QA的职能是跟进,协调开发部和测试部
    莫误人子弟

  • shan_li83
    2012-11-26 17:47:42

    在敏捷开发模式,QA确实只变的可有可无了,深刻感觉到传统的手工测试都没有工作。

  • ratankoy
    2012-11-21 09:21:09

    不敢恭维。。。作者对QA的理解太浅薄,,,为什么这个职位会存在,因为这是市场的需求。。。

  • zhengbaohua
    2012-11-16 16:55:10

    你想标新立异,我给你分成吧,没事别瞎叨叨

  • csj
    2012-11-16 16:12:33

    有意思的很,我们部门有个核心的产品,据说是QA做出来的。我想起一个中国的古典故事,说井底有一个蛤蟆。。。。。。然后我觉得如果我们也是那个井底的另外一个蛤蟆,怕是要被那个蛤蟆忽悠了。人与人之间区别其实就是每个人的看见的那个井口大小不同罢了,还是不要枉下定论的好,以免误人子弟。至于井上面的天,又有几个人能真正看到呢?

  • qianliemao
    2012-11-16 10:02:39

    QA不可少,但目前QA应该做的是找到一种适合敏捷开发的工作方式. 目前我们团队的情况是,QA将传统开发模式下的规定全部用到敏捷中来,在一个迭代小瀑布中要规规矩矩的完成所有要求的文档都得占用至少一半的时间. 不符合敏捷原则.  造成所有人的迷茫.

    个人观点.

  • duzilonglove
    2012-11-16 09:51:01

    真的蠢

  • jimmylee216
    2012-11-16 09:32:00

    "单独的QA团队只会拖延开发人员修复错误的时间",那中国造航母后的多次出海海试也只是拖延航母服役的时间

  • steven_bian
    2012-11-15 17:39:48

    我只能说笔者还没有真正的理解什么是测试。

  • g3wang
    2012-11-15 16:27:31

    坦白地说,作者的文章有很多误区。首先QA测试分量产成品测试和产品开发的质量测试,而产品开发的质量测试又要分为纯软件质量测试和硬件产品带复杂软件的质量测试。作者将这些全部混为一谈,每个部分都有相关的专业知识和技能,如果说其他过程有机会机器代替人,质量测试就没有可能的,质量问题往往是复杂的,不可预测的,需要有人的智慧去控制。

    长期从事质量工作,通过很多例证,很多相关工作人员在工作上的不专业,他们喜欢用发现更多的问题来表现他们的工作能力,这给很多人对质量控制带来一些误解。我个人认为“简约+深入”更适合质量控制工作,突出质量重点,深入分析与解决问题,这才是质量工作的精髓所在。质量工作需要思考,需要智慧,这样才能做得更好,更能得到价值认同。

  • 霜中蝶
    2012-11-15 15:33:04

    首先,QA不是做测试的,QA是关注过程的。其次,不经过测试的系统无法得到质量保障。如果你作为项目经理,敢把不经过系统测试的产品发布吗?自动化测试、敏捷测试只是主流,但无法代替传统的测试。就像飞机再好,也代替不了自行车。各个项目不同,采用的方法不同。

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号