定义

白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,白盒指的是程序的内部结构和运作机制是可见的。
  
目的
  通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设置检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

白盒测试的方法:大致分为静态方法和动态方法两大类。

A. 静态分析:
  是一种不执行程序而进行测试的技术。静态分析的主要目的是检查软件的表示和描述是否一致,没有冲突或者没有歧义。

B. 动态分析:
  当软件系统在模拟或真实的环境中执行前、过程中和执行后,对其行为分析。它显示了一个系统在检查状态下是否正确。在动态分析技术中,最重要的技术是路径和分支测试。逻辑覆盖法的六种覆盖测试方法属于动态分析方法。

1.逻辑覆盖法
2.循环覆盖法
3.基本路径法

逻辑覆盖法的六种方法:

符号说明:

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

(1)语句覆盖

每条语句至少执行一次,重点在语句。
  测试用例条件: A ^ B = T

(2)判定覆盖(分支覆盖)

每个分支都要执行一次,重点在分支。在设计用例的时候,要设计判断语句结果为True和False的两种情况
  
测试用例条件:
       A ^ B = T
       A ^ B = F
       
(3)条件覆盖

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

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

(4)判定条件覆盖(分支条件覆盖)

设计测试用例时,使得判断语句中每个条件表达式的所有可能结果至少出现一次,每个判断语句本身所有可能结果也至少出现一次,即判定+条件覆盖-重复用例。
  
测试用例条件:
       A ^ B = T    A ^ B = F
       A=T     A=F
       B=T     B=F

(5)条件组合覆盖

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

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

(6)路径覆盖

设计测试用例时,覆盖程序中所有可能的执行路径

优点:这种覆盖方法可以对程序进行彻底的测试用例覆盖,比前面讲的五种方法覆盖度都要高。

缺点:由于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。路径覆盖虽然是一种比较强的覆盖,但未必考虑判断语句中条件表达式结果的组合,并不能代替条件覆盖和条件组合覆盖。

举例:

def Do(a,b,x):if(a>1) and (b==0):x=x/aif(a==2) or (x>1):x=x+2
return x

【图1.1】

分支
A:if(a>1) and (b==0):
B:if(a==2) or (x>1):
条件表达式:
M:a>1
N:b==0
X:a==2
Y:x>1

(1)语句覆盖 【图 1.1】适用
a)主要特点:使程序中的每个可执行语句至少被执行一次。
b) 用例设计

X Y 路径
1 50 50 ACEF
2 90 70 ACDF

【图1.2】

(2)判定覆盖【图 1.2】适用
a)主要特点: 对于判断语句,在设计用例的时候,要设计判断语句结果为True和False的两种情况。
b) 用例设计

X Y 路径
1 90 90 ABF
2 50 50 ACEF
3 90 70 ACDF

(3)条件覆盖【图 1.2】适用
a) 主要特点:设计用例时针对判断语句里面每个条件表达式true 和 false各取值一次,不考判断语句的计算结果。
b) 用例设计

X Y 路径
1 90 70 ACD
2 40 85 ACE

(4)判定条件覆盖【图 1.2】适用

X Y 路径
1 90 90 ABF
2 50 50 ACEF
3 90 70 ACDF
4 70 90 ACDF

(5)条件组合覆盖** 【图 1.2】适用

X Y 路径
1 90 90 ABF
2 90 70 ACDF
3 90 30 ACEF
4 70 90 ACDF
5 30 90 ACEF
6 70 70 ACEF
7 50 50 ACEF

(6)基本路径法 【图 1.2】适用
a)主要特点: 设计测试用例时,覆盖程序中所有可能的执行路径
b) 用例设计

X Y 路径
1 90 90 ABF
2 50 50 ACEF
3 90 70 ACDF
4 70 90 ACDF

已知三角形三遍abc,现在有个程序能判断三角形类别(如:等腰三角形),请为这个程序设计测试用例。

分析:

  1. 构成三角形的条件:两边之和大于第三边
  2. 构成等腰三角形的条件:任意两边相等
  3. 构成等腰直角三角形的条件:任意两边相等且两边的平方和等于第三边的平方和
  4. 构成等边三角形的条件:三条边都相等

用到设计测试用例的方法:等价类、边界值、因果图

等价类:

  1. 有效等价类
    输入三个正整数或正小数

  2. 无效等价类
    a. 空
    b. 非数字
    c. 小于三个数
    d. 大于三个数
    f. 负整数

测试用例如下:

输入条件 有效等价类 无效等价类
是否是三角形 a>0

白盒测试方法 + 实战相关推荐

  1. Seaborn可视化图像调整图像大小(figure size)方法实战(Adjust the Figure Size)

    Seaborn可视化图像调整图像大小(figure size)方法实战(Adjust the Figure Size) 目录 Seaborn可视化图像调整图像大小(figure size)方法实战(A ...

  2. 白盒测试工具_别再头疼工作效率低!这些超实用的黑盒、白盒测试方法你都用上了吗?...

    在软件测试工作中,为充分利用现有的时间和资源条件,提高测试效率和测试充分性,当前有多种方法辅助测试人员完成测试工作,推进项目进度,其中最普遍的莫过于白盒测试和黑盒测试,白盒测试和黑盒测试的概念和常用方 ...

  3. 白盒测试方法静态分析_静态分析的教育方面

    白盒测试方法静态分析 加入我们项目的新程序员经常问我们是否有自动格式化工具,以使Java代码看起来完全像Qulice期望的那样. (Quili是我们使用的静态分析器.)我总是回答说,拥有这样一个自动代 ...

  4. python白盒测试_白盒测试方法

    白盒测试方法 一.前言 定义: 白盒测试又称结构测试.透明盒测试.逻辑驱动测试或基于代码的测试.白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及 ...

  5. 『软件测试4』耗子尾汁!2021年了,你还不知道这4种白盒测试方法吗?

    软件测试--详解白盒测试基本概念,四种白盒测试方法 一.白盒测试基本概念 1.白盒测试的定义 2.白盒测试的测试对象 3.白盒测试的原则 4.白盒测试的分类 二.静态白盒测试 1.代码检查法 (1)代 ...

  6. 白盒测试方法的简单理解(通俗易懂)

    白盒测试主要使用逻辑覆盖测试方法,包括语句覆盖.判定覆盖.条件覆盖.判定-条件覆盖.条件组合覆盖.路径覆盖等. 假设逻辑判断流程图如下图所示,我们简单来说说每种白盒测试方法是如何来进行的. 一.语句覆 ...

  7. 【软件测试】白盒测试方法与黑盒测试方法的区别

    软件测试方法一般分为两种:白盒测试与黑盒测试.其中,白盒测试又称为结构测试.逻辑驱动测试或基于程序本身的测试,着重于程序的内部结构及算法,通常不关心功能与性能指标.黑盒测试又被称为功能测试.数据驱动测 ...

  8. 白盒测试方法|白盒测试的六种方法比较分析

    白盒测试的六种方法比较分析 一.摘要 白盒测试是测试人员常用的一种测试方法,越来越受到测试工程师的重视.白盒测试并不是简单的按照代码测试用例而走,需要根据不同的测试需求,结合不同的测试对象,使用适合的 ...

  9. 白盒测试方法之逻辑覆盖

    单元测试基本 是指对软件中的最小可测试单元进行检查和验证.单元测试是软件测试中最基础的测试,集成测试.功能测试和系统测试都建立在单元测试之上.单元测试的对象是构成软件产品或系统的最小的独立单元,如封装 ...

最新文章

  1. java卡片布局源码_Java编程使用卡片布局管理器示例【基于swing组件】
  2. python 解压zip文件_Python 解压缩文件详解
  3. 练习-自定义分页功能的实现
  4. 线性代数与矩阵论 习题 1.2.1
  5. yii2实现WebService 使用 SoapDiscovery
  6. 最长公共子序列算法 java_转【算法之动态规划(三)】动态规划算法之:最长公共子序列 最长公共子串(LCS)字符串相似度算法...
  7. HDU 2955 Robberies抢劫案(01背包,变形)
  8. ThreadLocal源码学习
  9. Flutter- Android项目集成flutter模块
  10. App项目实战之路(一):概述篇
  11. 计算机二级南阳理工学院官网,南阳理工学院外国语学院:彩虹之旅 温暖你心...
  12. 半加器和全加器的维基百科
  13. 联想小新520新品实测,对比当贝投影D3X竟无还手之力
  14. javascript合并多层级数组
  15. python怎么输出百分数_Python 如何输出百分比
  16. 力扣刷题笔记--304 二维区域和检索 - 矩阵不可变 前缀和
  17. int,Uint,uint16的区别及用处
  18. 螺距规的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. 零售行业数据分析运用
  20. 东南大学计算机考研难不难,东南大学考研难吗?一般要什么水平才可以进入?...

热门文章

  1. 【服务器数据恢复】服务器断电导致RAID报错的数据恢复案例
  2. 【调剂】陕西师范大学计算机科学学院2022年硕士研究生调剂公告
  3. 【DSP】CCS3.3安装教程
  4. python文件操作seek()偏移量,读取指正到指定位置
  5. CString - 详解
  6. 栈和队列的基本操作(栈和队列的区别)
  7. 修改360浏览器模式为极速模式
  8. zurb是什么网站_Zurb的Tribute库的Vue.js包装器,用于本机@mentions
  9. ACM模板 | 学习笔记 树相关
  10. python basename()函数和dirname()函数