第三章白盒测试

一、学习目的与要求

本章主要介绍了白盒测试技术的概念和常见的白盒测试用例设计技术,通过本
章的学习,应理解白盒测试的概念,了解白盒测试和调试的异同,掌握各种白盒测试技术方法及其特点和适应情况。

二、考核知识点与考核目标

(一)白盒测试概述(次重点)

  1. 理解:白盒测试的含义
  1. 定义:一种用于检查代码是否按照预期工作的验证技术,又称结构测试、逻辑驱动测试、基于程序的测试
  2. 特点:针对被测程序的源代码,不需要考虑功能。
  1. 理解:白盒测试的分类
  1. 单元测试:对一组相关组件或单元的独立测试,大约有**65%**的缺陷在此发现。
  2. 集成测试:对集成到一起的软件组件和硬件组件进行的测试,用于评估这些组件间能否进行正确的交互
  3. 回归测试:是一种具有选择性的对系统或组件的重复测试,用来验证软件的修改没有带来不良影响,系统或组件仍符合特定需求。
  1. 理解:白盒测试与调试的异同
  1. 承担任务不同:白盒测试是发现所开发的项目中的缺陷,调试是纠正软件缺陷。
  2. 结果不同:白盒测试有预知结果,调试的结果是消除错误。
  3. 执行过程不同:测试有发现错误迹象,无错误定位,不需要错误原因,调试是确定错误位置和修改错误。
  4. 准备工作不同:测试有已知条件,调试没有。
  5. 执行计划不同:测试有计划,调试无计划。
  6. 执行人员不同:测试由测试人员,调试必须由程序员。
  7. 工具不同:调试由调试器支持,测试由工具支持。
  8. 目的相同:让被测应用可以安全的运行,保证软件质量。

(二)白盒测试用例设计技术(重点)

  1. 应用:逻辑覆盖测试(语句覆盖、判定覆盖、条件覆盖、路径覆盖)

1. 语句覆盖:使程序中的每个可执行语句至少执行一次,是较弱的覆盖原则。
2. 判定覆盖:使程序中每个判断的取真分支和取假分支的情况至少经历一次,又称分支覆盖,无法确定判断内部条件错误。
3. 条件覆盖:使每个判断中的每个条件可能取值至少满足一次。
4. 判定-条件覆盖:使判断中每个条件的所有可能至少出现一次,且每个判断本身的判定结果也至少出现一次。
5. 路径覆盖:覆盖程序中所有可能的路径。

  1. 应用:边界值分析是设计白盒测试用例的策略
  2. 应用:基本路径测试
  1. 环形复杂度:为程序逻辑复杂性提供定量测度的软件度量
    a. 环形复杂性=控制流图区域的数量;
    b. 环形复杂度=控制流图边数-控制流图节点数+2,V(G)=E-N+2
    c. 环形复杂度=控制流图判定节点数+1,V(G)=P+1
  1. 应用:循环语句测试
  1. 简单循环:n是允许通过循环的最大次数。
  2. 嵌套循环:从最内侧循环开始,逐步外推。
  3. 串接循环:第一个循环是第二个循环的初始值,且不独立。
  4. 无结构循环:无法测试。

三、习题

  1. 以下关于白盒测试的叙述中,不正确的是(  )。
    A. 白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能要求
    B. 逻辑覆盖法是一种常用的白盒测试方法
    C. 程序中存在很多判定和条件,不可能实现100%的条件覆盖
    D. 测试基于代码,无法确定设计正确与否
  2. 对于逻辑表达式((a&b)||c),需要()个测试用例才能完成条件组合覆盖。A.2
    B.3
    C.4
    D.5
  3. 逻辑覆盖法不包括______。
    A. 分支覆盖
    B. 语句覆盖
    C. 需求覆盖
    D. 修正条件判定覆盖
  4. 如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的( )
    A. 判定覆盖
    B. 条件覆盖
    C. 判定/条件覆盖
    D. 组合覆盖
  5. 使用白盒测试方法时,确定测试数据的依据是指定的覆盖标准和()。
    A.程序的注释
    B.程序的内部逻辑
    C.用户使用说明书
    D.程序的需求说明
  6. 简述白盒测试用例的设计方法,并进行分析总结。

白盒测试用例设计方法主要有逻辑覆盖和独立路径测试。
从覆盖源程序语句的详尽程度分析,逻辑覆盖主要有以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。实际项目中,由于程序内部的逻辑存在不确定性和无穷性,尤其对于大规模复杂软件,不必采用所有的覆盖指标,而应根据实际情况选择合适的覆盖指标。
独立路径测试是在程序控制流图的基础上,通过分析控制结构的环路复杂性,导出可执行的独立路径集合,从而设计出相应的测试用例。设计出的测试用例要保证被测程序的每条可执行的独立路径至少被执行一次。独立路径测试给出了满足路径覆盖指标所需测试用例的下限,同时给出了语句覆盖的上限,它可以确保对所有相互独立的决策结果进行测试。

  1. 分析归纳逻辑覆盖的各种策略,并比较每种覆盖的特点,分析在怎样的情况下采用何种覆盖方式。
  1. 语句覆盖是选择足够多的测试数据,使被测程序中每个语句至少执行一次。语句覆盖是最弱的逻辑覆盖标准。
  2. 判定覆盖又叫分支覆盖,它不仅每个语句必须至少执行一次,而且每个判定表达式的每种可能的结果都应该至少执行一次。判定条件覆盖比语句覆盖强,但是对程序逻辑的覆盖程度仍然不高。
  3. 条件覆盖的含义是,使判定表达式中的每个条件都取到各种可能的结果。条件覆盖通常比判定覆盖强,但是也可能有相反的情况:虽然每个条件都取到了两个不同的结果,判定表达式却始终只取一个值。
  4. 判定/条件覆盖的含义是,选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。但有时判定/条件覆盖也并不比条件覆盖更强。
  1. 请下述语句按照各种覆盖方法设计测试用例。 if (a>2 && b<3 && (c>4 || d<5)){ statement; }else{ statement; }
  2. 针对test函数按照基本路径测试方法设计测试用例。
{
	int i_temp = 0;
	while (i_count>0){
		if (0 == i_flag){
			i_temp = i_count + 100;
			break;
		}else if (1 == i_f lag){
			i_temp = i_temp + 10;
		}else{
			i_temp = i_temp + 20;
		}
	}
	i_count--;
}
return i_temp;
}

第三章白盒测试_第1张图片
基本路径集
path1 1-2-3-6-7-8-11-2-12
Path2 1-2-12
Path31-2-3-4-5-12
Path41-2-3-6-7-9-10-11-2-12
设计测试用例:

你可能感兴趣的:(#,01335软件测试技术,软件测试)