google测试分享-分层测试

作为互联网产品来说,我们可以认为产品一直都在beta阶段,为什么这么说。两个原因一个是是我们需要用户的真实体验来告诉项目团队这个产品的质量到底怎么样,另外一个就是我们一旦发现影响较大的bug,我们可以很快的fix bug,让产品体验得到迅速的提升。

      在互联网产品的新项目启动过程中,google为了让SET和TE都能在项目中发挥更大的价值,同时为了让开发人员具有很高的测试意识和质量意识,特意将项目的测试阶段分成三个阶段:

小型测试:主要包括单元测试、模块测试,使用mock、fake 等技术来完成,这个阶段SET通常会参与进来,但是开发人员仍然是测试的主力,TE却很少参与。测试执行都是自动化测试执行。

中型测试:主要包括组件测试、特殊区域的集成测试、功能交互的集成测试,这个阶段部分是自动化测试执行,部分是手工测试执行。

大型测试:主要包括长链路的集成测试、系统测试。从真实用户的角度,使用真实的数据进行用户体验性的测试。这个阶段的测试耗时较长,大部分是手工测试,考虑整体产品的服务质量。

      在项目测试计划过程中,会对小型、中型、大型测试做一个比较详细的区分,也就是测试范围的确定,这三个类型的测试的比例很关键,不同项目也是不一样的,一个判断是否健康的标准是看代码覆盖率。总体上,70/20/10原则:70%是小型测试、20%是中型测试、10%是大型测试。面向用户的、基础平台的会不一样。下面详细的说明在不同类型的测试活动上,开发、SET、TE是如何紧密的合作的。

     小型测试阶段,开发人员主导测试代码的编写和测试执行。SET和开发人员一起进行单元测试的测试设计,部分功能的测试代码编写,帮助做可测试性上的分析。开发写代码是创建、考虑用户、使用场景和数据流程上,而测试是破坏、扰乱分离用户及其数据,所有写功能代码和测试代码的思维是不一样的。CI起来后的小型测试的测试执行也是由开发人员主导的,小型测试在每次code commit后的执行情况都需要开发人员主动去了解并保证所有小型测试的结果都是PASS。其实这里面还包括code review,每个checkin的代码都需要经过SET和开发人员的code review。所以Change list里面显示的不仅仅是功能代码,还包括测试代码。

      中型测试阶段,SET主导测试代码的编写和测试执行。对于一个产品的CI来说,小型测试和中型测试的测试代码持续执行和回归由开发人员、SET、TE共同负责,并不是说由某一个角色来负责。其实也就是说TE也会参与中型测试的测试代码的维护和运行工作。对于复杂系统来说,中型测试的测试覆盖率可能会更高,SET参与的力度会更大。这个阶段,和我们国内通常做的接口测试有很多相似之处,接口测试其实包含单个重要接口的接口测试和多个接口之间的集成接口测试。对于阿里来说,上层业务基本上就做单个重要接口的接口测试,而针对中心级别的底层系统,更多的是多个接口之间的集成接口测试。

     大型测试阶段,主要是TE主导系统级别的自动化测试和手工测试。大型测试的优点就是能够真正的站在用户的角度去使用产品,体验产品,总体上把控产品的功能和性能等其他特性(这个正好是TE很擅长的能力)。当然缺点就是发现bug后,精准的找到失败的原因比较困难;另外一个就是测试数据准备工作比较耗时,很难走到特定的代码路径区域(较多的异常else语句)。需要强调的是这些手工执行的case并不仅仅是TE来执行,项目组的其他成员包括PM、PD、开发人员、SET都会得到手工执行case的执行任务,总体策略和结果分析由TE全程把控。

     产品总体质量的dashboard需要展示每次build测试结果、测试进度、自动化测试机构、代码覆盖率。开发人员甚至比SET更加关注CI的结果,而国内的开发人员很少主动关心CI结果,很多时候都是被测试人员通知到,然后还看心情。针对于复杂的系统,我们都需要建立构建依赖规则(记得之前淘宝测试开发了一个dependence系统,将系统之间的依赖关系全部映射出来,跟进code change来实时通知回归机制,挺好的事情,不知道后面为啥没了),通过代码变更的地方,来找到本次修改需要run的测试集;比如通用库上代码变更、一个依赖项目上代码变更等,使持续集成和错误定位更加精准。

     这里面可以发现google的测试阶段的划分和分层和大部分互联网公司是一致的,但是google会更加强调小型测试阶段的投入产出比,使用自动化测试手段来使用代码去测试代码,增加确定性和持续性,相比于手工测试而言。另外一个不同点就是google的开发对CI后的结果的重视程度也远超与国内开发人员,最近几年自动化测试的发展很快,国内很多测试团队都写了很多自动化测试代码并CI起来了,但是CI结果的利用以及完善和维护没有跟上来,很多大公司也存在这样的问题,他们更多的是关心编写了测试代码,关心自己有能力编写代码,而不去关心维护测试代码,不去关心测试代码有没有发挥它应有的价值。

     个人认为真正的测试架构师可以轻松的把任何一个SUT分层测试策略规划出来,甚至在架构和功能细节上进行细分,让分层测试更加的有效和合理,从而体现整个产品的质量控制计划的完美性,当然也会参与需要用到的测试工具的架构技术和思路上的指导。在SET和TE做的都比较不错的才可以把这个任务做的那么完美,否则只会写代码的人、只会黑盒系统测试的人都无法对SUT进行彻底的理解,并快速的给出最佳的分层测试方案。

时间: 2024-12-24 21:33:00

google测试分享-分层测试的相关文章

google测试分享-SET和TE

前端时间看了google测试之道,收获了一些,在此总结下并打算写一个系列blog,顺便分享给各位,也希望大家多交流,多讨论.另外需要强调的是我说到的一些google测试理论和淘宝的相关测试实践,并不代表所有淘宝测试团队都会这样去做,仅仅代表我的测试团队会做的一些思路上的改变和实践,肯定有不成熟的地方,欢迎讨论.最后需要强调的是,我这边得到的一些google做法仅限于google测试之道那本书,其他的我真不知道,如果有冲突不一致的地方,欢迎大家指出来. 为了让这些blog分享更有逻辑性,我打算分几

google测试分享-问题和挑战

前言:这个系列分享的内容大部分都是出自于<google是如何测试的>的书,不是我YY的,我只是大自然的搬用工,希望对大家有那么一点点的用处,当然后面也会有个人的一些想法. 上一次分享了google测试分享-测试经理,大概说了下google的测试经理的职责和工作范围,以及测试经理的价值体现.本来想断更了,感觉大家都没啥激情讨论问题了,但是已经坚持了4期了,就差两期了,算是给自己一个交代吧.在测试效率和技术面前,任何公司都会遇到各种问题,那这次会聊一聊google测试团队遇到了哪些问题和挑战,以及

google测试分享-测试经理

前言:这个系列分享的内容大部分都是出自于<google是如何测试的>的书,不是我YY的,我只是大自然的搬用工,希望对大家有那么一点点的用处,当然后面也会有个人的一些想法. 上一次分享了google测试分享-GTA,大概说了下google是如何使用GTA来管理整个测试阶段,特别是测试计划的安排,那这次会聊一聊google测试经理是如何进行团队管理的. 为了让这些blog分享更有逻辑性,我打算分几个专题来分享google测试相关的测试理念. google测试分享-SET和TE google测试分享

google测试分享-GTA

上一次分享了google测试分享-分层测试,有很多自动化测试的策略和实施都要有一个重点和计划,那这次会把google是如何来对SUT制定测试计划的分享下. 为了让这些blog分享更有逻辑性,我打算分几个专题来分享google测试相关的测试理念. google测试分享-SET和TE google测试分享-分层测试 google测试分享-GTA google测试分享-测试经理 google测试分享-问题和挑战 google测试分享-未来测试  在讲GTA之前,必须先讲下测试计划,而测试计划对于很多人

分层设计与分层测试

分层是复杂软件系统常见的设计思路.比如互联网的七层/五层模型,Android系统的APP/FWK/JNI/Kernel等,都是通过分层.解耦,达到简化问题,易于维护,便于扩展的效果. 传统的黑盒测试主要关注客户需求,白盒测试比较灵活,但实际应用中以验证编码实现为主,两者都忽略了设计这个开发过程中承上启下的环节.分层测试的核心思想是:针对有明确分层设计的软件系统,采用白盒测试的技术,在层与层之间验证接口的正确性.分层测试以调用接口驱动被测系统,尽量不依赖于打桩(具体原因后面会提到).去年下半年开始

Google宣布收购应用测试平台Appurify

摘要: 在刚刚进行的Google I/O大会上,Google宣布收购应用测试平台Appurify,为开发者提供App测试服务.Appurify是一家成立于2012年的公司,总部在旧金山,累计已经获得了630万美元的融资,投资方 在刚刚进行的Google I/O大会上,Google宣布收购应用测试平台Appurify,为开发者提供App测试服务.Appurify是一家成立于2012年的公司,总部在旧金山,累计已经获得了630万美元的融资,投资方里就有Google.刚刚他们在官方博客中更新了声明,宣

如果喜欢拯救世界,那就选择测试吧 -《测试技术七月刊》

业界前沿 2016移动app测试的7个趋势 移动应用测试是移动应用能否取得商业成功的决定性因素.独一无二并不能让你的移动应用在市场中独领风骚,这是因为用户们都很挑剔,他们会因为移动应用的功能.弱网.程序崩溃或者复杂的人机交互以及跨平台兼容性等等诸如此类的问题而卸载掉你的应用.所以,有效的移动应用测试方案是非常好的一个途径让你的移动应用可以给用户带来超赞的体验并获得商业上的成功.然后,要拟定出一份有效的测试方案,请务必关注以下7个新兴的移动应用测试趋势. 解读Android官方MVP项目单元测试

使用A/B测试和多变量测试提升网站转化率

文章描述:多变量测试:5个简单步骤提升转化率. 前言 自Google出现并改变了游戏规则之后,用户对于网页的关注时间一直在下降.对于任何一个时下话题,有千万条结果可以关注,可以抓住访问者注意力的机会非常明显地下降了(2002年,BBC报告指出大约在9秒内).想象一下你自己浏览网页时的时:你会阅读所有的文字和图片,尝试着彻底了解整个网页内容是什么吗?最有可能的答案是:"不会."伴随着充斥四周的信息轰炸,我们像被宠坏了的孩子那样,不会投入足够的的注意力去关注一个网页到底想告诉我们什么. 我

正视测试正视第三方测试机构

如何面对软件产品大型化.复杂化.系统化带来的挑战,抓住云计算带来的发展新机遇,解决软件测试理论.工具与应用不相适应的矛盾?如何推动软件质量保证体系向纵深发展,结合超大规模复杂系统对可靠性的要求,将软件质量管理与开发过程紧密结合,帮助企业实现软件质量水平的持续提升?如何破解软件知识产权遭受侵犯的难题,将中国软件知识产权的保护与软件著作权的申请.使用.管理相结合,建立促进软件正版化与产业技术创新的长效机制?如何培养高端.复合型软件人才,突破软件产业遭遇的人才瓶颈,建立符合软件人才市场需要的培训体系,