吴家荣
前端学徒。SYSU。
软件测试开发工程师
小组:Developer is tester
成员:吴家荣 景 涛 陈兆鹏 郭路文 梁华淇 何金岳
@John_sysu 吴家荣 github.com/wujr5
第一部分:简单介绍了Google软件测试的概念,角色,组织机构,流程以及测试类型
第二部分:分别介绍软件测试中涉及的角色以及他们的主要作用
第三部分:简要介绍Google的测试缺陷以及改进的方向
第一章:Google软件测试介绍
第二章:软件测试开发工程师(SET)
第三章:测试工程师(TE)
第四章:测试工程经理(TEM)
第五章:Google软件测试改进
本书是以角色介绍为组织架构的
软件开发工程师是一个传统上的开发角色,他们的工作室实现最终用户所使用的功能代码
软件测试开发工程师,也是一个开发角色,只是工作重心在可测试性和通用测试基础框架上
测试工程师是一个和SET关系密切的角色,有自己不同的关注点——把用户放在第一位来思考,代表用户的利益。
测试工程师和测试开发工程师分别致力于支持用户和开发工程师。另外还有一种角色可以把这两者联系起来,那就是测试工程经理(TEM)。测试工程经理是作为独立贡献者的一个技术岗位,负责所有的支持团队(开发、产品管理、产品发布、文档等)之间的联络
Google从来不会再一次产品中发布大量的功能,实质上,在一个产品的基本核心功能实现之后,就立刻对外发布使用,然后从用户哪里得到真实反馈,再进行迭代开发。
金丝雀版本:这是每日都要构建的版本,用来排除过滤一些明显不适宜的版本。
开发版本:这是开发人员日常使用的版本,一般是每周发布一个。
测试版本:这是一个通过了持续测试的版本。
Beta或发布版本:这个版本是由非常稳定的测试版本演变而来,经历了内部使用和通过所有质量考核的一个版本,也是对外发布的第一个版本。
软件测试开发工程师在其中担任了什么任务呢?
为什么他们和软件开发工程师的地位是一样的?
为什么招聘SET比招聘SWE更难呢?
SET首先是工程师的角色,他使得测试存活于先前讨论的所有Google开发过程之中。SET是软件测试开发工程师。最重要的一点,SET是软件工程师,正如我们招聘宣传海报和内部晋升体系中所说的那样,是一个100%的编码角色。
测试是应用产品的另一种功能,而SET就是这个功能的负责人
一句话概括SET就是,懂开发的测试工程师
SET开发的是测试产品,是与产品本身息息相关的测试相关的功能产品
20%的工作
功能远比质量重要
一个产品如果在概念上还没有完全确定成型时就去关心质量,这是优先级混乱的表现。许多来源于Google20%努力的产品原型,在其以后的dogfood或beta版本发布时,还有经历重新设计,原始代码保留的概率几乎为零。很明显,在实验初期阶段强调测试是一件非常愚蠢的事情
产品被证明有价值之前,难以吸引SET的关注
SET需要做的东西很多,让项目进行自动化测试的计划是他们的目标
首先,把容易出错的接口做隔离,并针对他们创建mock和fake
mock是指对外面依赖系统的模拟,在运行时刻可以根据假设的需求提供期望的结果
fake对象是一种虚假的实现,内部使用了固定的数据或逻辑,只能返回特定的结果
可测试性
提交队列和持续集成
为了测试方便,Google自己定义了一套测试命名规则。
小型测试:验证代码单元的功能,通常是单元测试。
中型测试:验证两个或者多个模块应用之间的交互。
大型测试:验证系统作为一个整体是如何工作的。
一言以蔽之:既要懂开发,也要懂测试。
git和gitlab
版本控制
分支管理
协同开发
自动化构建、自动化测试、持续集成
By 吴家荣