《我眼中的百度QA》:百度QA的特点与核心价值
出处:qa.baidu 作/译者:百度质量部测试架构师 董杰
来百度工作有些日子了,在未进入百度之前,由于一直以来百度质量部在业界都是比较低调的,外部的测试同行很少能了解到百度的QA们是如何工作的,如何来应对互联网的研发节奏和质量的平衡。因此我来百度后互联网上经常都有测试工程师找我打听百度的QA是如何做测试的?百度的测试是什么样子?水平如何?对于现在QA数达到千人团队的百度质量部所覆盖的工作范围和内容是非常之多的,我也很难用几句话全部描述清楚,因此很想根据我经过这些日子工作对百度质量部的了解,写几篇文章来较详细的给大家分享百度QA是如何工作的。
开篇先说说百度QA们的特点:
从组织结构上百度所有的QA都归属于一个大部门百度质量部统一管理,在一个大部门下的好处是很容易一起跨产品线的协同作战,各种测试技术和测试工具能以最快的速度得到传播,避免重复造轮子的浪费。同时QA们能有一种更强的组织归属感、有着专业的发展通道与空间、关键能交到更多在QA领域与自己志同道合的朋友,扩展视野,所有QA都能从这种大资源池中获益。这一点对所有做测试的人而言更有利于测试专业技能的持续提升。
从我工作所见和感受来看,百度QA有四个主要的工作挑战:职责范围广(覆盖完整的产品生命周期全流程)、 面对产品技术新(如移动互联网、WebOS、推荐引擎)、研发速度快(互联网的节奏)、大数据系统的复杂(百度本质是一个分析处理数据的公司)。这些挑战长期影响着QA日常的工作方式,使得与传统的tester有着工作模式的不同。
百度QA的工作范围覆盖了百度所有形态的产品从基础架构的分布式系统、搜索架构系统、到搜索算法、Web前端、Windows客户端、手机客户端,以及最新的多媒体技术、机器学习等这些前沿的IT业务,因此在这里我能最广泛的接触到各领域测试的QA同行,听听他们的分享,扩展我的测试视野。当然我也有机会到各领域进行测试实战,从我到百度算起,我已在web前端、windows客户端、手机客户端、搜索架构系统、搜索算法、图片搜索领域进行了各种测试实践工作,大大丰富和完善了我的测试技术知识体系,受益不少。
另外百度QA会更完整参与到产品研发流程的周期,从最早的MRD,到设计评审、到产品发布后的效果评测是端到端的参与完整的产品生命周期。与我过去经历最大的区别在于,QA与PM(产品经理)打交道的时间非常多,在整个产品生命周期中几乎是同步一起从头到尾密切配合,同时QA还会为PM设计并开发用于产品评测的平台对产品设计的影响会更多。对于QA与RD的关系,QA不仅只是响应RD提交代码的测试,还会主动去帮助RD如何更好地做好UT(单元测试)、如何做好code review。基于百度QA职责范围的扩大,在百度QA工程师的职责和发展路线上目前来看已大致分为QAD和QAT,至少我在进行职称评定的评审时,已会有意识的区别评估。QAD就是QA中的软件开发者更多侧重测试工具和测试系统的软件开发,我在参加QAD任职评审1对2活动时,基本是以一个对软件开发者和软件产品设计者的角度来进行review,关注其代码质量、软件架构设计思路和产品设计思路的能力。QAT则是标准的Tester,偏重如何尽早的发现更多软件质量问题,要求精通产品的应用场景以及各种测试类型。因此各种风格和兴趣的QA都可以在百度找到自己希望和喜欢的角色,当然有时QAT和QAD也会互换,我个人而言,认为相对而言QAT转QAD容易,QAD转QAT要难些,因为百度的QAT大多具备一定的软件开发能力,平时也会根据工作需求自己做一些自动化测试开发和工具开发的工作。而QAD要转QAT则还需要补充多种测试类型的知识技能,以及产品的业务知识。我在这里目前算是QAT路线,大多时间在思考如何设计更完整的测试避免问题遗漏,以及如何让测试人员在短时间内发现更多的深层次问题,当没有QAD资源来帮助你时,也会自己设计与实现一些小规模的测试系统或测试工具。如果未来某天我的兴趣转换到了QAD的工作内容了也是比较容易获得机会转换的。所以当QA工作的平台足够大时,个人的兴趣也会得到最大化的满足。
在日常的工作中很多百度QA常常还会面对很多新产品技术的挑战,这里的“新”是指新形态的互联网产品(机器学习、推荐系统、多媒体搜索)以及新的软件应用场景(移动互联网和Webos),这些新的被测对象所带来的直接挑战主要是业界很难有现成的完整的测试方案及测试技术,于是不得不逼迫百度的QA比传统软件测试的Tester更加持续地进行测试技术的创新才能满足“新”产品的质保需求。例如:我今年参加的整个百度质量部层面的移动互联网测试技术专项topic组的工作,就不得不去填补诸多业界在移动APP稳定性测试领域、性能测试领域、自动化测试领域技术的空白,否则无法达到真正对高质量用户体验的追求。当业界大多数APP的稳定性测试只依赖Monkey测试工具时,Monkey测试已只占百度最新APP稳定性测试用例类型不到10%的覆盖面,其他90%的稳定性测试方法大多是业界还未知但APP应用又必须要考虑的,否则就会出现“为什么用户会碰到而我无法重现的问题”。当业界还靠移动机型穷尽进行兼容性crash问题的覆盖时,百度的QA已设计实现了基于静态代码自动扫描的兼容性crash问题的快速测试。当很多QA还在为如何在不稳定的2G网络下得到稳定的测试结果而苦恼时,百度QA已靠不到1000元的低成本技术方案很好地解决该问题。同时在完善移动APP测试方案的过程中QA内部还设计开发了不少APP测试工具填补了业界在移动APP测试领域的很多空白。经过我对内部信息的了解,之前官方对外宣传较多的移动云测试MTC只代表了百度QA在移动互联网领域测试技术积累的一部分而不是全部。所以我希望下一步有机会百度质量部能逐渐给业界分享出来,让大家都能受益从而减少移动互联网测试的烦恼和困难。据我在百度的观察我个人总结了一个规律:中国人并不缺创新能力,而是缺逼迫自己去持续创新的压力和平台。正是由于百度QA所处的工作环境和测试对象的特点,逼迫他们不得不去创新,结果QA个人的创新能力在不断提升并形成了创新的习惯。我在这样的环境下,一年下来自己的创新效率感觉比以前也提升了一倍以上,发现原来测试很多领域都有着创新的可能与空间。有朋友问我在百度累吗?我说相比过去身体不累但脑子累因为经常都在思考如何创新地解决所遇到的各种没有现成方案的测试问题。
曾有多位互联网的测试友人网上问我:“百度是如何进行面向互联网的快速测试的?”对于这个问题,我最大的感受是互联网研发速度与质量的平衡让百度的QA必须持续通过测试技术的改进来实现该目标,靠智慧的测试而不是加班来同时满足进度与质量的需求。为了满足这些需求百度质量部有大型测试平台如百度TIP(Test in production)系统、百度众测平台、百度MTC、分布式并行自动化测试等支持大多数产品组同时获得研发速度加快和研发质量提升的收益。我个人认为百度TIP应该是国内在beta测试领域做得非常智能和系统的beta测试系统,可大大提升beta测试的效率和质量。而百度众测平台则是国内第一个也是规模最大的众测社区,依靠互联网上的热心用户资源帮助产品尽早发现更多用户场景特有的问题,减少了百度QA测试时间资源和测试物料的投入,值得国内各公司借鉴如何更好地把用户吸引进来参与beta测试,花点钱是必须的,空手套白狼是不可能的,但是投入产出比是值得的。百度移动云测试MTC平台则通过对已有测试物料和测试资源的共享管理及自动化应用帮助各产品APP测试缩短了在兼容性测试领域和性能测试领域的测试时间,并且让各产品APP获得更广的测试覆盖从而获得更高质量的APP。
除了这些公司级的测试平台帮助各产品QA加快测试速度外,在日常的测试工作中一线百度QA还会主动积极学习和广泛地应用业界优秀的测试技术:持续集成、code review实践、静态代码自动测试工具、环境一键搭建、监控系统、分布式并行测试、探索测试等都在大多数产品组普及落地,希望靠先进的技术手段生产力来提升测试效率,缩短研发测试周期。据我所知百度质量部的探索测试在国内应该是应用产品范围最广的,从windows客户端、移动APP、web产品都在例行应用,探索测试几乎覆盖百度所有产品线,应用和实施探索测试的QA数达到上百人以上,涌现出不少内部探索测试教练,实施了探索测试的产品在没有增加测试周期和测试人力的前提下能提前发现更多问题减少漏测,部分产品探索测试发现的问题数所占比例已达30%以上,提升了发现单个缺陷的测试效率。
我个人认为对比靠延长工作时间和减少必做测试类型来加快研发速度的做法,靠主动持续应用各种新测试技术实践和成果是一种更可持久更科学更人性化的做法。关于百度如何进行“快测试”的咨询,我想这里已给出了一个已验证的解决方案了,希望值得各位同行借鉴和思考。
|