详细说说 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 ...
随机推荐
- 关于sharepoint2013的SPUtility.GetGenericSetupPath()方法过期解决办法
有个时候需要读取layouts下的xml文件,因此需要知道路径,以前在SP2010用的SPUtility.GetGenericSetupPath()方法获取.现在SP2013提示过期否决 看2个结构分 ...
- DevExpress .NET界面开发示例大全
说到做.net界面开发,很多人应该都会想到DevExpress. 它的 .net界面开发系列一共有7个版本:WinForms.ASP.NET.MVC.WPF.Silverlight.Windows 8 ...
- Wix安装程序中判断是否安装的.net framwork 4.5
<PropertyRef Id="NETFRAMEWORK40FULL"/> <PropertyRef Id="NETFRAMEWORK45" ...
- Round in Oracle/VBA
VBA的 Round采用的是银行家算法(rounds to the nearest even number) Round(1.5) = 2 Round(0.5) = 在Oracle中实现银行家算法 S ...
- 基于 VLC 的 Android 多媒体解决方案
前段时间项目中需要在 Android 中播放视频.流媒体.查看监控,就研究了一下 Android 多媒体解决方案. 查找了一下,大致有如下几种: Android MediaPlayer FFmpeg ...
- Android 查看手机中所有进程
真机测试的时候发现DDMS对进程的显示很不给力,一些进程管理工具又不显示包名. 所以就自己写了一个小程序,查看自己手机中的进程,显示当前时间和进程的包名: 程序运行截图: 布局: <Linear ...
- [Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)
温馨提示 建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续本节内容. ...
- NSFileHandle
/* 文件处理句柄要完成的工作: 相当于C中的文件操作,诸如 打开,读,写,关闭,修改文件偏移量等行为 类名: NSFileHandle 注意: 操作句柄时,重点把握文件的偏移量在哪个位置 重点 ...
- Android工程师常见面试题集答案
13.描述一下Android的系统结构? android系统架构分从下往上为linux 内核层.运行库.应用程序框架层.和应用程序层. linuxkernel:负责硬件的驱动程序.网络.电源.系统安全 ...
- 数据结构--用Objective-C简单实现的数据结构:栈
前言:最近在学习数据结构,这里用Objective-C简单实现了一下栈.用Objective-C确实好容易,因为我使用了Cocoa框架提供了NSMutableArray作为存储元素的集合,操作集合元素 ...