只有产品顺利的发布给用户使用并获得良好反馈,整个团队的价值才有所体现。

引言

不知不觉,从13年接手Google Doubleclick Sales Manager到今年7月,4年经历了3个milestone, beta, GA最终和ad exchange集成,一路走来,冷暖自知。
开始前做个调查,大家的项目发布周期是如何的,可以在回复里打数字:

  1. 无固定发布周期
  2. 每周发布
  3. 每两周发布
  4. 每月发布
  5. 更长的发布周期

DSM如何做发布

DSM项目的发布情况,分为两大块:
常规的每周发布和新功能发布

常规的每周发布

  • 上线的标准很简单,就是没有P0/P1的bug

  • 发布流程见下图

 
  • 从TAP(Test Automation Platform)中自动获取最近三小时跑绿的Changelist(CL),然后build新的版本
  • 发布到QA环境
  • QA环境的自动化测试和手工测试
  • 如果发现P0/P1的bug,提交给开发修复,重新打补丁发布到QA
  • QA环境验证bug后并sign off后发布到Canary环境
  • Canary环境停留3到6个小时,检查监控系统eye3
  • eye3系统没有错误报告,最终上线

    • 下图是Rapid(Release Automation Platform in DevInfra)系统中一个完整的发布过程

       
    • Rapid系统自动创建一个候选包

       
    • 同时运行webdriver自动化测试(TAP上一般执行UT和ServiceTest, UI test耗时单独跑)

       
    • 将候选包发布到QA环境,自动创建当周的release bug和hotlist, 上到QA环境后运行screen diff

       
    • QA测试完成Sign off后陆续发布到Canary和Prod环境

新功能发布

  • 每个新功能都有单独的功能开关

     
  • 每个新功能都建立一个新功能类别的bug,让所有参与人有一个统一的沟通渠道,保证信息是同步的

     
  • 新功能上线申请表,有若干检查项

     

     

     

     
  • 如果新功能上线发现重大问题,可以快速的关闭

碰到的问题与解决

  • TAP可能不能获取到最近三小时绿色CL,怎么办?

    • 建立一个build cop的三人小组,每周五和每周一关注TAP greenness

       
    • 如果超过10个小时TAP还是红色,需要紧急处理,保证每周发布有可靠的基准CL

       
  • 回归测试中有可能P2的bug实际是P1的

    • 测试完成后,发现的bug经过TLs(Tech Leader)再次审核来决定P2的bug是否需要Cherrypick
    • 回归测试结束后需要有个sign off的过程
  • 如何知道新功能可以测试了?

    • 从Feature bug中拿到开发最后一个CL,在cl-status(一个辅助工具)里查询

       
    • 辅助的Chrome插件工具

       
  • 怎样方便的获取错误日志信息,有助于开发快速定位修复发现的bug

    • 辅助的Chrome插件工具

       
  • 上线后发现问题如何处理?

    • Eye3监控机制
    • Oncall机制
    • 回滚机制
    • Cherrypick机制
    • 剖尸机制

达成

  • 确定了上面的流程,QA团队一周的时间分配自然也就有了

     
  • 统计每周发布情况了解产品是否稳定

     
  • 顺利运行后大大缩减回归时间,同时CP(Cherrypick)的数量减少

  • 有更多的时间投入到新功能测试以及自动化测试

后记

  • 后续的改进:

    • API加速发布: 将API和FE进行剥离,API通过高覆盖率的自动化测试,从一周一发到一周四发
    • 兼容性测试: API和FE剥离后,API会有三个版本比FE新,引入兼容性测试,保证FE稳定
    • 上线时间定在每周四: 这样有问题周五处理,不用周末加班
  • 关于每周发布
    几年的每周发布做下来,发现每周发布对团队的压力很大,基本每天有明确的任务,虽然回归时间从2天减到1天,但是每周超过3个新功能没有任何喘息时间,不利于团队成员反思。个人体会最理想的情况还是两周一次发布。

结尾

从事测试12载,一直比较喜欢参与面向客户的产品,不管这几年测试行业的称谓从测试到测试开发到工具开发,还是觉得自己就是测试工程师。近几年发现,仅仅做测试执行,学习测试技术运用,远远没有推动整个团队的测试质量提升更有成就感。

聊聊Google DSM产品的发布的更多相关文章

  1. Flutter 2022 产品路线图发布

    为了提升产品的透明性,每年年初 Flutter 团队都会发布今年度的产品路线图,以帮助使用 Flutter 的团队和开发者们根据这些优先事项制定计划. 2022 年 Flutter 团队将重点通过关注 ...

  2. fir.im Weekly - 聊聊 Google 开发者大会

    中国互联网的三大错觉:索尼倒闭,诺基亚崛起,谷歌重返中国.12月8日,2016 Google 开发者大会正式发布了Google Developers 中国网站 ,包含了Android Develope ...

  3. Google Developers中国网站发布!(转)

    Google Developers 中国网站是特别为中国开发者而建立的,它汇集了 Google 为全球开发者所提供的开发技术资源,包括 API 文档.开发案例.技术培训的视频.并涵盖了以下关键开发技术 ...

  4. 苹果产品时间发布表统计(iPhone、iPad),以及32位和64位机的说明

    之前因为某些原因,需要对apple家族的手机和pad产品做一个上市时间排序,以及分析分别是哪种CPU机型 总结如下: iPad家族: 1.iPad   - 2010.1.27发布 2.iPad 2   ...

  5. 【我的Android进阶之旅】 Google Developers中国网站发布啦!

    今天,Google Developers 中国网站 (https://developers.google.cn) 正式发布! Google Developers 中国网站是特别为中国开发者而建立的,它 ...

  6. Google V8扩展利器发布:v8-native-binding-generator

    用C++扩展Google V8很简单,但是类比较多时还是很烦的.前段时间开发cantk-runtime-v8时,我写了一个代码产生器v8-native-binding-generator,让扩展Goo ...

  7. 聊聊Google face api

    图像处理开源了很多东西,保存下一些基础的东西,以用来follow最新的东西. Google Face API 是什么? Google 的 Face API 用于面部检测,从图片中找出人的面部,以及位置 ...

  8. 围绕Buganizer的产品流程

    做技术的一定知道缺陷跟踪系统(bug系统),更不用说做测试的了,不过普遍都认为这系统是用来记录bug的,其实在google内部,这套系统是产品/项目围绕的核心.Google Buganizer扩展了类 ...

  9. 如何在Google Play商店发布多个版本apk

    原文:http://android.eoe.cn/topic/android_sdk 多种apk的支持是一个特点在Google Play,它允许你发布不同的APKs为你的应用匹配不同尺寸的设备.每个A ...

随机推荐

  1. java实现截图功能

    package Jietu; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import j ...

  2. 注意&&前后两个表达式有顺序的差别

    //插入排序 public static void insertSort(int[] arr) { // 遍历所有数字 for (int i = 1; i < arr.length; i++) ...

  3. 更改Windows更新源(解决公司内部网络无法下载语言包或更新的问题)

    打开注册表 找到HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate 将WUServer.WUStatusServe ...

  4. Python3.x - 字符串

    Python3 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号( ' 或 " )来创建字符串. var1 = 'hello world' var2 = "he ...

  5. 【SHELL】:定时任务删除指定目录

    现有一个需求,需要定时删除积累过久的目录,并且部分目录不可删除.在此,我们分析了一下该父目录的命名结构:非连续性数字命名,部分目录中包含a.txt文件.如下图所示: 在此,我们对此可作如下操作,获取该 ...

  6. select 下拉选择自动到textarea框

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. python学习笔记-基础、语句、编码、迭代器

    #python的优缺点优点:Python简单优雅,尽量写容易看明白的代码,尽量写少的代码.缺点:第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地 ...

  8. MySQL Workbench 创建数据库,添加新表,添加字段

    建立数据库 第一步: 第二步: 第三步: 如图弹出弹框,继续点击Apply按钮,最后点击Finish按钮完成数据库的建立 创建表与添加字段 双击!!!  一下刚刚建立好的数据库,然后再创建表,不然会出 ...

  9. python之 类对象 类方法 实例对象 实例方法 静态方法

    实例对象1. 创建的时间:使用 类名()的时候,就创建一个实例对象2. 实例属性:怎样添加 只要是一个变量能够指向这个实例对象,那么这个变量.xxxx = 111就是给其添加一个实例属性 特点: 跟着 ...

  10. Spark参数详解 一(Spark1.6)

    Spark参数详解 (Spark1.6) 参考文档:Spark官网 在Spark的web UI在"Environment"选项卡中列出Spark属性.这是一个很有用的地方,可以检查 ...