实验名称
白盒测试用例设计
实验目的
(1)能够利用白盒测试方法对程序进行测试。
(2)会用各种逻辑覆盖法设计测试用例。
(3)会用基本路径测试法设计测试用例。
实验内容
题目1
使用语句覆盖、条件组合覆盖方法为下列程序模块设计测试用例
void DoWork (int x,int y,int z) { ① int k=0, j=0; ② if ( (x>3)&&(z<10) ) ③ { ④ k=xy-1; ⑤ j=sqrt(k); ⑥ } ⑦ if((x==4)||(y>5)) ⑧ j=xy+10; ⑨ j=j%3; ⑩ return j; ⑪ }
要求:
(1)给出被测模块的程序流程图
(2)给出满足语句覆盖和条件组合覆盖的测试用例
(3)设计驱动程序main函数,运行被测模块。
题目2
isLeapYear是一个判断年份是否闰年的程序模块,使用基本路径测试法为该程序模块设计测试用例。
int isLeapYear( int year ) ① { ② int flag; ③ if( year % 4 == 0 ) ④ { ⑤ if( year % 100 == 0 ) ⑥ { ⑦ if( year % 400 == 0 ) ⑧ flag = 1; ⑨ else ⑩ flag = 0; ⑪ } ⑫ else ⑬ flag = 1; ⑭ } ⑮ Else ⑯ flag = 0; ⑰ return flag; ⑱ }
要求:
(1)给出被测模块的控制流图
(2)分析独立路径集合
(3)设计测试用例
(4)设计驱动程序main函数,运行被测模块。
实验要求
(1)绘制程序流程图、控制流图(注意二者的区别),图中符号要规范。
(2)测试用例的组织可以参照表1的格式:
(3)在程序中加必要注释说明:创建日期、创建者、函数功能
(4)运行测试程序,记录和分析测试结果。
实验过程
题目1
(1)程序流程图
(2)测试用例
(3)实验代码
public class demo01 { public static void main(String[] args) { demo01 demo01 = new demo01(); int x = 4; int y = 2; int z = 3; demo01.DoWork(x,y,z); } public void DoWork ( int x, int y, int z) { System.out.println("x = " + x + " y = " + y + " z = " + z); int k = 0, j = 0; if ((x > 3) && (z < 10)) { k = x * y - 1; j = (int) Math.sqrt(k); } if ((x == 4) || (y > 5)) { j = x * y + 10; } j = j % 3; System.out.println(" k = " + k + " j = " + j); } }
(4)运行结果
题目2
(1)控制流图
(2)测试用例
(3)实验代码
public class demo02 { public static void main(String[] args) { demo02 demo02 = new demo02(); int leapYear = demo02.isLeapYear(2000); if (leapYear == 0 ) { System.out.println("不是闰年"); } else { System.out.println("是闰年"); } } int isLeapYear( int year ) { int flag; if( year % 4 == 0 ) { if( year % 100 == 0 ) { if( year % 400 == 0 ) flag = 1; else flag = 0; } else flag = 1; } else flag = 0; return flag; } }
(4)运行结果
实验心得
逻辑覆盖分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖六种。
语句覆盖是相对较弱的测试标准。语句覆盖的定义是:测试时,首先设计若干测试用例(越少越好),然后运行被测程序,使程序中的每一个可执行语句至少执行一次。
路径覆盖是指覆盖程序中所有可能执行路径。路径覆盖可对程序进行彻底的覆盖,比前5种方法的覆盖率都高。
条件组合覆盖又称组合覆盖,是指每个判断语句中的各个条件的各种可能组合都至少执行一次,因此条件组合覆盖的测试用例可满足判定覆盖、条件覆盖以及判定/条件覆盖。
通过白盒测试,能够利用白盒测试方法对程序进行测试。会用各种逻辑覆盖法设计测试用例。会用基本路径测试法设计测试用例。