【读书笔记】《Google软件测试之道》——第2章:软件测试开发工程师(中)

    今天接着上一篇http://www.jianshu.com/p/bcda928981cd,从第2章:软件测试开发工程师的2.1.9(SET的工作流程:一个实例)开始~

    9)SET的工作流程:一个实例

    该实例讲述了如何使用Protocol Buffer定义数据和接口的设计、如何使用C++语言编写源码和测试代码、如何将测试代码加入构建规则,最后形成CL提交审核的整个流程。

    10)测试执行

    只有能加速开发过程的自动化测试才有意义,测试不应拖慢开发的速度。因此,一个可以做代码编译、测试执行、结果分析、数据存储、报表展示的通用测试框架逐渐形成,工程师专注于测试程序的编写、运行的细节留给通用基础执行框架。

    11)测试大小的定义

    a)小型测试

    小型测试是为了验证一个代码单元的功能,一般集中精力在函数级别的独立操作与调用上。在Google之外,小型测试通常就是单元测试。小型测试范畴隔离且没有外部依赖,这让小型测试可以在很短时间内就运行结束。

    b)中型测试

    中型测试是验证两个或多个模块应用之间的交互。在Google之外,中型测试也称集成测试。一般是由SET来组织运行中型测试。小型测试会尝试走遍单独函数的所有路径,而中型测试的主要目标是验证指定模块之间的交互。

    c)大型测试

    在Google之外,大型测试也称系统测试/端到端测试。大型测试在一个较高层次上运行,验证系统作为一个整体是如何工作的。

    12)测试规模在共享测试平台中的使用

    Google不同的测试项目共享测试平台,有可能同时并发提交到Google测试执行系统的项目有多个。一些测试可能极度消耗资源,使得公用测试机器处于不可用状态。因此,Google测试执行系统利用测试规模的定义,把运行较快的任务从较慢的任务中挑选出来。Google测试执行系统在发现任何测试超时,会把这个测试任务取消并报告这个错误。这迫使工程师提供精准的测试规模标签。

【读书笔记】《Google软件测试之道》——第2章:软件测试开发工程师(中)_第1张图片
图1 不同测试规模所需的执行时间和资源使用情况

    13)测试规模的益处

    各测试规模的优缺点,见图:

【读书笔记】《Google软件测试之道》——第2章:软件测试开发工程师(中)_第2张图片
图2 不同测试规模的优缺点

    a)大型测试

    对外部有依赖,非确定性强;测试数据的准备非常耗时;测试失败根源较难定位。

    b)中型测试

    运行速度相对较快;可在标准的开发环境中运行;依赖外部系统有不确定性。

    c)小型测试

    运行速度很快;所有的环境均可运行;测试范围较小,可很容易地做边界场景与错误条件测试;使用mock或fake,可不与真实环境同步。

    Google有许多不同类型的项目,这些项目对测试的需求也不同,小型、中型、大型测试之间的比例随着项目团队的不同而不同。这个比例并不固定,总体上有个经验法则,即70/20/10原则:70%小型测试,20%中型测试,10%小型测试。

    14)测试运行要求

    由于Google的测试执行系统是一个公用环境,因此要求:

    测试之间相互独立,能以任意顺序来执行;

    测试不做任何数据持久化方面的工作,即在测试用例离开测试环境时,要保证测试环境的状态与测试用例开始执行之前的状态一致。

    另外,测试用例要求可“并发”,如果存在两个测试需同一个端口、同一个目录、操作同一张表可能会导致用例失败。

    一个持续集成系统,如果测试失败,为了精确定位哪次代码变更导致测试用例运行失败,可利用依赖分析技术寻找所有可能受影响的模块,针对一个代码变更只运行受影响模块的测试。

    a)对于通用代码库上的变更

【读书笔记】《Google软件测试之道》——第2章:软件测试开发工程师(中)_第3张图片
图3 通用代码库变更

    此时,所有的测试均需要运行。

    b)对于一个依赖项目上的代码变更

【读书笔记】《Google软件测试之道》——第2章:软件测试开发工程师(中)_第4张图片
图4 依赖项目的代码变更

只需要运行受影响的模块,即运行buzz_client_tests即可。

    今天到此为止,下篇从测试认证开始读起~

    今天读完的感受是:更清楚了测试规模的意义,重温了自动化中该注意的点,另外,从整体项目的角度,项目流程、修改后的测试方面也得到了新的认识~

你可能感兴趣的:(【读书笔记】《Google软件测试之道》——第2章:软件测试开发工程师(中))