转载请联系作者,谢谢!

当你作为初创企业或项目的唯一测试人员,一个人一杠枪,你如何开始测试的工作?你是作为一条孤狼,面对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的更多相关文章

  1. 详细说说 Google Test Certified 的各级——Level 2,3

    转载请联系作者,谢谢!   No releases with red tests基于Level1搭建的持续集成,持续发布选用的CL(changelist)就可以取自CI系统最后跑通的CL,因为持续集成 ...

  2. [ZZ]MTSC 2017 Mobile Testing@Google 演讲的感受

    原文地址: https://testerhome.com/topics/9364 Mobile Testing@Google 其实在开始听谷歌的张南和潘岩开始演讲前,了解下 Google Test C ...

  3. 全网独家MongoDB Certified DBA Associate考试认证视频

    该视频意在让所有学员一次通过考试,避免重复考试而承担的巨额考试费用! 目前MongDB发展迅猛,有赶超mysql,和oracle看齐的苗头.在这个时候MongoDB也适时的推出了官方的认证考试&quo ...

  4. 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 ...

  5. 高效率使用google

    Google良好的搜索和易用性已经得到了广大网友的欢迎,但是除了我们经常使用的Google网站.图像和新闻搜索之外,它还有很多其他搜索功能和搜索技巧.如果我们也能充分利用,必将带来更大的便利.这里我介 ...

  6. 【转】H264视频编码级别说明profile level Encoder

    版权声明:本文为博主原创文章,未经博主允许不得转载. 首先要阐明所谓的AVC其实就是H.264标准,是由ITU-T和ISO/IEC组成的联合视频组(JVT,Joint Video Team)一起开发的 ...

  7. 如何使用Google APIs和Google应用系统集成(7)----在里面JSON兑换XML数据处理,JSON数据包括违规XML数据规范:XML节点名称不支持号码Java解

    笔者电话Google Calendar APIs的GetColors方法,其中(有关详细信息Google Calendar API已经Google API看到我的博文介绍的其余部分,目前,我们只取Go ...

  8. [转]The Production Environment at Google

    A brief tour of some of the important components of a Google Datacenter.   A photo of the interior o ...

  9. 多线程下载英文Google地图

    1. pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&quo ...

随机推荐

  1. 关于sharepoint2013的SPUtility.GetGenericSetupPath()方法过期解决办法

    有个时候需要读取layouts下的xml文件,因此需要知道路径,以前在SP2010用的SPUtility.GetGenericSetupPath()方法获取.现在SP2013提示过期否决 看2个结构分 ...

  2. DevExpress .NET界面开发示例大全

    说到做.net界面开发,很多人应该都会想到DevExpress. 它的 .net界面开发系列一共有7个版本:WinForms.ASP.NET.MVC.WPF.Silverlight.Windows 8 ...

  3. Wix安装程序中判断是否安装的.net framwork 4.5

    <PropertyRef Id="NETFRAMEWORK40FULL"/> <PropertyRef Id="NETFRAMEWORK45" ...

  4. Round in Oracle/VBA

    VBA的 Round采用的是银行家算法(rounds to the nearest even number) Round(1.5) = 2 Round(0.5) = 在Oracle中实现银行家算法 S ...

  5. 基于 VLC 的 Android 多媒体解决方案

    前段时间项目中需要在 Android 中播放视频.流媒体.查看监控,就研究了一下 Android 多媒体解决方案. 查找了一下,大致有如下几种: Android MediaPlayer FFmpeg ...

  6. Android 查看手机中所有进程

    真机测试的时候发现DDMS对进程的显示很不给力,一些进程管理工具又不显示包名. 所以就自己写了一个小程序,查看自己手机中的进程,显示当前时间和进程的包名: 程序运行截图: 布局: <Linear ...

  7. [Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)

    温馨提示      建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续本节内容.   ...

  8. NSFileHandle

    /* 文件处理句柄要完成的工作:  相当于C中的文件操作,诸如 打开,读,写,关闭,修改文件偏移量等行为 类名:   NSFileHandle 注意: 操作句柄时,重点把握文件的偏移量在哪个位置 重点 ...

  9. Android工程师常见面试题集答案

    13.描述一下Android的系统结构? android系统架构分从下往上为linux 内核层.运行库.应用程序框架层.和应用程序层. linuxkernel:负责硬件的驱动程序.网络.电源.系统安全 ...

  10. 数据结构--用Objective-C简单实现的数据结构:栈

    前言:最近在学习数据结构,这里用Objective-C简单实现了一下栈.用Objective-C确实好容易,因为我使用了Cocoa框架提供了NSMutableArray作为存储元素的集合,操作集合元素 ...