zoukankan      html  css  js  c++  java
  • 白盒测试方法

    白盒测试方法


    一.前言

    定义:   白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。

    白盒测试的目的:   通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

    白盒测试的方法:

    A. 静态分析: 
      是一种不执行程序而进行测试的技术。静态分析的主要目的是检查软件的表示和描述是否一致,没有冲突或者没有歧义。
    B. 动态分析: 
      当软件系统在模拟或真实的环境中执行前、过程中和执行后,对其行为分析。它显示了一个系统在检查状态下是否正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。
    

    符号说明:

    	^ 代表: 逻辑运算符 && 或者 ||
    	T 代表: True
    	F 代表: False
    	A / B 代表: 条件表达式
    

    二.测试方法

    1. 白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
    2. 日常使用方法手段:
    1.语句覆盖:每条语句至少执行一次。
    2.判定覆盖:每个判定的每个分支至少执行一次。
    3.条件覆盖:每个判定的每个条件应取到各种可能的值。
    4.判定/条件/分支覆盖:同时满足判定覆盖条件覆盖。
    5.条件组合覆盖:每个判定中各条件的每一种组合至少出现一次。
    6.路径覆盖:使程序中每一条可能的路径至少执行一次。
    

    三.语句覆盖

    使程序中的每个可执行语句都能执行一次的测试用例
    

    测试用例条件: ​ A ^ B = T

    graph LR
    A[引入]
        A --> B{判断}
        B -->|T| C[结果1]
        B -->|F| D[结果2]
    

    四.判定覆盖

    对于判断语句,在设计用例的时候,要设计判断语句结果为True和False的两种情况 
    

    测试用例条件: ​ A ^ B = T ​ A ^ B = F

    graph LR
    A[引入]
        A --> B{判断}
        B -->|T| C[结果1]
        B -->|F| D[结果2]
    

    五.条件覆盖

    设计用例时针对判断语句里面每个条件表达式true 和 false各取值一次,不考判断语句的计算结果
    

    测试用例条件: ​ A=T​ A=F ​ B=T​ B=F

    graph LR
    A[ ]
        A --> B{判断}
        B -->|T| C[ ]
        B -->|F| D[ ]
    

    六.判定/条件/分支覆盖

    设计测试用例时,使得判断语句中每个条件表达式的所有可能结果至少出现一次,每个判断语句本身所有可能结果也至少出现一次。
    

    测试用例条件: A ^ B = T A ^ B = F A=T A=F B=T B=F

    graph LR
    A[ ]
        A --> B{判断}
        B -->|T| C[ ]
        B -->|F| D[ ]
    

    七.条件组合覆盖

    设计测试用例时,使得每个判断语句中条件结果的所有可能组合至少出现一次
    

    测试用例条件: A= T B= T A= T B= F A= F B= T A= F B= F

    graph LR
    A[ ]
        A --> B{判断}
        B -->|T| C[ ]
        B -->|F| D[ ]
    

    八.路径覆盖

    设计测试用例时,覆盖程序中所有可能的执行路径
    优点:这种覆盖方法可以对程序进行彻底的测试用例覆盖,比前面讲的五种方法覆盖度都要高。
    缺点:于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。路径覆盖虽然是一种比较强的覆盖,但未必考虑判断语句中条件表达式结果的组合,并不能代替条件覆盖和条件组合覆盖。
    
    补充丢失逻辑图:

    
    
    作者:GI-JOE
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    jackson 枚举 enum json 解析类型 返回数字 或者自定义文字 How To Serialize Enums as JSON Objects with Jackson
    Antd Pro V5 中ProTable 自定义查询参数和返回值
    ES6/Antd 代码阅读记录
    es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
    Antd Hooks
    使用.Net Core开发WPF App系列教程(其它 、保存控件内容为图片)
    使用.Net Core开发WPF App系列教程( 三、与.Net Framework的区别)
    使用.Net Core开发WPF App系列教程( 四、WPF中的XAML)
    使用.Net Core开发WPF App系列教程( 二、在Visual Studio 2019中创建.Net Core WPF工程)
    使用.Net Core开发WPF App系列教程( 一、.Net Core和WPF介绍)
  • 原文地址:https://www.cnblogs.com/BenLam/p/10517378.html
Copyright © 2011-2022 走看看