转:google测试分享-分层测试

赖荣生 赖荣生     2022-09-29     560

关键词:

原文: http://blog.sina.com.cn/s/blog_6cf812be0102vctg.html

 

上一次分享了google测试分享-SET和TE,有一些自动化测试的细节没有说清楚,那这次会把google的分层自动化测试描述的更详细。
 
为了让这些blog分享更有逻辑性,我打算分几个专题来分享google测试相关的测试理念。
google测试分享-SET和TE
google测试分享-分层测试
google测试分享-GTA
google测试分享-测试经理
google测试分享-问题和挑战
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进行彻底的理解,并快速的给出最佳的分层测试方案。
 
      这里说到的分层测试策略和计划,这些都应该在项目测试计划里面体现出来的,下一个主题会分享google是如何做测试计划和风险风险的。 也就是google测试分享-GTA。

转:google测试分享-测试经理

...言:这个系列分享的内容大部分都是出自于《google是如何测试的》的书,不是我YY的,我只是大自然的搬用工,希望对大家有那么一点点的用处,当然后面也会有个人的一些想法。上一次分享了google测试分享-GTA,大概说了下google... 查看详情

转:google测试分享-set和te

.../blog_6cf812be0102vbnb.html    前端时间看了google测试之道,收获了一些,在此总结下并打算写一个系列blog,顺便分享给各位,也希望大家多交流,多讨论。另外需要强调的是我说到的一些google测试理论和淘宝的相关测... 查看详情

(转)腾讯tmq接口测试用例设计

...个思路,但是实现成本太高了,因为一个接口设计的接口测试用例很多,一般公司的接口数量几百到上千不等,每一个接口都设计这么多测试用例,那么对于测试来说,这样的话会死人的!所以此篇文章旨在给大家一个接口测试... 查看详情

转《google软件测试之道》

《Google软件测试之道》,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看。。。个人的一种学习习惯吧,就做了笔记,将自己的学习... 查看详情

[转]ut-it-st-bbit-sdv-sit-svt

V模型体现了设计分层和测试分层的概念,本文以作者自身的理解谈谈测试执行分层,不过从实际项目运作情况来看,真正做到测试执行分层的并不多,这里原因有很多种,暂且不论。  1.UT  单元测试(UnitTest)的对象是LLD中所... 查看详情

分层自动化测试模型变与不变

分层自动化测试模型变与不变最近在思考自动化分层模型,多少有些相关,所以就赶紧总结出来。分层自动化测试模型的发展分层自动化测试模型最早是由MikeCohn在2009年出版的《SucceedingwithAgile》书中的第十六章进行阐述的,他... 查看详情

分层自动化测试模型变与不变

分层自动化测试模型变与不变最近在思考自动化分层模型,多少有些相关,所以就赶紧总结出来。分层自动化测试模型的发展分层自动化测试模型最早是由MikeCohn在2009年出版的《SucceedingwithAgile》书中的第十六章进行阐述的,他... 查看详情

腾讯8年测试工程师经验分享,如何从功能测试转成自动化测试,写给还在迷茫期的朋友

...的工作也是越走越远。今天我想跟大家分享自己了在软件测试行业发生的那些事,希望能够鼓励那些跟我一样的朋友共同前行。我大学学的计算机专业,有一点编程基础。我的软件测试职业开始和大多数测试人员一样ÿ... 查看详情

【移动测试资讯】google的云测试实验室

...Google在GoogleI/O2015上宣布将要启动一个新的产品,叫做云测试实验室,今年夏天将通过GooglePlayDeveloperConsole为开发和测试人员提供服务。Google将提供20款全球使用率最高的Android设备来在真机上测试你的App。并且,还会提供许多虚拟... 查看详情

(转)接口测试用例设计(详细干货)

随着测试分析和分层测试的深化,“接口测试”出现在我们视野的频次越来越高。那么接口测的用例设计常用哪些方法呢?本文将详细描述。1 接口测试   1.1 接口测试接口:主要是子模块或者子系统间交互并... 查看详情

分层自动化测试模型深入研究

分层自动化测试模型的发展分层自动化测试模型最早是由MikeCohn在2009年出版的《SucceedingwithAgile》书中的第十六章进行阐述的,他说“测试金字塔是分层测试的一种最佳实践“。金字塔自动化测试模型如上图A所示,从下往上分为... 查看详情

分层自动化测试模型深入研究

分层自动化测试模型的发展分层自动化测试模型最早是由MikeCohn在2009年出版的《SucceedingwithAgile》书中的第十六章进行阐述的,他说“测试金字塔是分层测试的一种最佳实践“。金字塔自动化测试模型如上图A所示,从下往上分为... 查看详情

分层测试

  最近在工作过程中遇到产品、测试对分层测试有些疑惑,这还只是因为我想在过程中增加接口层面的测试。有这些疑问很正常,以前也经常遇到。疑惑具体到当时情况,我理解有两点,一个是开发不想迭代提交,如果要增加... 查看详情

分层测试:端到端测试

分层测试系列文章https://www.cnblogs.com/yuxiuyan/tag/分层测试/1.什么是端到端测试端到端测试(End-To-EndTesting,简称E2E测试)是一种从头到尾测试整个软件产品以确保应用程序流程按预期运行的技术。它定义了产品的系统依赖性,并确... 查看详情

测试驱动设计和分层架构

】测试驱动设计和分层架构【英文标题】:TestDrivenDesignandLayeredarchitecture[closed]【发布时间】:2012-12-0621:14:06【问题描述】:如何在具有分层架构的企业应用程序上应用TDD?我想知道如何将TDD应用到具有以下功能的应用程序中WPF... 查看详情

如何使用 Cucumber 来测试我们的设计是不是分层

】如何使用Cucumber来测试我们的设计是不是分层【英文标题】:HowtouseCucumbertotestifourdesignissplitbylayer如何使用Cucumber来测试我们的设计是否分层【发布时间】:2014-09-1719:56:07【问题描述】:从我了解到的书中,大多数Cucumber测试都... 查看详情

ui自动化测试的意义与理解

分层测试的思想分层测试(有的也叫测试金字塔)是最近几年慢慢流行、火热起来的,也逐渐得到了大家的认可,大家应该已经比较熟悉分层测试的思想了,不太了解的可以自行找一些相应的渠道去补充一下上下文的知识。总的... 查看详情

scikit-learn 中的分层训练/验证/测试拆分

】scikit-learn中的分层训练/验证/测试拆分【英文标题】:StratifiedTrain/Validation/Test-splitinscikit-learn【发布时间】:2017-04-1106:43:27【问题描述】:这里已经描述了如何通过train_test_split(StratifiedTrain/Test-splitinscikit-learn)在scikit中进行分层... 查看详情