原文:  http://blog.sina.com.cn/s/blog_6cf812be0102vbnb.html

前端时间看了google测试之道,收获了一些,在此总结下并打算写一个系列blog,顺便分享给各位,也希望大家多交流,多讨论。另外需要强调的是我说到的一些google测试理论和淘宝的相关测试实践,并不代表所有淘宝测试团队都会这样去做,仅仅代表我的测试团队会做的一些思路上的改变和实践,肯定有不成熟的地方,欢迎讨论。最后需要强调的是,我这边得到的一些google做法仅限于google测试之道那本书,其他的我真不知道,如果有冲突不一致的地方,欢迎大家指出来。

 
为了让这些blog分享更有逻辑性,我打算分几个专题来分享google测试相关的测试理念。
google测试分享-SET和TE
google测试分享-分层测试
google测试分享-GTA
google测试分享-测试经理
google测试分享-问题和挑战
google测试分享-未来测试 
 
      首先我们看下SET和TE的简要说明,然后再看看他们的工作职责有何不同,在项目中发挥什么样的作用。SET就是测试开发工程师(software engineer in test),TE就是测试工程师(test engineer)。我们先不说国内是如何定义这两个不同的职位,也不去关心国内是如何把测试人员/测试工程师/QA 叫成 测试开发工程师,这个话题太大了,而且因人(公司、团队、文化)而异,在这里不讨论了,这里只说明google或理想中的公司是如何来区分SET和TE的。
 
      首先我们看看自己团队中的测试人员是做了哪些测试活动:功能测试(手工和自动化)、性能测试、安全测试等。这里面我要强调的是功能测试的演变。
(1)测试人员从黑盒角度做系统测试,也从用户角度来进行测试设计和测试执行,包括系统质量的全面评估
(2)自动化发展起来了,特别是页面自动化测试,测试人员开始在项目测试上线后编写测试脚本进行自动化回归测试,同时之前的工作不变
(3)随着页面自动化测试的ROI越来越低,接口自动化测试开始了,测试人员在项目过程中或项目上线后针对产品的重要接口进行接口测试脚本的编写,同时之前的工作不变
(4)随着UT的重要性和开发自测的提倡,测试有时候还需要做UT和code review,还要做验收测试,同时之前的工作不变
个人感觉国内只要把测试工作里面包括编写自动化脚本的测试人员都叫测试开发工程师(偶尔也包括测试框架的二次开发等),这里先不谈专门的测试工具开发部门。
 
      我们先来谈谈测试开发工程师(SET)的工作职责吧,首先SET的重点是从开发角度去做测试工作,会把主要精力投入在系统设计和编码阶段。开发人员关注某个功能最优实现方案,SET要有整体产品的视野。SET在设计阶段,帮助开发人员完成代码复用和模块交互方面的设计,SET在设计review的时候,保持目的性:完整性、正确性、一致性、设计、接口与协议、测试(可测试性)。SET的自动化测试相关工作包括隔离容易出错的接口,并针对它们创建mock和fake、构建一个自动化测试工程,控制mock系统的创建和运行,而开发人员使用这些mock接口做一个私有构建,针对这个构建进行自动化测试运行。
 
      另外,SET的第一要务是产品代码的可测试性,同时作为整个项目的质量顾问提供给项目组其他人员关于质量保证的建议。他会主导UT和CT(组件测试)的测试执行工作,同时负责测试自动化体系的长期有效性。由于SET持续的关注自动化测试,他有可能会忽视人工跟踪bug库和每个发布的测试的重要性。但是由于他在系统设计和编码的深入,SET不仅可以看到树木而且可以看到森林;是对测试有强烈兴趣 和天资的开发人员。
 
      接下来我们谈谈测试工程师(TE)的工作范围。首先TE的重点是从用户角度去做测试工作,会把主要精力投入在系统测试阶段,包括自动化回归和手工的探索式测试。TE可以在多个产品之间流转,了解不同的产品技术,为不同的产品进行系统测试和探索式测试。TE的重点在于评估对用户的影响以及软件产品整体目标上的风险,职责范围最广。TE可以从用户产生的影响的角度来说明为什么一个功能不能上线或整个发布不能上线。
 
      从项目的角度来看,项目前期主要是SET的任务,项目后期是面向TE的任务。当然并非所有的产品都需要TE的介入。早期的产品测试计划TE投入不多(特别是UT和CT占主导的产品),后期产品接近尾声,TE引导做探索式测试。但是在需求阶段,TE擅长发现需求中的模糊之处,分析沟通不明确的地方,而且TE角色需要敏锐的洞察力和领导力,很多高级测试经理来自于TE。所有说TE的工作经常需要去打破常规流程,可以在任何时间进入项目,必须迅速评估项目、代码、设计和用户的当前状态,然后决定首要的关注点(这些东西在国内公司的测试团队中从来不被重视,他们认为no code,talk is cheap)。
 
       这里罗列下TE的主要职责:测试计划和风险分析;需求评审、设计、代码和测试;探索式测试、用户场景、编写TC、执行TC、众包、使用统计、用户反馈。我们都知道项目的过程中,风险始终存在的,那么TE是缓解风险活动的协调人,决定对风险较大的领域进行内部测试,要求开发人员和SET增加回归测试。也可以借助dogfood用户、beta用户以及众包进行测试。TE对风险最高的领域负有个人责任,必须编写测试指导(类似于测试方案)。
 
      真正在项目过程中,TE是需要TE了解SET和开发人员的测试后,评估这些测试对风险的影响。高风险区域的每个bug都应该有一个回归测试用例与之对应。TE还要仔细思索高风险的区域,咨询可能的回滚和恢复机制。对于风险较低的区域,可以降低要求,为这些区域编写特定的测试用例是得不偿失的,我们更多的是选择探索式测试,或众包测试。还需要强调的是,TE也会在项目过程中进行系统测试级别的自动化测试脚本编写、CT和ST的自动化测试监控和脚本维护工作,但这不是他工作的核心。
 
     总体来说,TE是稀缺个体,是技术人,关注用户,能在系统疾病和端到端的视角上理解产品。他们是无情的、伟大的谈判专家,最重要的时,他们富有创造性、善于应对模糊性。
 
      如何招聘到好的TE呢,我们需要考察候选人计算机科学和技术技能,也要测试潜力。TE经常能担当领导角色,因为和SET相比,他们站的更高、看的更远,能给理解各自设计问题和风险。我们寻找的是对于事物结构、对于变量和配置的组合的各种可能性和意义的好奇心。是关于事物应该如何工作的强烈感觉以及清晰表达的能力,这里的要点是,给出一个需要各种输入和环境条件的测试问题,请候选人列举出最有意义的可能。另外,就是要考察TE所需要的处理模糊性、反驳槽糕想法的能力。还要考虑比如给开源项目提bug、通用化自己的工作以提高复用性的人。
 
      TE经常在系统测试阶段应用探索式测试的测试方法,而应用探索式测试,首先快速找到哪些测试模式适用于被测产品;多观摩团队其他人提交的bug、讨论发现策略,对每个人来说都是一种极好的学习体验。
 
     SET可能会忽视人工跟踪bug库和每个发布的测试的重要性。TE负责组织包括SET在内的整个测试团队的测试战略。当SET不清楚从何处开始实现测试霍工具时,TE会展示最需要测试的地方并以bug数据做支持。TE还能用真实数据说明他们的方案在预防bug方面的有效性如何。
 
     在google,自动化测试发现bug的比例很多,相比于手工测试。最后,一个令人赞叹的产品背后,总有一个构成多样性的测试团队,包括SET和TE。
 
----后记
      对于TE的描述,某些人可能觉得比较虚,还是SET经常写code实在。国内的测试团队,基本上把SET的工作和TE的工作合二为一,放在一个人的身上,大家其实也看到了SET和TE的技术和要求是不一样的,我们测试团队的测试开发工程师都能很好的具备SET和TE的能力吗,我们真正的测试工作重心到底是什么呢?我们的测试开发工程师都能在产品的测试过程中发挥这么多的作用吗?大家可以自己思考下。
 
     说实话,SET和TE在google的自动化测试过程中的具体差异和细节讲的不是很清楚,没关系,下一个主题会描述的更加清楚。下一个主题:google测试分享-分层测试。

转:google测试分享-SET和TE的更多相关文章

  1. 转:google测试分享-问题和挑战

    原文: http://blog.sina.com.cn/s/blog_6cf812be0102vxer.html 前言:这个系列分享的内容大部分都是出自于<google是如何测试的>的书, ...

  2. 转:google测试分享-测试经理

    原文: http://blog.sina.com.cn/s/blog_6cf812be0102vode.html 前言:这个系列分享的内容大部分都是出自于<google是如何测试的>的书, ...

  3. 转:google测试分享-GTA

    原文: http://blog.sina.com.cn/s/blog_6cf812be0102viuh.html 上一次分享了google测试分享-分层测试,有很多自动化测试的策略和实施都要有一个重点 ...

  4. 转:google测试分享-分层测试

    原文: http://blog.sina.com.cn/s/blog_6cf812be0102vctg.html 上一次分享了google测试分享-SET和TE,有一些自动化测试的细节没有说清楚,那这 ...

  5. Google测试分享-测试经理

    首先大家可以思考下,google的测试经理角色必须具备什么样的能力.据不完全统计,google的测试经理,超过一半之前都做过TE的角色(大家可以想想为啥):对于与被测产品相关的任何使用问题,测试经理都 ...

  6. 网易测试分享会——“一起打造你想要的QA团队”

    昨天(2016.11.30)参加了网易资深测试专家王晓明的测试分享会——“一起打造你想要的QA团队”,以下为笔者做的归纳总结. 重点 1.让测试更加容易做好.不容易测试的代码,不具有健壮性. 2.Ke ...

  7. 缓存测试分享篇:如何利用测试环境进行灰度测试缓存迁移solo

    此文已由作者王婷英授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 缓存,看到这两个字,第一反应,最近怎么又要弄缓存的改造啊,这个测试好复杂,一不不留心就踩一个线上bug.实在 ...

  8. Google测试精华文章(1) - 测试行为,而非实现

    Your trusty Calculator class is one of your most popular open source projects, with many happy users ...

  9. Google大牛分享的面试秘籍

    我憋了很长时间想写点关于去Google面试的秘籍.不过我总是推迟,因为写出来的东西会让你抓狂.很可能是这样.如果按统计规律来定义“你”的话,这文章很可能让你不爽. 为啥呢?因为啊……好吧,对此我写首小 ...

随机推荐

  1. 【刷题】BZOJ 3365 [Usaco2004 Feb]Distance Statistics 路程统计

    Description 在得知了自己农场的完整地图后(地图形式如前三题所述),约翰又有了新的问题.他提供 一个整数K(1≤K≤109),希望你输出有多少对农场之间的距离是不超过K的. Input 第1 ...

  2. 洛谷 P2258 子矩阵

    题目描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵. 例如,下面左图中选取第2.4行和第2.4.5列交叉位置的元素 ...

  3. 【bzoj3173】最长上升子序列

    Portal --> bzoj3173 Solution 感觉自己需要智力康复qwq 首先题目给的这个序列肯定是一个\(1-n\)的排列,并且插入的顺序是从小到大 仔细思考一下会发现如果知道了最 ...

  4. LOJ #6035.「雅礼集训 2017 Day4」洗衣服 贪心

    这道题的贪心好迷啊~我们对于两个过程进行单独贪心,然后再翻转一个,把这两个拼起来.先说一下单独贪心,单独贪心的话就是用一个堆,每次取出最小的,并且把这个最小的加上他单次的,再放进去.这样,我们得到的结 ...

  5. 【线段树】【CF19D】 Points

    传送门 Description 在一个笛卡尔坐标系中,定义三种操作: \(add(x,y)\),将点\((x,y)\)标记在坐标系上 \(find(x,y)\),查询点\((x,y)\)严格右上方中, ...

  6. 【DP】【CF9D】 How many trees?

    传送门 Description 给你两个正整数\(n,h\),求由\(n\)个点组成的高度大于等于\(h\)的二叉树有多少个 Input 一行两个整数\(n,h\) Output 一个整数代表答案. ...

  7. P1967 货车运输 树链剖分

    题目描述 AA国有nn座城市,编号从 11到nn,城市之间有 mm 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 qq 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最 ...

  8. JS中的匿名函数自执行、函数声明与函数表达式

    先看一段jQuery源码中匿名函数自执行的例子: (function( window, undefined ) { // jquery code })(window); 另外一种常见的写法: +fun ...

  9. Spring MVC 拦截器配置 -- 利用session

    spring-servlet.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns=& ...

  10. CF540 B 贪心

    坑在B题是常态,弱智的日常. 是找中位数不是平均值. 慌了,乱写了 出了一塌糊涂的ZZ代码 特记一下 /** @Date : 2017-08-27 17:25:11 * @FileName: B.cp ...