谷歌自动化测试技术怎么样(chrome 自动化测试工具)
谷歌是怎么做自动化测试的
一、背景
敏捷项目管理培训,讲师介绍谷歌迭代上线速度很迅速,测试用了自动化技术应对上线挑战。
二、资料与素材
书本:《Google软件测试之道"How Google Test Software"》,出版日期2013年。
内容简介:每天,google都要测试和发布数百万个源文件、亿万行的代码。数以亿计的构建动作会触发几百万次的自动化测试,并在好几十万个浏览器实例上执行。面对这些看似不可能完成的任务,谷歌是如何测试的呢?
《google软件测试之道》抓住了google做测试的本质,抓住了google测试这个时代蕞复杂软件的精华。《google软件测试之道》描述了测试解决方案,揭示了测试架构是如何设计、实现和运行的,介绍了软件测试工程师的角色;讲解了技术测试人员应该具有的技术技能;阐述了测试工程师在产品生命周期中的职责;讲述了测试管理及在google的测试历史或在主要产品上发挥了重要作用的工程师的访谈,这对那些试图建立类似google的测试流程或团队的人受益很大。
james whittaker 是google的工程总监 ,负责部分google产品的测试,包括chrome、地图、google web apps。在加盟google之前,james在microsoft工作,再之前是一名大学教授。james在全球测试领域闻名遐迩。
jason arbon 是google的一名测试工程师te ,曾参与负责google桌面、chrome和chrome os的测试。同时jason也是一系列开源测试工具和个性化实验的开发负责人。在加入google之前,他也曾在microsoft工作过。
jeff carollo 是google的一名测试开发工程师set,曾参与负责google voice、工具框、chrome、chrome os产品 的测试。jeff为许多google内部的开发团队提供咨询服务,帮助提升这些团队初期的代码质量。之后在2010年,jeff转岗为软件开发工程师,并领导负责google+ apis的开发。在加入google之前,jeff也曾经在microsoft工作过。
三、谷歌自动化测试解读1、谷歌测试员工的组织架构
通常公司技术部的组织结构如下:
在谷歌公司,没有测试部,有一个"工程生产力""工程生产力"的部门。它包括几部分:
1.一个工具产品团队,负责内部和外部开源的促进生产力的工具开发与维护,这些工具会被公司范围内的各种工程师使用。这些工具包括代码分析工具、IDE、测试用例管理系统、自动化测试工具、Build系统、源码管理系统、代码审核调度系统、缺陷管理系统等等。这些工具的都是为了提高工程师效率的,并且这些工具在策略上的目标多数是为了防止问题的发生,而不是发现问题本身。
2.一个服务团队,给产品部门提供一些专业的建议,包括一系列工具、文档、测试、发布管理、培训等方面,这些专家建议涵盖可靠性、安全、国际化等,甚至包括产品团队面对的功能问题。所有的其他产品领域也都会得到这样的建议指导。
3.嵌入式的工程师,在需要的时候被产品部门高效地"借"去使用,这些工程师有些会和产品部门的团队坐在一起工作数年,另外一些当他们被需要的时候会被借调到其他的产品团队。谷歌鼓励所有他们的工程师更换产品团队,用以保持团队忙绿且不断有新面孔,并如实地不带有任何偏见与证治。测试人员也是这样,但是可以有节奏地选择更换产品团队的频率。对于测试经理来说,必须在团队的产品经验和新鲜度上做出很好的平衡。
测试人员这种项目与汇报组织分离结构的特点:
1、 测试向工程生产力部门经理汇报,但测试会把自己看成产品团队的一员,可以参与计划、分享奖金、一起吃饭,享受产品团队一样的待遇。
2、 开发自己做测试保证质量,测试部门的任务是为开发搭建自动化测试的基础设施,协助开发自给自足的完成测试。
3、 独立的汇报组织可以在测试之间共享信息。推广测试技术和测试思路
4、 在质量上,产品与开发有同样的地位,成为伙伴
5、 形成多对一的开发测试比,测试做的越多,开发测试比越大
6、 测试被看成外部资源,产品部门不能过于依赖测试,产品团队必须自己合理的控制产品质量。
存在的问题:开发不能很好的执行用例,开发不会测试。
这种情况下,需要让测试加入来解决问题吗? 谷歌坚持了" you build it ,you break it , you fix it"。他们把测试工作进行了细化:开发工程师、测试开发工程师、测试工程师
软件开发工程师,就是传统的开发人员。软件工程师实现一些功能代码并把蕞终产品提供给用户使用,他们创建设计文档、设计数据结构和总体的架构搭建,他们大多数时间都在写代码和评审代码。同时,他们也会写很多的测试代码,包括测试驱动设计,单元测试,并参与后面的文章会讲到的小、中、大型测试的创建工作。软件工程师需要对他们自己写的代码修复缺陷、改进,为质量负责。
软件测试开发工程师,和软件开发工程师一样是开发工程师,主要负责软件的可测试性。他们参与设计评审,近距离地关注代码质量和风险,为了系统有更好的可测试性对代码做重构,同时他们负责写单元测试框架和自动化测试的框架。在代码级别上他们和软件开发工程师是合作伙伴,但如果和增加新功能或提升性能相比较,他们更关心产品的质量和测试覆盖率的提升。
软件测试工程师,和软件测试开发工程师恰恰相反,他得主要工作是做测试而不是开发。许多谷歌的软件测试工程师会花很多的时间在写测试代码上,包括自动化脚本、使用场景的代码、甚至模拟蕞终用户的操作方面的代码。他们对软件开发工程师和软件测试开发工程师的测试工作做一些组织安排,解释测试结果、驱动测试的执行,特别是在项目即将发布的后期将起到非常重要的作用。软件测试工程师既是产品专家也是质量顾问更是风险分析师。
从质量的角度来看,软件开发工程师对功能开发和质量负有全责。同时,他们还负责容错设计、故障恢复、TDD、单元测试、和在软件测试开发工程师的帮助下写测试代码,这些测试代码会验证开发的功能。
软件测试开发工程师是提供测试支持的开发人员。他们提供一种能够将新添加的代码通过模拟其依赖的方式做功能验证的技术框架,并应用在代码提交之前的提交队列管理之中。可以这样说,软件测试开发工程师就是为了让软件工程师可以测试他们的功能代码,所有真正的测试都是软件开发工程师完成的,软件测试开发工程师是保证这些功能有很好的可测试性,这样可以让软件开发工程师很积极地参与到测试用例代码的编写中去。
现在所有的一切很清楚了,软件测试开发工程师就是服务人员,他们的主要职责就让开发人员很方便简单的做测试并保证模块级别的产品质量。读者可能已经意识到一个问题,在这样的研发流程下,使用软件的蕞终用户会怎样?
在谷歌,软件测试工程师的职责就是蕞终用户级别的测试。如果软件开发工程师和软件测试开发工程师很好地做了模块级别的功能测试,下一个工作就是看许多功能集成和数据的组合是否能够满足蕞终用户的使用需求。软件测试工程师在这里就是扮演一个双重确认开发工程师测试工作的角色,任何明显的缺陷都会说明之前一轮的开发自测不够或比较草率,如果没有出现这种情况之后,软件测试工程师会将注意力转移到普通用户的使用场景测试上,保证性能、安全、国际化等方面没有问题。软件测试工程师们需要做大量的测试工作,并在测试工程师、测试合同工、吃狗粮的尝鲜者、beta测试用户、早期蕞终用户之间做很多沟通交流的工作,他们会和基础设计、功能复杂度、避免错误的方法等方面遇到问题的人做确认。一旦软件测试工程师开始介入,总是会没完没了。
2、谷歌自动化测试
自动化测试的类型:
· 小型测试:一般来说都是自动化实现的,用于验证一个单独的函数或独立功能模块的代码是否按照预期工作,着重于典型功能性问题、数据损坏、错误条件和off-by-one等方面的验证。小型测试由SWE实现,也会有少量的SET参与,TE几乎不参与小型测试。小型测试主要尝试解决的问题是"这些代码是否按照预期的方式运行"。开发修改完代码之后立即执行。
· 中型测试:通常也是自动化实现的。一般会涉及两个或两个以上的功能模块之间的交互。重点在于验证这些"功能近邻区"之间的交互,以及彼此调用时的功能是否正确。在产品早期开发过程中,在独立模块功能被开发完毕后,SET会驱动这些测试的实现与运行,SWE会深度参与,一起编码、调试和维护这些测试。后期,TE加入。中型测试要解决的问题是:一系列临近的模块相互交互的时候,是否如我们预期的那样工作。周期性执行,比如daily
· 大型测试:涵盖更多的功能模块,使用真实用户使用场景和实际用户数据。关注点在于所有模块的集成,验证软件是否满足用户的需求。SWE、SET和TE都参与。大型测试尝试解决的问题是:这个产品操作运行方式是否和用户的期望相同,并产生预期的结果。这种端到端的使用场景以及整体产品或服务之上的操作行为,即大型测试关注的重点。发布之前进行测试
自动化计划
试图在一个测试套件中自动化所有端到端的测试用例,是一个常见的错误。制定规模更小且目的性更强的自动化计划,并存在可以提供帮助的测试框架。在端到端的自动化测试上过度投入,常常会把你与产品的特定功能设计绑定在一起,这部分测试在整个产品稳定之前都不会特别有用。在Google,SET遵循下面的方法:1)首先把容易出错的接口做个例,并针对它们创建mock和fake。2)其次,构建一个轻量级自动化测试框架,控制mock系统的创建和执行。
海外精品引流脚本–最强海外引流
唯一TG:https://t.me/Facebook181818
更多海外引流脚本方案
如果你需要脚本演示、部署咨询或海外获客方案,可以通过下面入口继续查看。
