第四章 白盒测试
1.什么是白盒测试?
白盒测试技术是一种常用的软件测试方法,不仅软件测试人员需要掌握,开发人员也需要在开发时用此方法测试自己开发的程序;
白盒测试是一种从开发人员角度出发的测试,主要以程序的源代码为依据,对程序的内部逻辑结构进行测试,故又称“结构测试”或“逻辑驱动测试”;
白盒测试的基本观点是:被测程序如同一个透明的白盒子,测试者可以访问源代码,分析源代码间的结构与逻辑,而不考虑它的功能;
白盒测试依赖于程序细节的严密验证,检验程序中的每条通路是否都能按预定要求正确工作,要求对被测程序的结构特性做到一定程度的覆盖;
白盒测试通常分为静态和动态两种类型:
静态分析方法是指按一定步骤直接检查源代码的测试方法,包括代码检查法等方法。
动态测试方法是指按一定步骤生成测试用例并驱动被测程序运行来发现错误,包括逻辑覆盖法、独立路径测试法等方法。
2.采用白盒测试需遵循什么原则?
(1)保证每个模块中所有独立路径至少被测试一遍;
(2)完成所有逻辑值分别为真值和假值的条件下的测试;
(3)在上下边界及可操作范围内执行所有循环;
(4)检查内部数据结构以确保其有效性;
(5)满足相关方法的条件下,测试用例越少越好。
3.白盒测试中的逻辑覆盖法具体包括哪些?分析每种覆盖的特点。
语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖、基本路径覆盖。
语句覆盖要求设计若干个测试用例,使得被测程序中的每条可执行语句至少执行一次。
判断覆盖,又称分支覆盖,要求设计若干个测试用例,使得被测程序中的每条判断语句取真分支和取假分支至少执行一次。
条件覆盖要求设计若干个测试用例,使得被测程序中的每个判断语句的每个条件语句的每种可能取值(真和假)至少执行一次。
判断—条件覆盖要求设计若干个测试用例,使得被测程序中的每条判断语句取真分支和取假分支至少执行一次,且每个判断语句的每个条件语句的每种可能取值至少执行一次。即:同时满足判断覆盖和条件覆盖。
条件组合覆盖要求设计若干个测试用例,使得被测程序中每个判断中的所有可能的条件的取值组合都至少执行一次;如果一个判断语句中有n个条件,则为了实现条件组合覆盖,需要2^n 种条件组合。
基本路径覆盖要求设计若干个测试用例,使得被测程序中的所有可能路径都至少执行一次。
4.采用独立路径测试法,为下面的程序设计测试用例。
Sort( int iRecordNum, int iType)void
1{
2 int x=0;
3 int y=(
4 while(iRecordNum-->0)
5 (
6 If(iType==0)
7 { x= y + 2; break;
8 else
9 if(iType==1)
10 x=y+10;
11 else
12 x=y+20;
13 }
14}
1)依据程序画出程序控制流图,得出环路复杂度为4,则应该有4条独立路径。
(2)导出独立路径
Path1:3,4→iRecordNum-->0 取真→iType==0 取真→10,11
Path2:3,4→iRecordNum-->0 取真→iType==0 取假→iType==1 取真→17→iRecordNum-->0 取假
Path3:3,4→iRecordNum-->0 取真→iType==0 取假→iType==1 取假→21→iRecordNum-->0 取假
Path4:3,4→iRecordNum-->0 取假
(3)设计测试用例
注:*表示不局限于此数,可以为其它任意整数。
5.按要求给出下列程序的测试用例。
(1)语句覆盖
(2)判断覆盖
(1)语句覆盖
设计测试用例时应保证程序的每一条可执行语句至少执行一次。
从图所示的流程图来看,语句覆盖等同于对图中所有节点的覆盖
执行路径为c—e,一个测试用例即可。
(2)判断覆盖
设计测试用例时应保证程序中每个判定节点的取真和取假分支至少执行一次
执行路径为c—e,b—d,或者b—e,c—d,两个测试用例
6.请根据下述语句结构,按照各种覆盖方法设计测试用例。
(1)语句覆盖
程序流程图
语句覆盖的测试用例
(2)判断覆盖
判断覆盖的测试用例
(3)条件覆盖
条件覆盖的测试用例
(4)判断-条件覆盖
判断-条件覆盖的测试用例
(5)条件组合覆盖
(6)基本路径覆盖