全程软件测试(一一七):白盒测试方法—读书笔记

一、 测试方法的分类

  • 静态测试方法
  • 动态测试方法
  • 1 静态测试方法

  • 不执行程序的测试方法。
  • 主要用于测试文档和代码(文档)。
  • 2 动态测试方法

  • 通过运行程序来发现缺陷的测试方法。
  • 黑盒测试方法

    白盒测试方法

    2.1 黑盒测试

    也称为功能测试、数据驱动测试、基于规格说明书测试。

    从用户观点出发,主要以软件规格说明书为依据,对程序功能和接口进行测试,对输入输出数据之间的对应关系进行测试。

    它不涉及到程序的内部结构,如果外部特性本身有问题或规格说明书有问题,则无法察觉。

    安全性测试、互操作性测试也属于功能测试。

    方法如大纲法、场景法、等价类、边界值、决策表、错误猜测等。

    黑盒测试方法还用于测试软件的非功能性特性。

    非功能测试用于测试系统工作的怎么样,包括但不限于:

    1、可用性/可靠性/稳定性/健壮性/可恢复性测试

    2、可维护性测试

    3、易用性测试

    4、可移植性/兼容性测试

    5、配置测试

    6、文档测试

    7、国际化测试/本地化测试

    当不涉及程序内部结构时,上述测试类型也使用黑盒测试方法。

    2.2 白盒测试

    也称结构测试、逻辑驱动测试、基于程序本身的测试、程序员测试。

    结构测试需要完全了解程序结构和处理过程,按照程序内部逻辑测试程序,检验程序中每条通路是否按照预定要求工作。

    2.3 黑盒测试与白盒测试的区别

    二、 静态测试方法

    静态测试方法包括评审和静态分析方法。

    1 评审

    1.1 评审的含义、过程和目的

    1.2 评审的角色

    1.3 评审的分类

  • 文档审查
  • 代码审查
  • 代码走查
  • 1.4 代码审查

    1.4.1 代码审查的含义、过程和目的

    1.4.2 代码审查的方法和范围

  • 具体做法方法
  • 互查

  • 通常合格的代码应具备正确性、清晰性、规范性、一致性和高效性,概括起来,代码审查的工作涵盖下列方面
  • 1、业务逻辑的审查

    2、算法的效率

    3、代码风格

    if(1==j) 与 if(j==1),问:以上哪种代码风格较好?

    if (j>MAX_NUM) 与 if (j>2000),哪个好?

    4、编程规则

    1.5 代码走查

    2 静态分析方法

    2.1 数据流分析

  • 使用了未声明/定义的变量
  • 变量声明了没有使用
  • 2.2 控制流分析

    2.3 复杂度分析

    复杂度分析给出一组能描述程序代码的复杂度特征的度量。

    计算复杂度

    3 静态测试的意义

    4 静态测试可以发现的缺陷

  • 引用一个没有定义值的变量;
  • 从未使用的变量;
  • 模块和组件之间接口不一致;
  • 不可达代码(unreachable code)或死代码(dead code);
  • 违背编程规则;
  • 安全漏洞;
  • 代码和软件模型的语法错误等。
  • 5 一些静态分析工具

    [OSS]代表开源软件,[PROPRIETARY]代表付费软件。

    三、 白盒测试方法

    1 单元测试用例的设计方法

  • 白盒测试方法
  • 黑盒测试方法
  • 以白盒测试方法为主,并适当地结合黑盒测试方法
  • 2 白盒测试方法

  • 逻辑覆盖法
  • 1、语句覆盖

    2、判定覆盖

    3、条件覆盖

    4、判定-条件覆盖

    5、条件组合覆盖

  • 路径覆盖法
  • 3 白盒测试方法的步骤

    3.1 获得需求、获得/画出程序流程图/算法图

    3.2 画出控制流图

    根据需求来画

    根据算法图/流程图来画

    弄清预期结果

    3.3 选择覆盖方法设计测试用例

    3.3.1 语句覆盖法 C0

  • 目标
  • 程序中的每个可执行语句至少被执行一次。

  • 度量(覆盖率)
  • 被执行的语句数/所有可能的语句数。

    被执行的路径数/所有可能的路径数。

    用例

    a=2,b=1,c=6

    用例对语句的覆盖率:100%

    用例对路径的覆盖率:25%

    语句覆盖能发现语句错误

    语句覆盖不能发现逻辑错误/条件错误

    3.3.2 分支/判定覆盖 C1

  • 目标
  • 程序中的每个判定的取真分支和取假分支至少执行一次。

    用例

    a=2,b=1,c=6

    a=-1,b=1,c=1

    用例对语句的覆盖率:100%

    用例对路径的覆盖率:50%

  • 分支/判定覆盖能发现逻辑错误
  • 分支/判定覆盖不能发现组合判断中的条件错误
  • 3.3.3 条件覆盖 C2

  • 目标
  • 程序每个判定中每个条件的可能取值至少满足一次。

    未必比 C1 更全面。

    不能发现逻辑错误。

    用例

    思考:覆盖率?

    3.3.4 判定-条件覆盖 C1+C2

  • 目标
  • 每个条件中的所有可能取值至少执行一次,同时,每个判定的可能结果至少执行一次。

    可能会导致某些条件掩盖了另一些条件。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年2月16日
    下一篇 2022年2月16日

    相关推荐