详细说说 Google Test Certified 的各级——Level 1
转载请联系作者,谢谢!
当你作为初创企业或项目的唯一测试人员,一个人一杠枪,你如何开始测试的工作?你是作为一条孤狼,面对10个甚至更多的开发,努力的做一条龙服务(加班加到死);还是想从1到11的转变?
也许你听到过这些话:
2006年Google内部2位工程师创建了一个项目叫Testing Grouplet(这是一个20%时间的项目,Gmail就是20%时间孕育的产品),此项目旨在推动开发人员测试,这是一个文化转变的项目。
- 提高对自动化测试重要性的认识
- 通过不断改进测试框架和组件来减轻编写测试的痛苦
- 提供信息和指导开发人员达到良好的测试实践
我们的座右铭:Debugging sucks. Testing rocks.
Testing Grouplet下面又包含好几个项目,比如Testing on the Toilet(每周在厕所里贴张测试小技巧), Design for testability principles(代码可测试性)还有今天要介绍的Test Certified。
以上交代下TC背景,下面开始解说下TC Level 1,如何从0到1。
- Set up test coverage bundles
代码覆盖率系统可以识别你运行的测试针对的是哪行代码,这有2个好处,1个可以查看哪些地方需要更好的覆盖,另一个是可以衡量覆盖率,以便改进。内部基础工具提供了一个代码覆盖工具,只需要在build文件中加上配置,那么在代码审查的时候,代码审查系统会自动计算覆盖率,默认使用的是语句覆盖,如果需要条件/判定覆盖,那么修改配置就好。
Google内部是使用blaze(现在开源了,叫Bazel)来编译代码,只需要配置build文件,对于开发人员来说没有压力,第一步就这样走出了。
Set up a continuous build
搭建持续集成,相信很多公司已经这么做了。Google的持续集成系统叫做TAP (Test Automation Platform),开发每提交一个CL(changelist), TAP系统就会进行编译和测试。
但是仅仅是持续集成还是不够,如果编译失败或是里面的测试失败,需要及时的修复,所以需要从开发人员中征集志愿者来组成一个build cop,及时的处理失败,这样后续的发布系统才能拿到跑绿的Cut CL。Classify your tests as Small, Medium, and Large
将测试分成小型、中型、大型,为什么不叫单元测试、集成测试、系统测试呢,这是因为要和系统资源匹配,当在代码中指定测试的size(一个简单的标识),那么基础工具分配给相应的资源。虽说Google的服务器分布在世界各地,几百万上千万的服务器分配到内部成千上万的项目后也是紧巴巴的。理想状态下你需要很多小规模快速的测试来覆盖大部分的代码,这样你能够快速的得到运行结果来修复问题。这是一个单元测试养成习惯的过程,随着项目的进展,提交单元测试成为吃饭睡觉一样的自然。
Identify nondeterministic tests
识别不确定行测试。对同一个代码运行测试后会得到不一致的行为,可能有几个原因,比如测试依赖外部系统,测试运行需要某种特定条件(时间或地点),相互干扰的测试。
那么你肯定不希望这类测试打断持续集成,这样会浪费时间精力来定位到底是失败还是flaky,提前隔离出来单独运行分析。同样的在build文件中可以加入规则。Create a smoke test suite
创建一个冒烟测试集,冒烟测试不能发现所有问题,但是可以保证产品功能主干正常运行,可以发现最大的问题。持续集成加入冒烟测试后按每CL的频率运行,这样团队对产品的信心更强。
完成Level 1大概也就1个月的时间,这个过程可以让测试人员和开发人员紧密的合作起来,同时也给开发人员不断灌输质量的意识。
详细说说 Google Test Certified 的各级——Level 1的更多相关文章
- 详细说说 Google Test Certified 的各级——Level 2,3
转载请联系作者,谢谢! No releases with red tests基于Level1搭建的持续集成,持续发布选用的CL(changelist)就可以取自CI系统最后跑通的CL,因为持续集成 ...
- [ZZ]MTSC 2017 Mobile Testing@Google 演讲的感受
原文地址: https://testerhome.com/topics/9364 Mobile Testing@Google 其实在开始听谷歌的张南和潘岩开始演讲前,了解下 Google Test C ...
- 全网独家MongoDB Certified DBA Associate考试认证视频
该视频意在让所有学员一次通过考试,避免重复考试而承担的巨额考试费用! 目前MongDB发展迅猛,有赶超mysql,和oracle看齐的苗头.在这个时候MongoDB也适时的推出了官方的认证考试&quo ...
- H.264 Profile、Level、Encoder三张简图 (fps = AVCodecContext->time_base.den / AVCodecContext->time_base.num)
H.264 Profiles Profiles are sets of capabilities. If your black box only supports the Baseline profi ...
- 高效率使用google
Google良好的搜索和易用性已经得到了广大网友的欢迎,但是除了我们经常使用的Google网站.图像和新闻搜索之外,它还有很多其他搜索功能和搜索技巧.如果我们也能充分利用,必将带来更大的便利.这里我介 ...
- 【转】H264视频编码级别说明profile level Encoder
版权声明:本文为博主原创文章,未经博主允许不得转载. 首先要阐明所谓的AVC其实就是H.264标准,是由ITU-T和ISO/IEC组成的联合视频组(JVT,Joint Video Team)一起开发的 ...
- 如何使用Google APIs和Google应用系统集成(7)----在里面JSON兑换XML数据处理,JSON数据包括违规XML数据规范:XML节点名称不支持号码Java解
笔者电话Google Calendar APIs的GetColors方法,其中(有关详细信息Google Calendar API已经Google API看到我的博文介绍的其余部分,目前,我们只取Go ...
- [转]The Production Environment at Google
A brief tour of some of the important components of a Google Datacenter. A photo of the interior o ...
- 多线程下载英文Google地图
1. pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo ...
随机推荐
- 使用异步存储提升 Web 应用程序的离线体验
localForage 是一个 JavaScript 库,通过使用简单的.类似 localStorage 风格的 API 实现异步存储,帮助你提升 Web 应用程序的离线经验(通过 IndexedDB ...
- 第三届“HTML5峰会”变身“iWeb峰会”8月来袭
第三届“HTML5峰会”——2000人规模的“iWeb峰会”将于8月16日在北京召开.本次大会由HTML5梦工场主办,是在前两届“HTML5峰会”基础上的延伸和升华. 三年以来,HTML5梦工场致力于 ...
- 值得 Web 开发人员收藏的16款 HTML5 工具
HTML5 正在迅速改变创建和管理网站的方式.HTML5 在不同的领域让网页设计更强大的.快速,安全,响应式,互动和美丽,这些优点吸引更多的 Web 开发人员使用 HTML5 开发各种网站和应用程序. ...
- Spring MVC 处理模型数据(@ModelAttribute)
SpringMVC中的模型数据是非常重要的,因为MVC中的控制(C)请求处理业务逻辑来生成数据模型(M),而视图(V)就是为了渲染数据模型的数据. 直白来讲,上面这句话的意思就是:当有一个查询的请求, ...
- 避开unity的坑(转摘)
避开unity的坑(转摘) 以下总结一部分来自经验之谈,一部分来自其他人的分享.总的来讲,unity开发原型和效果.验证想法,确实是无比便利.可能一个月就把核心玩法做得差不多.强大的编辑器功能让我们也 ...
- 用JSON.parse和eval出现的问题
json格式非常受欢迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,这两者之间有什么区别呢? JSON.parse()之可以解析json格式的数据,并且会对要解析 ...
- 利用IIS导出,导入快速部署 web站点
部署负载均衡站点的时候会创建多个站点拷贝.用脚本可以提高效率,并且减少错误 1 以管理员身份运行CMD 2 Cd C:\Windows\System32\inetsrv 3 导出指定的应用程序池 ap ...
- Atitit.Atiposter 发帖机 信息发布器 v7 q516
Atitit.Atiposter 发帖机 信息发布器 v7 q516 V7 jetty 版本 基本访问改为web版. 这样发布调试 V1 初步实现sina csdn cnblogs V2 实现qz ...
- 原创:phoenix4.6.0连接hbase1.1.2(不使用phoenix-4.6.0-HBase-1.1-client.jar)
官网上面的例子是在phoenix-4.6.0-HBase-1.1-client.jar完成的,这个jar包含了phoenix4.6连接hbase1.1.2所有的依赖,真是包罗万象(里面竟然还包括了se ...
- 智者当借力而行, 借助Autodesk应用程序商店实现名利双收
有没有注意到这个"精选应用"菜单?有没有想过这个菜单下的应用是从哪里来的?你的应用也可以出现在这里哦~ 如果你还不知道,Autodesk在几年前就发布了Autodesk应用程序商店 ...