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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    linux使用rm-rf删除之文件恢复
    性能测试常见瓶颈分析及调优方法
    性能压测QPS 和 TPS区别
    Linux查看系统性能
    Python中split()和split(" ")的区别
    Python-标准库之functools
    Python-内置函数_@propery、@classmethod、@staticmethod详解
    Python-类的内置方法中__repr__和__str__的区别
    Python-标准库之运算符替代函数Operator
    Python-标准库之迭代器-itertools
  • 原文地址:https://www.cnblogs.com/BenLam/p/10517378.html
Copyright © 2011-2022 走看看