测试团队分工比较细、明确,例如,测试组长或测试经理负责测试计划,有些同学负责测试设计,有些同学负责测试执行,有些同学负责功能测试,有些同学负责性能测试等。
团队的思维方式往往停留在固定思维方式上,缺少成长性思维。
只做第三方的测试服务团队,即这样的组织没有开发,只做测试;
一些性命攸关的系统开发,不惜一切成本来保证质量,确保万无一失。
那为什么要抛弃这样传统的测试团队呢?
是业务需求,还是研发需求?还有其它需求吗?
其实都有,也是大势所趋。
从业务需求看,是否能快速响应市场或业务的变化做到持续交付?
如果存在传统的软件测试团队,软件测试和软件开发相对独立,开发与测试处在相对隔离的状态,开发与测试之间的协作会比较困难,会增加一些测试工作的等待时间。多数时候,开发人员完成的功能特性得不到及时验证,毕竟测试人员的任务要等测试组长或测试经理来安排;测试人员完成的工作也不能及时反馈给开发人员,因为要汇总到测试组长或测试经理,经过他们的审核再统一报给开发团队。这无疑会降低了研发速度,也很难做到持续测试。如果不能做到持续测试,就不能做到持续交付,这时测试往往成为持续交付到的瓶颈。
软件产品开发的交付要么按功能特性、服务交付,要么按组件、模块等交付,要完成这些交付,从需求定义开始,到其代码实现、验证,许多时候很难将开发与测试分开,往往交织在一起。写一个产品类代码,顺手就要写测试代码验证。甚至写一个循环、选择一种新的数据结构等,都需要验证一下性能,或进行性能的对比分析。每个特性、每个用户故事写完,开发人员自己顺手就验证,会减少大量的沟通成本。即使要交给专业的测试人员验证,最好也在自己的团队中,而不是交给另外一个独立的测试团队。
例如,谷歌没有推出传统的测试团队,而是开始创建一些专业的工程角色,以帮助整个团队提高QA能力。“在谷歌,产品团队拥有质量,而不是测试人员。每个开发人员都要进行自己的测试。测试人员的工作是确保他们拥有自动化基础设施和支持这种自我依赖的过程。测试人员使开发人员能够进行测试,”《谷歌软件测试之道》这么写道,而且这本书出版于2013年。
微软,也算是一个比较传统的公司,之前,它就是测试的标杆,我们乐于举着微软这杆大旗说,微软有测试团队,和开发、产品团队平起平坐,甚至一个开发两个测试,但2014年之后,微软几乎没有专职的测试人员了,已经和Google一样了,更不要说有测试团队了,也算是 “抛弃传统软件测试团队” 的一个例证。
记得2003年,国家成立了35所(后来增加了一所)示范性软件学院,培养高级实用人才,说明当时软件人才极度缺乏。在这种情况下,许多软件测试从事人员都不是计算机、软件工程专业毕业的,而是学物理、化学、机械、会计等各种理工科专业的毕业生从事软件测试工作,这些人员的软件开发能力都相对比较弱,他们更多适合系统测试、业务测试,采用类似“客户使用/操作软件方式”进行测试,虽然可以使用一些测试工具,写一些简单的脚本,但总体上看,给人错觉是:测试技术偏低、谁都可以做测试,让“软件测试” 显著地区别 “软件开发”,这样软件测试成为独立的团队合情合理。
后来,许多大学也相继成立了软件学院,今天估计会有上千所大学有软件学院,再加上社会上的培训机构,也开始提倡从娃娃起就抓 “编程”,写代码、程序开发 慢慢成为理工科学生的一项基础能力,越来越像“英语” 那样,是必备技能。今天,有开发能力的软件人才不再那么缺乏了,所以,提倡软件开发和软件测试的融合的条件比较成熟了。再加上敏捷、DevOps开发模式的推行,开发和测试的融合成为大势所趋。
我们也知道,不是每个公司是Google、微软,不是每个公司是Google、微软,不是每个公司是Google、微软(重要的事说三遍),许多公司招到的人员责任不够强、能力不够强,完全依赖开发自测有很大风险,这时一方面在开发内部实行交叉换位测试,张三的代码由同一个团队的李四进行测试,李四的代码由同一个团队的王五进行测试,王五的代码由张三进行测试等。另外,可以建一个小的现代测试团队,他们可以给开发人员赋能(包括提供更优秀的测试工具),提升开发人员的测试能力;另方面进行探索式测试,发现“开发自测”没有发现的问题,更好地保证质量,同时这部分人也相当于成为开发的监督/抽查力量,给开发自测一定的压力和挑战,更好促进开发人员做好测试。
这不是理论设想,而是有优秀实践证明的。美国的一家提供手工艺品买卖的电商平台Etsy就保留了独立的测试团队,但是赋予了测试团队新的责任和使命。
【真实案例】
Etsy 公司早在2008年开始引入DevOps文化,在2014年,Etsy 公司的业务系统可以做到一天完成 50 次线上部署。Etsy 公司拥有独立的 QA 团队,为所 有项目提供测试服务。但与一般的测试团队有所不同,该团队并不承担开发阶段的测试任务, 也不负责回归测试和维护测试用例这样的工作。也就是说,这些工作都是开发人员承担的,测试人员只承担下面的测试任务:
本文也是说抛弃传统的测试团队,而不是要抛弃所有的独立测试团队,可以建像Etsy公司那样的测试团队,或者建立关注质量的、真正的QA团队:一方面进行流程改进、规范改进、缺陷预防等工作,另方面采用探索式测试方式、基于业务流程图/丰富的经验完成快速的、业务层次的E2E测试。
也有不少公司成立质效团队,将质量效能整合起来,提倡质量内建和技术驱动质量,利用各种技术(代码分析、流量回放、AI、接口测试自动生成、测试数据自动生成...) 构建质量工程体系、质量工程平台,彻底地提升开发质量和效率,这也许是未来的发展方向。
正如彼得.德鲁克所言“新的陌生时代已经明确到来,而我们曾经很熟悉的现代世界已经成为与现实无关的过往”,我们要敢于面对未来,改变自己,顺应时代,与时俱进,才让自己立于不败之地,成就自己。
Anyway,欢迎大家拍砖,欢迎大家留言参与讨论。
顺便给大家送福利:免费观看QECon2021 深圳站主会场大咖嘉宾的分享免费看,而且分享有礼[礼物],截止28日12点邀请人数前3位,各赠送价值几千元的9月上海站门票一张,小伙伴快快转发起来。