软件测试期末复习要点 第3章 白盒测试

大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn


文章目录

第3章 白盒测试

  1. 白盒测试:针对被测试程序单元内部如何工作的测试,特点是基于被测试程序的源代码,而不是软件的需求规格说明。

  2. 原则

    1. 保证一个模块中的所有独立路径至少被测试一次。
    2. 所有逻辑值均需测试真值和假值两种情况。
    3. 检查程序的内部数据结构,保证其结构的有效性。
    4. 在上下边界及可操作范围内运行所有循环。
  3. 测试方法

    1. 审查

      • 正式审查四个要素

        1. 确定问题

        2. 遵守规则

        3. 准备

        4. 编写报告

      • 目的

        • 找出软件中存在的缺陷
    2. 走查

    3. 检验

  4. 静态白盒测试(结构化分析):不执行软件

  5. 流图又称程序图:结点、控制流线

  6. 基本结构

    1. 顺序结构
    2. 分支结构
    3. 循环结构
  7. 环形复杂度

    • 是一种为程序逻辑复杂度提供定量尺度的软件度量
    • 常用于基本路径测试法
    • 一个强连通流图线性无关的有向环的个数就是该程序的环形复杂度。
    • 计算方法
      1. V(G)=m-n+p
        • 增加一条出口点到入口点的虚弧线,此时,流图就变成了一个强连通图。
        • m表示有向图G中有向边的个数;
        • n表示有向图中的结点数;
        • p表示有向图G中可分离出的独立连通区域数,为常数1。
      2. V(G)= 强连通的流图在平面上围成的区域数
      3. V(G)= 判定结点数 + 1
  8. 动态白盒测试

    1. 按一定步骤和方法生成测试用例,并驱动相关模块去执行程序并发现软件中的错误和缺陷。
    2. 常采用逻辑覆盖法和基本路径法进行白盒测试用例设计。
      1. 逻辑覆盖法(顺序按发现错误能力递增)

        1. 覆盖方法:
          1. 语句覆盖:每条语句至少执行一次
          2. 判定覆盖:每一判定的每个分支(整个最终结果,与条件覆盖的差别)至少执行一次
          3. 条件覆盖:每一判定中的每个小条件,分别按”真“、”假“至少各执行一次
          4. 判定/条件覆盖:同时满足判定覆盖和条件覆盖的要求
          5. 条件组合覆盖:求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次
          6. 改进的判定/条件覆盖(MC/DC覆盖)
          7. 路径覆盖:所有可能的路径都至少被执行一次
          8. 线性代码序列和跳转覆盖(LCSAJ):它由一段有序的代码序列组成,该序列结束时会跳转到另一个代码序列开始
        2. 覆盖率 =(至少被执行一次的被测试项数)/被测试项总数
      2. 基本路径法(独立路径测试)

        1. 指程序中至少引进一条新的语句或一个新的条件的任一路径
        2. 基本路径测试的基本步骤为:
          1. 根据程序设计结果导出程序流程图的控制流图;
          2. 计算程序的环路复杂度;
          3. 导出基本路径集,确定程序的独立路径;
          4. 根据独立路径,设计相应的测试用例。
      3. 循环测试

        1. 原则:在循环的边界和运行界限执行循环体。
        2. 循环结构
          1. 简单循环
          2. 串接循环(并列循环):各循环独立?简单循环:嵌套循环
          3. 嵌套循环
      4. 数据流测试

        1. 基本概念

          1. c-use:一个变量被用在赋值语句的表达式、输出语句中,或者被当作参数传递给调用函数,或者被用在下标表达式中
          2. p-use:一个变量被用在分支语句的条件表达式中
          3. 我们只关心全局变量的定义和使用,局部定义与使用在研究基于数据流的测试时没有意义
        2. 数据流图(DFG/def-use图)

          • 构造数据流图基本过程:
            1. 计算程序中每个基本块的def 、c-use和p-use。
            2. 将结点集中的每个结点与它对应的def 、c-use和p-use关联起来。
            3. 针对每个具有非空p-use集并且在条件C处结束的结点,如果条件C为真时执行的边1,C为假时执行的是边2,分别将边1、边2与C,!C关联起来。
        3. def-clear路径

          • 假设变量x在结点i中定义,在结点j中使用,对于路径p={i,n1,n2,…,nk,j}k≥0,并且结点i、j在子路径n1,n2,…,nk中未出现过,变量x没有在子路径中被重新定义,称p是变量x的def-clear路径。
        4. def-use对

          • 任一变量x,从被定义开始到其被使用就构成了此变量的一次特定的def-use对。

          • 分类

            1. dcu

            2. dpu

            3. 变量(v) 定义所在结点(n) dcu(v,n) dpu(v,n)
              x 1 {2} {(1,2),(1,3), (3,5),(3,4)}
              y 1 {4} {(1,2),(1,3)}
              z 1 {2,4,5} {(3,5),(3,4)}
              z 2 {2,4,5} {(3,5),(3,4)}
              z 4 {2,4,5} {(3,5),(3,4)}
        5. def-use链

          • def-use对的概念可以扩展成变量的一个交替出现的定义、使用序列,这种序列也称为def-use链或k-dr交互。def-use链中的结点各不相同。k表示链的长度、字母d表示“定义”、字母r表示“引用”。
        6. 优化:数据流图可以减少要覆盖的def-use对个数。

  9. 白盒测试运用实例——三角形问题

  10. 练习

    1. 什么是白盒测试?静态白盒测试有哪些方法?并简述之?

    2. 循环测试的基本原则是什么?常考虑测试循环的哪几种情况?

    3. 白盒测试的流程有几种类型?常见的白盒测试问题有哪些类型?


2020年12月20日更

大家觉得写还可以,可以点赞、收藏、关注一下吧!
也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn


猜你喜欢

转载自blog.csdn.net/CrazyMooo/article/details/111414949