白盒测试实验报告

白盒测试

[1**********]3 王尘堃

什么是白盒测试?

白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。 这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

一、实验目的

通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。

二、实验内容

被测测试程序功能:计算被输入日期是星期几;

程序定义:已知公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几;

测试环境:Windows vista、Dev C++;

说明:本次测试采用插装测试法,由于程序简单,手动输入测试用例。

程序说明:

A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数

B闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)

(1)分析各种输入情况,结合程序输出结果,进行等价类划分,并给出详细测试用例;

(2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例;

(3)决策表测试法;

①列出输入变量month、 day、 year的有效等价类;(条件桩) ②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩) ③画出决策表(简化);

④根据决策表,给出详细测试用例。

代码:(被测部分为while循环内部语句)

#include

using namespace std;

int main()

{

int x=1,year, month, day;

while(x)

{

1.int i, num=0,total, total1, total2;

2.cout

3.cin>>year;

4.cout

5.cin>>month;

6.cout

7.cin>>day;

//求得输入年份之前一年末的总天数

8.for(i=1; i

{

9.if((i%4==0)&&(i%100!=0)||(i%400==0))

10.num++;

}

11.total1 = 365*(year-num-1) + 366*num;

//求得输入年份的总天数

12.if((year%4==0)&&(year%100!=0)||(year%400==0))

{

//求得输入月份之前一月末的总天数

13.switch(month)

{

case 1:total2 = 0;break;

case 2:total2 = 31;break;

case 3:total2 = 60;break;

case 4:total2 = 91;break;

case 6:total2 = 152;break; case 7:total2 = 182;break; case 8:total2 = 213;break; case 9:total2 = 244;break; case 10:total2 = 274;break; case 11:total2 = 305;break; case 12:total2 = 335;break; } } else { 14.switch(month) { case 1:total2 = 0;break; case 2:total2 = 31;break; case 3:total2 = 59;break; case 4:total2 = 90;break; case 5:total2 = 120;break; case 6:total2 = 151;break; case 7:total2 = 181;break; case 8:total2 = 212;break; case 9:total2 = 243;break; case 10:total2 = 273;break; case 11:total2 = 304;break; case 12:total2 = 334;break; } }

//在加上输入的日,求其总和可得到从公元1年1月1日到输入日期当天的总天数

15.total = total1 + total2 + day;

16.int week;

17. week = total % 7;

18.cout

19.switch(week)

{

case 0:cout

case 1:cout

case 2:cout

case 3:cout

case 4:cout

case 5:cout

} cout

cin>>x;

}

}

2、测试用例设计

1)控制流图

2)环路复杂度计算

由图可知,图中的环路有六条,故环路复杂度为六。

3)基本路径集设计

基本路径集为:

A.1、2、3、4、5、6、7、8、11、12、14、15、16、17、18、19

B.1、2、3、4、5、6、7、8、9、11、12、14、15、16、17、18、19

C.1、2、3、4、5、6、7、8、9、10、11、12、13、15、16、17、18、19

D.1、2、3、4、5、6、7、8、9、10、11、12、14、15、16、17、18、19

注:由源程序代码可知,未走路径10则必定不通过路径13,故省去两条检测路径。

4)测试用例集设计

测试用例集为:

A路径:1-2-26 预期输出:星期一

B路径:2-2-2 预期输出:星期六

C路径:2010-11-16 预期输出:星期二

D路径:2008-8-6 预期输出:星期三

3、插装后源程序清单与判定覆盖率分析结果

#include

using namespace std;

int main()

{

int x=1,year, month, day;

int m1=0,m2=0,m3=0,m4=0,m=15,n=0,f=0;

while(x) {

n++;

cout

int i, num=0,total, total1, total2,qw; cout>year; cout>month; cout>day;

cout

cin>>qw;

cout2->3->4->5->6->7->8"; for(i=1; i1) if((i%4==0)&&(i%100!=0)||(i%400==0)) num++;

{

cout9";

if(m1==0){m++;m1=1;}

}

if(num>0)

{

cout10";

if(m2==0){m++;m2=1;}

}

total1 = 365*(year-num-1) + 366*num; cout11->12"; if((year%4==0)&&(year%100!=0)||(year%400==0))

{

cout13";if(m3==0){m++;m3=1;}

switch(month)

{

case 1:total2 = 0;break;

case 2:total2 = 31;break;

case 3:total2 = 60;break;

case 4:total2 = 91;break;

case 5:total2 = 121;break;

case 6:total2 = 152;break;

case 7:total2 = 182;break;

case 8:total2 = 213;break;

case 9:total2 = 244;break;

case 10:total2 = 274;break;

case 11:total2 = 305;break;

case 12:total2 = 335;break;

}

}

else {

cout14";if(m4==0){m++;m4=1;}

} switch(month) { } case 1:total2 = 0;break; case 2:total2 = 31;break; case 3:total2 = 59;break; case 4:total2 = 90;break; case 5:total2 = 120;break; case 6:total2 = 151;break; case 7:total2 = 181;break; case 8:total2 = 212;break; case 9:total2 = 243;break; case 10:total2 = 273;break; case 11:total2 = 304;break; case 12:total2 = 334;break;

cout15->16->17->18->19"

total = total1 + total2 + day; int week;

week = total % 7;

cout

cout

cout

case 0:cout

case 1:cout

case 2:cout

case 3:cout

case 4:cout

case 5:cout

case 6:cout

} cout

case 0:cout

case 1:cout

case 2:cout

case 3:cout

case 4:cout

case 5:cout

case 6:cout

} if(week==qw%7) cout

{

cout

f++;

}

cout

cout

cin>>x; }

cout

cout

}

测试截图见附录

三、总结与体会

实验中对于路径测试有了更深的理解,可以更好、更迅速的去划分路径,设计测试用例。通过实验,我对软件测试有了进一步的认识和学习,对白盒测试流程有了较清楚的了解,收获很多。也让我深深体会到了其实测试软件是严谨的,不轻松的过程,因此更需要我们有扎实的技术和良好的耐心。

四、测试截图

白盒测试

[1**********]3 王尘堃

什么是白盒测试?

白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。 这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

一、实验目的

通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。

二、实验内容

被测测试程序功能:计算被输入日期是星期几;

程序定义:已知公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几;

测试环境:Windows vista、Dev C++;

说明:本次测试采用插装测试法,由于程序简单,手动输入测试用例。

程序说明:

A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数

B闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)

(1)分析各种输入情况,结合程序输出结果,进行等价类划分,并给出详细测试用例;

(2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例;

(3)决策表测试法;

①列出输入变量month、 day、 year的有效等价类;(条件桩) ②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩) ③画出决策表(简化);

④根据决策表,给出详细测试用例。

代码:(被测部分为while循环内部语句)

#include

using namespace std;

int main()

{

int x=1,year, month, day;

while(x)

{

1.int i, num=0,total, total1, total2;

2.cout

3.cin>>year;

4.cout

5.cin>>month;

6.cout

7.cin>>day;

//求得输入年份之前一年末的总天数

8.for(i=1; i

{

9.if((i%4==0)&&(i%100!=0)||(i%400==0))

10.num++;

}

11.total1 = 365*(year-num-1) + 366*num;

//求得输入年份的总天数

12.if((year%4==0)&&(year%100!=0)||(year%400==0))

{

//求得输入月份之前一月末的总天数

13.switch(month)

{

case 1:total2 = 0;break;

case 2:total2 = 31;break;

case 3:total2 = 60;break;

case 4:total2 = 91;break;

case 6:total2 = 152;break; case 7:total2 = 182;break; case 8:total2 = 213;break; case 9:total2 = 244;break; case 10:total2 = 274;break; case 11:total2 = 305;break; case 12:total2 = 335;break; } } else { 14.switch(month) { case 1:total2 = 0;break; case 2:total2 = 31;break; case 3:total2 = 59;break; case 4:total2 = 90;break; case 5:total2 = 120;break; case 6:total2 = 151;break; case 7:total2 = 181;break; case 8:total2 = 212;break; case 9:total2 = 243;break; case 10:total2 = 273;break; case 11:total2 = 304;break; case 12:total2 = 334;break; } }

//在加上输入的日,求其总和可得到从公元1年1月1日到输入日期当天的总天数

15.total = total1 + total2 + day;

16.int week;

17. week = total % 7;

18.cout

19.switch(week)

{

case 0:cout

case 1:cout

case 2:cout

case 3:cout

case 4:cout

case 5:cout

} cout

cin>>x;

}

}

2、测试用例设计

1)控制流图

2)环路复杂度计算

由图可知,图中的环路有六条,故环路复杂度为六。

3)基本路径集设计

基本路径集为:

A.1、2、3、4、5、6、7、8、11、12、14、15、16、17、18、19

B.1、2、3、4、5、6、7、8、9、11、12、14、15、16、17、18、19

C.1、2、3、4、5、6、7、8、9、10、11、12、13、15、16、17、18、19

D.1、2、3、4、5、6、7、8、9、10、11、12、14、15、16、17、18、19

注:由源程序代码可知,未走路径10则必定不通过路径13,故省去两条检测路径。

4)测试用例集设计

测试用例集为:

A路径:1-2-26 预期输出:星期一

B路径:2-2-2 预期输出:星期六

C路径:2010-11-16 预期输出:星期二

D路径:2008-8-6 预期输出:星期三

3、插装后源程序清单与判定覆盖率分析结果

#include

using namespace std;

int main()

{

int x=1,year, month, day;

int m1=0,m2=0,m3=0,m4=0,m=15,n=0,f=0;

while(x) {

n++;

cout

int i, num=0,total, total1, total2,qw; cout>year; cout>month; cout>day;

cout

cin>>qw;

cout2->3->4->5->6->7->8"; for(i=1; i1) if((i%4==0)&&(i%100!=0)||(i%400==0)) num++;

{

cout9";

if(m1==0){m++;m1=1;}

}

if(num>0)

{

cout10";

if(m2==0){m++;m2=1;}

}

total1 = 365*(year-num-1) + 366*num; cout11->12"; if((year%4==0)&&(year%100!=0)||(year%400==0))

{

cout13";if(m3==0){m++;m3=1;}

switch(month)

{

case 1:total2 = 0;break;

case 2:total2 = 31;break;

case 3:total2 = 60;break;

case 4:total2 = 91;break;

case 5:total2 = 121;break;

case 6:total2 = 152;break;

case 7:total2 = 182;break;

case 8:total2 = 213;break;

case 9:total2 = 244;break;

case 10:total2 = 274;break;

case 11:total2 = 305;break;

case 12:total2 = 335;break;

}

}

else {

cout14";if(m4==0){m++;m4=1;}

} switch(month) { } case 1:total2 = 0;break; case 2:total2 = 31;break; case 3:total2 = 59;break; case 4:total2 = 90;break; case 5:total2 = 120;break; case 6:total2 = 151;break; case 7:total2 = 181;break; case 8:total2 = 212;break; case 9:total2 = 243;break; case 10:total2 = 273;break; case 11:total2 = 304;break; case 12:total2 = 334;break;

cout15->16->17->18->19"

total = total1 + total2 + day; int week;

week = total % 7;

cout

cout

cout

case 0:cout

case 1:cout

case 2:cout

case 3:cout

case 4:cout

case 5:cout

case 6:cout

} cout

case 0:cout

case 1:cout

case 2:cout

case 3:cout

case 4:cout

case 5:cout

case 6:cout

} if(week==qw%7) cout

{

cout

f++;

}

cout

cout

cin>>x; }

cout

cout

}

测试截图见附录

三、总结与体会

实验中对于路径测试有了更深的理解,可以更好、更迅速的去划分路径,设计测试用例。通过实验,我对软件测试有了进一步的认识和学习,对白盒测试流程有了较清楚的了解,收获很多。也让我深深体会到了其实测试软件是严谨的,不轻松的过程,因此更需要我们有扎实的技术和良好的耐心。

四、测试截图


相关文章

  • 内蒙古工业大学黑盒测试实验报告
  • 内蒙古工业大学信息工程学院 实 验 报 告 课程名称: 软件测试 实验名称 黑盒测试 实验类型: 验证性□ 综合性□ 设计性□ 实验室名称: 信息工程学院实验室 班级: 软件13-1 学号:2013202050xx 姓名: 某某某 组别: ...查看


  • 双荧光报告系统
  • 报告基因 Promega中文通讯 第2期 2002 荧光素酶 双荧光素酶报告基因测试∶ 结合萤火虫和海洋腔肠荧光素酶先进的共报告基因测试技术 在用萤火虫荧光素酶定量基因表达时 ,通常采用第二个报告基因来减少实验的变化因素.但传统的共报告基因 ...查看


  • 软件测试I 实验报告模板
  • 软件工程系项目/实验报告 一.目的 (1)理解 QTP/UFT 的工作原理: (2)运用 QTP/UF 通过录制的方式创建测试,并会分析测试脚本的执行结果 二.过程与步骤 1准备测试环境,启动qtp 2启动录制, 打开网址http://ne ...查看


  • 建筑材料报告总表
  • <建筑材料>课程 建筑材料试验报告 院 系 班 级 姓 名 学 号 新乡学院土木工程与建筑系 试验一试验二实验三试验四实验五实验六实验七目录 建筑材料基本性质试验报告 .............................. ...查看


  • 软件测试技术实验报告3-6次
  • 湖南工学院实验报告3-6次 院部名称:计算机与信息科学学院实验项目名称 黑盒测试技术 年 月 日 一.实验目的与要求: 实验内容与要求 1.熟练掌握黑盒测试的等价类划分法,并能进行实际程序测试.2.熟练掌握黑盒测试的边界值分析法,并能进行实 ...查看


  • 世卫组织良好实验室规范准则_GLP123
  • 附件1 世卫组织医药实验室质量控制一般规则 总则 汇编 第一部分 管理和基础设施 1. 组织和管理 2. 质量管理体系 3. 文档管理 4. 记录 5. 数据处理设备 6. 人事管理 7. 前提 8. 设备,仪器,其它器件 9. 契约 第二 ...查看


  • 产品测试流程
  • 1目的 本流程旨在有效地规范产品测试过程,提高测试的有效性和文档管理质量,明确测试工作各阶段的任务.步骤.关键评审点和与开发流程的关系及接口,充分体现开发与测试的并行,缩短产品开发周期,降低产品开发成本,保证测试过程的规范性和继承性,快速. ...查看


  • 中心化验室制度2012-2013
  • 中心化验室管理制度 为了完善化验室工作流程.以便更好的开展仪器检验相关工作,同时,便于绩效考核落到实处,奖罚分明.体现公平竞争,进一步加强中心化验室管理,特制定以下管理条例: 一. 中心化验室工作职责 1. 对公司的新.老产品进行长期的稳定 ...查看


  • 实验室测试员上岗考试质量管理体系部分试题(带答案)
  • 实验室质量管理体系考核试题 姓 名: 部 门: 岗 位: 考核时间: 年 月 日 阅卷人: 满分100分, 90分合格 成 绩: 第一部分:填空题(每题2分,共20题) 1. 国家工程实验室质量管理体系依据如下标准:..(1.1质量手册范围 ...查看


  • 原型评价法实验报告
  • 学期 实 验 报 告 实验课程名称 电子产品设计基础实验报告 专 业 班 级 电信1101 电信1102 撰 写 者 龚博涵 组 员 李成翰 韩磊 林智翔 陈鹏 杨日孟 实验指导教师 杨锆 一.实验目的 在电子产品研发过程中,对于界面设计以 ...查看


热门内容