白盒测试(一)
更新时间:2023-10-09 16:41:01 阅读量: 综合文库 文档下载
XX大学 软件质量控制和测试 实验(实习)报告
实验(实习)名称 白盒测试(一) 实验(实习)日期 2011-12-2 得分 指导老师 系 专业 班级 1 姓名 学号
一、 实验目的
理解白盒测试的基本方法,掌握语句覆盖、分支覆盖、条件覆盖、路径覆
盖等代码覆盖测试策略,并能应用白盒测试技术设计测试用例
二、 实验内容
1.题目一:使用逻辑覆盖测试方法测试以下程序段(必做)
void DoWork (int x,int y,int z){ 1 int k=0, j=0;
2 if ( (x>3)&&(z<10) ) 3 {
4 k=x*y-1; 5 j=sqrt(k); 6 }
7 if((x==4)||(y>5)) 8 j=x*y+10; 9 j=j%3; 10 }
说明:程序段中每行开头的数字(1~10)是对每条语句的编号。 (1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
2.题目二:折半查找(选做)
请按要求对下面的java 代码进行测试。代码的功能是:用折半查找法在元素呈升序排列的数组中查找值为key 的元素。
public int binSearch ( int array[], int key ) { int mid, low, high; low = 0;
high = array.length-1; while ( low <= high ) { mid = (low +high)/2; if ( key = = array [mid] ) return mid;
else if ( key < array [mid] ) high = mid -1; else
low = mid + 1 }
return -1; }
(1) 试计算此程序段的McCabe 复杂性; (2) 用基本路径覆盖法给出测试路径; (3) 为各测试路径设计测试用例。
三、 实验步骤
题目一:使用逻辑覆盖测试方法测试以下程序段(必做)
1、绘制出程序流程图,如图1;
开始 k=0,j=0; True ( x>3)and ( z<10 ) False k = x*y - 1; j = sqrt(k); True (x = = 4) or ( y > 5) False j = x*y + 10; j = j % 3; 结束
图 1 题目1的程序流程图
2、绘制控制流图,如图2;
1 2 3 4 5 6 7 8 9 10
图 2 题目1 的控制流图
3、设计测试用例: (1) 语句覆盖:
语句覆盖是设计足够的测试用例使程序中的每一条可执行语句至少执行一次。这题中,两个if语句的判定之后,只要确保使两个判定都为真,那么所有的执行语句就都可以执行了,即可达到语句覆盖的要求。所以设计的测试用例如下: x = 4 , y = 6 , z = 8 。
这组测试用例的执行路径是1—2—3—4—5—6—7—8—9—10
(2) 判定覆盖:
判定覆盖要求程序中每个判断的取真分支和取假分支至少经历一次。这题中,有两个判定语句,至少需要设计两组测试用例,才能分别覆盖两个if语句的真分支和假分支。所以设计的测试用例如下: 用例1:x = 4 , y = 6 , z = 8 ,
其执行路径是1—2—3—4—5—6—7—8—9—10 ;
用例2:x = 3 , y = 5 , z = 8 ,
其执行路径是1—2—3—6—7—9—10。
(3) 条件覆盖:
条件覆盖要求每个判断中每个条件的可能取值至少要满足一次。这道题目中的条件有四个,分别如下:
① x > 3 ; ② z < 10 ;③ x = = 4 ;④ y > 5 ;
设计用例时要使每个条件分别取真和取假。设计的测试用例如下表。 测试用例编号 1 2 测试数据 x=3,y=8,z=8 x=4,y=5,z=13 覆盖条件 ①假②真③假④真 ①真②假③真④假 执行路径 1-2-3-6-7-8-9-10 1-2-3-6-7-8-9-10
(4) 判定/条件覆盖:
判定/条件覆盖要求判断中每个条件的所有可能至少出现一次,并且每个判断本身的可能判定结果也至少出现一次。题目中的条件有四个,分别如下: ① x > 3 ; ② z < 10 ;③ x = = 4 ;④ y > 5 ;
该程序中的分支有四个 。所以设计的测试用例如下表所示: 测试用例编号 1 2 测试数据 x=4,y=8,z=8 x=3,y=5,z=13 覆盖条件 ①假②假③假④假 执行路径 1-2-3-6-7-9-10 ①真②真③真④真 1-2-3-4-5-6-7-8-9-10
(5) 条件组合覆盖:
条件组合覆盖要求每个判定的所有可能条件取值组合至少执行一次。这道题目中共有四个条件分别如下: ① x > 3 ; ② z < 10 ;③ x = = 4 ;④ y > 5 ;
设定x > 3 为真时,记作T1 ;为假时,即x ≤ 3 , 记作F1 ;
z < 10为真时,记作T2 ;为假时,即z ≤ 10 , 记作F2 ; x = = 4为真时,记作T3 ;为假时,即x ≠ 4 , 记作F3 ; y > 5为真时,记作T4 ; 为假时,即y ≤ 5 , 记作F4 。 条件组合如下表: 编号 1 2 3 4 5 6 7 8 具体条件取值 x > 3 , z < 10 x > 3 , z ≤ 10 x ≤ 3 ,z < 10 x ≤ 3 ,z ≤ 10 x = = 4 ,y > 5 x = = 4 ,y ≤ 5 x ≠ 4 , y > 5 x ≠ 4 , y ≤ 5 覆盖条件 T1,T2 T1,F2 F1,T2 F1,F2 T3,T4 T3,F4 F3,T4 F3,F4 判定取值 第一个判定:取真分支 第一个判定:取假分支 第一个判定:取假分支 第一个判定:取假分支 第二个判定:取真分支 第二个判定:取真分支 第二个判定:取真分支 第二个判定:取假分支 设计的测试用例如下:
测试用例编号 1 2 3 4 测试数据 x = 4 , y = 8 , z = 8 x = 4 , y = 3 , z = 13 x = 2 , y = 8 , z = 8 x = 2 , y = 3 , z = 13 覆盖条件 T1,T2,T3,T4 T1,F2,T3,F4 F1,T2,F3,T4 F1,F2,F3,F4 执行路径 1-2-3-4-5-6-7-8-9-10 1-2-3-6-7-8-9-10 1-2-3-6-7-8-9-10 1-2-3-6-7-9-10
(6) 路径覆盖:
路径覆盖要求覆盖程序中所有可能的路径。这道题中可能的执行路径共有4条,所以需要设计4个测试用例: 测试用例编号 1 2 3 4
测试数据 x = 4 , y = 8 , z = 8 x = 4 , y = 3 , z = 13 x = 6 , y = 2 , z = 8 x = 2 , y = 3 , z = 13 执行路径 1-2-3-4-5-6-7-8-9-10 1-2-3-6-7-8-9-10 1-2-3-4-5-6-7-9-10 1-2-3-6-7-9-10 题目二:折半查找(选做)
请按要求对下面的java 代码进行测试。代码的功能是:用折半查找法在元素呈升序排列的数组中查找值为key 的元素。
首先对代码进行编号,以便绘制控制流图。
public int binSearch ( int array[], int key ) { 1 int mid, low, high; 2 low = 0;
3 high = array.length-1; 4 while ( low <= high ) { 5 mid = (low +high)/2; 6 if ( key = = array [mid] ) 7 return mid;
8 else if ( key < array [mid] ) 9 high = mid -1; 10 else
11 low = mid + 1 12 }
13 return -1; 14 }
第1步:绘制给出代码段的程序流程图和控制流图;
(1)根据程序源代码,绘制出程序的程序流程图,如图3:
开始 low=0 high = array.length - 1 False low < = high True return -1 mid = (low + high) / 2 结束 True key = = array[mid] False return mid True key < array[mid] False high = mid - 1 low = mid + 1
图 3 题目2的程序流程图
(2)根据程序流程图,绘制出程序的控制流图,如图4:
1 2 3 4 13 5 14 R4 6 7 R2 R1 9 8 10 R3 11 12
图 4 题目2的控制流图
第2步:计算程序环路复杂度;
程序的环路复杂性即McCabe复杂性度量,简单的定义为控制流图的区域数。从
程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的最少测试用例数。 通常环路复杂性可用以下三种方法求得。
(1) 通过控制流图的边数和节点数计算。设E为控制流图的边数,N为控制流图的节
点数,则定义环路复杂性为 V(G)= E – N + 2 ;
该图中共有16条边,14个节点,因此 E = 16 ,N = 14 , V(G)=E-N+2=16-14+2 = 4 ,程序的环路复杂性为4。
(2) 通过控制流图中判定节点数计算。若设P为控制流图中的判定节点数,
则有V(G) = P + 1
该图中有3个判定节点,因此其环路复杂性为V(G)=P+1=3+1=4,所以该程序的环路复杂性为4。
(3) 将环路复杂性定义为控制流图中的区域数。
该控制流图中有4个区域:R1、R2、R3、R4,因此其环路复杂性为4。
第3步:找出独立路径;
通过程序的控制流图导出基本路径集,列出程序的独立路径。 PATH1:1-2-3-4-13-14
PATH2:1-2-3-4-5-6-7-12-4-13-14 PATH3:1-2-3-4-5-6-8-9-12-4-13-14 PATH4:1-2-3-4-5-6-8-10-11-12-4-13-14 第4步:设计测试用例;
根据程序结构和程序环路复杂性设计用例输入数据和预期结果,确保基本路径集中的每一条路径的执行。 用例编号 1 2 3 4
路径 path1: 1-2-3-4-13-14 path2: 1-2-3-4-5-6-7-12-4-13-14 path3:1-2-3-4-5-6-8-9-12-4-13-14 path4:1-2-3-4-5-6-8-10-11-12-4-13-14 输入数据 array[0]={}; key = 1 array[3]={2,4,6}; key = 4 array[4]={2,4,6,8}; key = 2 array[4]={2,4,6,8}; key = 6 预期输出 -1 1 0 2 四、 实验心得
1、 白盒测试与程序内部结构相关,因此也称为结构测试或逻辑驱动测试。而在进行白盒测
试时,测试者必须检查程序的内部结构,从程序的逻辑结构着手,得出测试数据。因此测试者需要了解程序结构的实现细节等知识,才能有效进行测试用例的设计工作。 2、 白盒测试并不是简单地按照代码设计测试用例,而是需要根据不同的测试需求,结合不
同的测试对象,使用合适的方法进行测试。而白盒测试的方法也很多,主要方法有逻辑覆盖测试、基本路径测试等。
3、 通过这次实验,我了解到绘制程序流程图与控制流图之间的区别,并且能够通过控制流
图来用各种方式设计测试用例。
正在阅读:
白盒测试(一)10-09
美丽乡村作文400字07-10
毛概演讲稿__先富与共富的关系05-02
高考语文作文古文中的名言名句素材04-20
《财务会计学》期末复习 - 有答案CCC10-06
撬挖工作业安全规程正式样本04-30
2019年河北省石家庄市中考数学总复习复习同步训练22第六章第一节01-02
工作票负责人签发人考试题05-14
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 测试
- 白盒
- 小学三年级语文 讲义25 第5讲.尖子班 教师版
- 2014化工原理复习题
- 《论语天下有道,丘不与易也》导学方案人教版高二选修教学案例
- 经济政治与社会学习指导政治部分
- 社会规则与正义第一和第二课时
- 中国农业银行员工岗位资格考试 - 对公客户经理答案多选
- 电气安全技术试题
- 中国医科大学2018年7月考试《中医药学概论》考查课试题
- 爱之茧
- 明代服饰鉴赏 - 图文
- 2018-2019学年度最新部编人教版语文小学二年级下册全部生字看拼音写词语练习题(带田字格)
- 群众路线问答题
- 九年级英语上册 Unit 3 Topic 1 English is widely spoken around the world SectionC讲学稿
- 最新大学更名合并情况
- 统计学期末复习试题9套部分含答案 - 图文
- 初步核实方案
- 句子成分分析练习(附答案)
- 中国石油大学数学地质复习题(含答案) 2
- 乡政府工作总结范文
- 高一历史组集体备课记录表1