《Google软件测试之道》心得笔记1
Google软件测试介绍
- 把开发和测试融合在一起——开发和测试必须同时展开
- 开发人员自己要对自己写的代码负责,比专职的测试人员更适合做测试工作。
- 测试开发工程师SET
- 对于Google拥有很少量的测试人员的情况下,还可以取得不错的成果,核心原因在于Google从来不会再一次产品发布中包含大量的功能,实际上,做法恰恰相反,在一个产品的基本核心功能实现之后,就立即对外发布使用,然后从用户那里得到真实的反馈。
软件测试开发工程师(SET)
- Google的四大主要开发语言:C++、Java、Python、Js
- 一个产品如果在概念上还没有完全确定成型时就去关心质量,这就是优先级混乱的表现。许多来源于Google百分之二十努力的产品原型,在其以后的dogfood或beta版本发布时,还要经历重新设计,原始代码保留的概率几乎为零。很明显,在试验初期阶段强调测试是一件非常愚蠢的事情。
- 项目的技术负责人和发起人要做的第一件事就是设计文档。最早期的项目设计文档,主要包括项目的目标、背景、团队成员、系统设计。这是一个动态的文档,随着项目的演化也在不断地保持更新。
- 单元测试、代码级别测试、白盒测试、集成测试、系统测试、端到端测试
- UI界面的自动化测试——来模拟用户操作,像“单击向后按钮……回到之前页面……”
- 模糊测试:发送随机的输入数据给被测应用系统
- 小型测试:小型测试是所有测试类型里范畴最小的,一般集中精力在函数级别的独立操作与调用上。对于小型测试的执行频率更加频繁,并且很快就会发现问题,并且要减少依赖。
- 中型测试:中型测试是验证两个或多个模块应用之间的交互,和小型测试相比,中型测试有着更大的范畴且运行所需要的时间也更久。在Google之外,中型测试经常被称为“集成测试”。对于中型测试,鼓励使用模拟技术(mock)来解决外部服务的依赖问题。
- 大型测试:在Google之外通常被称为“系统测试”或“端到端测试”,大型测试在一个较高的层次上运行,验证系统作为一个整体是如何工作的。这涉及应用系统的一个或所有子系统,从前端界面到后端数据储存。
- 大型测试优缺点:
- 测试最根本最重要的:在考虑外部系统的情况下应用系统是如何工作的;
- 由于对外部系统有依赖,因此它们是非确定性的;
- 很宽的测试范畴意味着如果测试运行失败,寻找精准失败根源就会比较困难;
- 测试数据的准备工作会非常耗时;
- 大型测试是较高层次的操作,如果想要走到特定的代码路径区域是不切实际的,而是一部分却是小型测试的专长。
- 中型测试的优缺点:
- 由于不需要使用mock技术,且不受运行时刻的限制,因此该测试是从大型测试到小型测试之间的一个过渡;
- 因为它们运行速度相对较快,所以可以频繁地运行它们;
- 它们可以在标准的开发环境中运行,因此开发人员也可以很容易运行它们;
- 它们依赖外部系统;由于对外部系统有依赖,因此它们本身就有不确定性;
- 它们的运行速度没有小型测试快
- 小型测试的优缺点:
- 为了更容易地被测试到,代码赢清晰干净、函数规模较小且重点集中。为了方便模拟,系统之间的接口需要有良好的定义;
- 由于它们可以很快运行完毕,因此在有代码变更发生的时候就可以立刻运行,从而可以较早地发现缺陷并提供及时的反馈;
- 在所有的环境下它们都可以可靠地运行;
- 它们有较小的测试范畴,这样可以很容易地边做场景与错误条件的测试,例如一个空指针;
- 它们有特定的范畴,可以很容易地隔离错误;
- 不要做模块之间的集成测试,这是其他类型的测试要做的事情(中型测试);
- 有时候对子系统的模拟是有难度的;
- 使用mock或fake环境,可以不与真实的环境同步。
- 关于测试类别的总结:
小型测试是为了验证一个代码单元的功能;中型测试验证两个或多个横块之间的交互;大型测试是为了验证整个系统作为一个整体是如何工作的。小型测试带来优秀的代码质量、良好的异常处理、优雅的错误报告;大中型测试带来整体产品质量和数据验证。对于测试的占比,总体上有一个经验法则:即70/20/10原则:70%的小型测试,20%的中型测试,10%的大型测试。
- 测试运行要求:
- 每个测试和其他测试之间都是独立的,使它们就能够以任意顺序来执行;
- 测试不做任何数据持久化方面的工作,在这些测试用例离开测试环境的时候,要保证测试环境的状态与测试用例开始执行之前的状态是一样的;
- 在测试执行系统中,让每个测试用例获取一个未使用的端口,并让被测系统动态地绑定到这个端口上留在测试执行之前,为每一个测试用例在临时目录下创建目录和文件,并使用独一无二的目录名;
- 每个测试运行在自己的数据库实例之上,使用与环境隔离的目录和端口。
- 依赖于自动化测试去验证产品功能。
- 如何优化每次代码变更后触发的测试执行次数。
- Google寻找SET期望:对测试有强烈兴趣和天资的开发人员。一个通用且有效的招募优秀SET的方法是:给候选者和其他开发角色一样的编程问题,并考察他们在处理质量问题与测试方面的方法。
- 注意垃圾收集、类型安全、编译和运行时刻的不同关注点。
- 普通的候选人可以做到:
- 在通过编写代码解决问题的过程中很少遇到问题。在编码时,函数重写没有麻烦,很少出现基本语法错误,也不会混淆不同语言的语法和关键词;
- 在理解指针方面没有明显的错误,或者没有分配不必要的内存;
- 在代码开始的地方做一些输入验证,避免由于取值到空指针等引起比较麻烦的程序崩溃;
- 理解运行时刻效率或陈旭代码的所消耗的时间;
- 在被指出代码中有小问题时,可以修正;
- 写的代码干净易读;
- 在输入为一个A或null的时候,走查代码确保能正常工作;
- 会比较有条理地或体系化地提供特定的字符串而不是随机的字符串;
- 专注于产生有意义的测试数据,考虑如何去运行大型测试和使用真实环境的数据做测试。
- 更优秀的候选人:
- 考虑使用64位整型int64作为计数器变量和返回值,为了以后的兼容性和避免用户使用非常长的字符串而导致溢出;
- 在代码注释中对条件假设和常量做解释说明;
- 在有很多不同的数据输入时可以走查代码,修复所发现的错误;
- 在被要求停止之前,不停地尝试优化解决方案;
- 在并发线程中调用这个函数,去查看在串扰、死锁和内存泄漏方面是否存在问题;
- 构建长时间持续运行的测试场景;
- 在构建测试用例、测试数据的产生方法、验证和执行上保持浓厚的兴趣。
软件测试工程师(TE)
- Google的关于TE职责的一般性描述:
- 测试计划和风险分析;
- 评审需求、设计、代码和测试;
- 探索式测试;用户场景;
- 编写测试用例;
- 执行测试用例;
- 众包(大众一块进行测试);
- 使用统计、用户反馈。
- 期望的测试计划具有的一些特性:
- 及时地更新;
- 描述了软件的目标和卖点;
- 描述了软件的结构、各种组件和功能特性对的名称;
- 描述了软件的功能和操作简介;
- 应该描述必测点;
- 应该能在测试中提供有用的信息,从而帮助确定进展以及覆盖率上的不足。
- 风险:影响风险的因素很多,试图精确地、定量地计算风险比环节风险还要麻烦。在Google,我们确定了两个要素:失败频率和影响。风险是一个定性的相对值。
- 风险缓解:
- 我们可以围绕风险大的能力点编写用户故事,并从中确定低风险的使用场景,然后反馈到开发团队,请他们有针对性地增加约束;
- 可以编写回归测试用例,以确保问题在重现时可以被捕捉到;
- 可以编写和运行引发故障的测试用例,来推动开发实现恢复和回滚的特性;
- 可以插入监听代码,以便更早地检测到故障;
- 可以插入代码监听软件,发现新旧版本间的行为变化以发现回归问题。
- 需要按照风险顺序进行测试。颜色标识
- 测试计划这个任务的时间是以小时到天为单位来计算的。
- 一个孤立的数字意义很小。
《Google软件测试之道》心得笔记1的更多相关文章
- <<google软件测试之道>>读书笔记
以前一直从开发的角度来看待测试,看完这本书以后感觉错了,难怪之前公司的测试一直搭建不起来 1.开发人员,开发测试人员,测试人员 * 开发人员负责开发 * 开发测试人员近距离接触代码,负责编写测试用例, ...
- 《Google软件测试之道》基础
<Google软件测试之道>,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看... 个人的一种学习习惯 ...
- google软件测试之道读后感(一)
这几天在抽空读一本新书,久负盛名的<google软件测试之道>.之前在网络上一点一点地看过它的英文版,很受触动,还做了很长的读书笔记,现在看到了中文版,才恍觉之前的好些理解存在不恰当的地方 ...
- 《Google软件测试之道》简介
<Google软件测试之道>,一直听朋友讲起这本书,出于琐事太多,一直没机会拜读,最近部门架构觉得我们IT部门的技术太low,就给我们挑选了一些书籍,让我们多看看... 个人的一种学习习惯 ...
- 《Google软件测试之道》- Google软件测试介绍
<Google软件测试之道>- Google软件测试介绍 2015-05-21 目录 1 质量与测试 2 角色 3 组织结构 4 爬.走.跑 5 测试类型 相关链接 与Micro ...
- google软件测试之道--读后笔记
看完google软件测试之道,以前有认真看过一次,今天又重新看了一遍. 在google,测试人员严格区分为SET和TE.SET前期深度参与项目的开发,推动开发人员的自测,从破坏者的角度寻 ...
- 小课堂week14 Google软件测试之道
读<Google软件测试之道> 在IT领域,Google是一面旗帜,是一家非常善于思考善于尝试的公司.随着面临挑战的不断增大,传统的测试开展方式也越来越力不从心,这本书讲述的就是一次完整的 ...
- 《Google软件测试之道》【PDF】下载
<Google软件测试之道>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382198 内容介绍 每天,Google都要测试和发布 ...
- 《Google软件测试之道》测试开发工程师
拖延了将近半年的草稿,断断续续的写完了.之前草草翻看完这本书,关注点主要在TE上,而关于SET的部分则只是浏览,最近后知后觉,又翻出了这本书,重新看了一遍,又有新收获. 就说说Google的SET是如 ...
- 《Google软件测试之道》摘录
以下是最近看的一本书<Google软件测试之道>里的一些摘录,收获很多. 1.讨论测试开发比并没有什么意义,如果你是一名开发人员,同时也是一名测试人员,如果你的职位头衔上有测试的字样,你的 ...
随机推荐
- GAN Generative Adversarial Network 生成式对抗网络-相关内容
参考: https://baijiahao.baidu.com/s?id=1568663805038898&wfr=spider&for=pc Generative Adversari ...
- vi和vim上查找字符串
方法/步骤 1 我们以samba的配置文件为例,搜索一个user的字符串. vim /etc/samba/smb.conf 打开smb.conf 2 命令模式下,输入/user "/&quo ...
- win8系统 重装系统如何删除EFI分区
在PE下(一般重装系统就是在PE下),依次输入如下命令(注意虽然显示的是中文名"磁盘0",但是还是用英文disk 0) list disk select disk 0 clean
- libevent编程疑难解答
http://blog.csdn.net/luotuo44/article/details/39547391 转载请注明出处:http://blog.csdn.net/luotuo44/article ...
- C语言最小生成树prim算法(USACO3.1)
/* ID: hk945801 LANG: C++ TASK: agrinet */ #include<iostream> #include<cstdio> using nam ...
- LoadRunner中存储表格参数------关联数组
主要用到 web_reg_save_param_ex函数("Scope=All",), sprintf( CProdNo,"{CProdNo_%d}",i ); ...
- UNIX网络编程学习(9)--getsockname和getpeername的用法及实例(转)
getsockname和getpeername #include <sys/socket.h>int getsockname(int sockfd, struct sockaddr *lo ...
- 4 自动化构建工具gulp
gulp中文网:http://www.gulpjs.com.cn/ 需要全局安装gulp:$ npm install --global gulp 具体的gulp的使用方法,可以参看gulp中文网的文档 ...
- STM32的精确延时
/*---------------------------------------------------------- 文件名:systick.c 文件描写叙述:sysTick 系统滴答时钟1us中 ...
- 百度接口通过ip获取用户所在地
/** * 百度接口 * 通过用户ip获取用户所在地 * @param userIp * @return */ public static String get ...