白盒测试实验一
- 格式:doc
- 大小:28.50 KB
- 文档页数:2
实验一:白盒软件测试一、实验目的通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。
熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。
二、实验内容背景:被测测试程序功能:计算被输入日期是星期几;程序定义:已知公元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 <iostream>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<year; 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 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{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<<"星期天"<<endl;break;case 1:cout<<"星期一"<<endl;break;case 2:cout<<"星期二"<<endl;break;case 3:cout<<"星期三"<<endl;break;case 4:cout<<"星期四"<<endl;break;case 5:cout<<"星期五"<<endl;break;case 6:cout<<"星期六"<<endl;break;}cout<<"**********退出程序请输入0,否则任一输入继续**********"<<endl;cin>>x;}}2、测试用例设计1)控制流图2)环路复杂度计算由图可知,图中的环路有六条,故环路复杂度为六。
实验一、白盒测试一、实验目的:1、掌握结构性能测试技术,并能设计相应的测试用例;2、对测试用例进行优化设计;二、背景知识结构性测试力求提高测试覆盖率,逻辑覆盖(代码覆盖、结构覆盖)是对一系列测试过程的总称,它是在使用白盒测试法时,选用测试用例执行程序逻辑路径的方法结构性测试是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行。
结构性测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
逻辑覆盖按覆盖程度由低到高大致分为以下几类:(1)语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;(2)判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;(3)条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;(4)判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;(5)条件组合覆盖。
设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。
(6)路径覆盖。
设计足够的测试用例,使程序的每条可能路径都至少执行一次。
如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例三、实验内容使用逻辑覆盖测试方法测试以下程序段void sp (int x,int y,int z){①int k=0, j=0;②if ( (x>3)&&(z<10) )③{④k=x*y-1;⑤j=sqrt(k);⑥}⑦if((x==4)||(y>5))⑧j=x*y+10;⑨j=j%3;⑩}要求:(1)写出软件测试计划。
(2)分别以语句覆盖、判定/条件覆盖、组合覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
实验⼀⽩盒测试(⼀)实验⼀⽩盒测试(⼀)⼀、实验⽅法:1、项⽬任务驱动教学法;2、“讲、学、练”相结合。
⼆、实验仪器与设备:1、计算机(要求:CPU 1000MHz以上,内存512M以上,磁盘空间20G以上。
);2、Eclipse;3、⼀个JAVA程序;三、实验⽬的:1、掌握⽩盒测试理论;2、掌握⽩盒测试的重要⽅法;3、掌握逻辑覆盖⽅法的原理;4、分析程序,设计逻辑覆盖的测试⽤例四、实验重点:1、逻辑覆盖⽅法的原理;2、分析程序,设计逻辑覆盖的测试⽤例。
五、实验难点:1、分析程序,设计逻辑覆盖的测试⽤例六、实验项⽬:使⽤逻辑覆盖⽅法测试⼀个JA V A程序1、实训要求:1、JAVA 程序。
2、根据⽩盒测试技术的逻辑覆盖⽅法设计程序的测试⽤例。
2、实训步骤:1、编写程序public static int DoWord(int x,int y,int z){if(x>3&&z<10)y=y/x+4;if (x==4 || y>5)y=x*y-10;return y;}2、设计测试⽤例(1)根据⽩盒测试技术的逻辑覆盖⽅法设计该程序的测试⽤例,分别满⾜:a.语句覆盖b.判定覆盖if(x>3&&z<10)y=y/x+4;if (x==4 || y>5)y=x*y-10;return y;}(2)根据上⾯设计的测试⽤例使⽤Junit编写程序进⾏测试。
要求:包括测试⽤例和预期结果,并书写实验报告。
白盒测试实验报告关于三角形问题的白盒测试实验报告一、实验目的1、能熟练应用功能性测试技术进行测试用例设计;2、对测试用例进行优化设计;二、实验内容1、题目内容描述针对实验一编写的源代码进行白盒测试。
要求绘制出程序的控制流图,采用逻辑覆盖和基路径方法设计测试用例。
执行测试用例,并分析测试结果。
可以使用C++Test对代码进行静态检查和动态测试。
2、测试用例的编写根据条件绘制程序流程图如下:由程序流程图得如下控制流图:采用逻辑覆盖设计测试用例并执行测试用例:(1)语句覆盖:(2)判定覆盖(3)条件覆盖:(4)判定-条件覆盖:(5)条件组合覆盖:(6)路径覆盖:基路径方法设计测试用例并执行测试用例:3、测试结果分析经过以上测试发现:程序无法结束,达不到预测结果。
其余均能正确执行达到预期结果。
4、实验思考通过本次试验,对C++test工具有了一定的认识,学会了一些基本的用法和操作,用该工具测出了一些代码规范的问题,能够分析测试结果了。
本实验用两种方法对程序进行测试,从中可看出,基路径测试比逻辑覆盖测试过程简单,但是没有逻辑覆盖测试的效果好。
所以,我觉得应该更加熟悉两种测试方法的特色,以便在以后的测试中能更快更准确的选择测试方法,快速测试,找到程序中的错误。
附录:程序代码#include "iostream.h"#include "stdio.h"void Judge(int m_num1,int m_num2,int m_num3){while(scanf("%d %d %d",&m_num1,&m_num2,&m_num3)! =EOF){if(!(m_num1+m_num2<=m_num3 || m_num1+m_num3<=m_num2 || m_num2+m_num3<=m_num1)) {if (m_num1==m_num2 && m_num1==m_num3)cout<<"等边三角形"<else if (m_num1==m_num2 || m_num1==m_num3 || m_num2==m_num3)cout<<"等腰三角形"<elsecout<<"一般三角形"<}else{cout<<"不是三角形"<}}}void main(){int a,b,c;Judge(a,b,c);}第二篇:黑盒测试实验报告 12000字黑盒测试实验报告一实验内容1、系统地学习和理解黑盒测试的基本概念、原理,掌握黑盒测试的基本技术和方法;2、对一个已知的程序进行测试。
白盒测试测试报告模板:测试报告模板测试白盒测试方法黑盒测试和白盒测试接口测试是白盒测试吗篇一:白盒测试实验报告-范例广西科技大学计算机学院《软件测试技术》实验报告书实验一白盒测试学生姓名:xxxx 学号:xxxx 班级:xxxx 指导老师:xxxxx 专业:计算机学院软件工程提交日期:2014年10月20日白盒测试实验报告一实验内容1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。
3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力;4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法;5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例,测试报告等)二实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。
其又称为结构测试。
对于该实验的例子给出其流程图如下图所示,我们来了解白盒测试的基本技术和方法。
语句覆盖是指选择足够的测试用例,使得程序中每个语句至少执行一次。
如上例选择测试用例x=1,y=1和x=1,y=-1可覆盖所有语句。
判定覆盖是指选择足够的测试用例,使得程序中每一个判定至少获得一次”真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。
选择测试用例x=1,y=1和x=1,y=-1可覆盖所有判定。
条件覆盖是指选择语句多数的测试用例,使得程序判定中的每个条件能获得各种不同的结果。
选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有条件。
判定/条件覆盖是指选择足够多的测试用例,使得程序判定中每个条件取得条件可能的值,并使每个判定取到各种可能的结果(每个分支都通过一次)。
实验01白盒测试方法[实验目的]1.掌握白盒测试技术2.能应用白盒测试技术设计测试用例;[预习要求]1.逻辑覆盖:逻辑覆盖按覆盖程度由低到高大致分为以下几类:(1)语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;(2)判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;(3)条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;(4)判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;(5)条件组合覆盖。
设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。
(6)路径覆盖。
设计足够的测试用例,使程序的每条可能路径都至少执行一次。
如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。
2.基本路径测试:基本路径测试法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
步骤:(1)依据代码绘制流程图(2)确定流程图的环路复杂度(3)确定线性独立路径的基本集合(4)设计测试用例覆盖每条基本路径[实验题]三角形问题输入三个整数a,b,c,分别作为三角形的三条边,现通过程序判断三条边构成三角形的类型为:a)一般三角形b)等边三角形c)等腰三角形d)不构成三角形要求:(1)编写代码:根据题目描述使用Java编写三角形类,其中包括判定三条边构成三角形的方法。
(2)绘制控制流图:列出所编写的代码,注明语句编号,画出程序的控制流图。
(3)设计测试用例:分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
格式参照以下表格:(4)编写测试代码,执行测试:使用JUnit编写测试代码,并在上表中记录测试结果。
广西科技大学计算机学院《软件测试技术》实验报告书实验一白盒测试学生姓名:xxxx学号:xxxx班级:xxxx指导老师:xxxxx专业:计算机学院软件工程提交日期:2014年10月20日白盒测试实验报告一实验内容1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。
3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力;4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法;5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例,测试报告等)二实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。
其又称为结构测试。
对于该实验的例子给出其流程图如下图所示,我们来了解白盒测试的基本技术和方法。
语句覆盖是指选择足够的测试用例,使得程序中每个语句至少执行一次。
如上例选择测试用例x=1,y=1和x=1,y=-1可覆盖所有语句。
判定覆盖是指选择足够的测试用例,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。
选择测试用例x=1,y=1和x=1,y=-1可覆盖所有判定。
条件覆盖是指选择语句多数的测试用例,使得程序判定中的每个条件能获得各种不同的结果。
选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有条件。
判定/条件覆盖是指选择足够多的测试用例,使得程序判定中每个条件取得条件可能的值,并使每个判定取到各种可能的结果(每个分支都通过一次)。
即满足条件覆盖,又满足判定覆盖。
广西科技大学计算机学院《软件测试技术》实验报告书实验一白盒测试学生姓名:xxxx学号:xxxx班级:xxxx指导老师:xxxxx专业:计算机学院软件工程提交日期:2014年10月20日白盒测试实验报告一实验内容1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。
3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力;4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法;5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例,测试报告等)二实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。
其又称为结构测试。
对于该实验的例子给出其流程图如下图所示,我们来了解白盒测试的基本技术和方法。
语句覆盖是指选择足够的测试用例,使得程序中每个语句至少执行一次。
如上例选择测试用例x=1,y=1和x=1,y=-1可覆盖所有语句。
判定覆盖是指选择足够的测试用例,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。
选择测试用例x=1,y=1和x=1,y=-1可覆盖所有判定。
条件覆盖是指选择语句多数的测试用例,使得程序判定中的每个条件能获得各种不同的结果。
选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有条件。
判定/条件覆盖是指选择足够多的测试用例,使得程序判定中每个条件取得条件可能的值,并使每个判定取到各种可能的结果(每个分支都通过一次)。
即满足条件覆盖,又满足判定覆盖。
黑盒测试(一)和白盒测试(二)实验背景知识结构性测试是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行。
结构性测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
一、逻辑覆盖结构性测试力求提高测试覆盖率。
逻辑覆盖是一系列测试过程的总称,它是在使用白盒测试法时,选用测试用例执行程序逻辑路径的方法。
逻辑覆盖按覆盖程度由低到高大致分为以下几类:(1)语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;(2)判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;(3)条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;(4)判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;(5)条件组合覆盖。
设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。
(6)路径覆盖。
设计足够的测试用例,使程序的每条可能路径都至少执行一次。
如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。
二、基本路径测试如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。
它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。
①程序的控制流图控制流图是描述程序控制流的一种图示方法。
符号○称为控制流图的一个结点,一组顺序处理框可以映射为一个单一的结点。
控制流图中的箭头称为边,它表示了控制流的方向,在选择或多分支结构中分支的汇聚处,即使没有执行语句也应该有一个汇聚结点。
实验一白盒测试实验目的1、掌握白盒测试的基础知识,了解白盒测试又叫结构性测试,是基于被测程序的源代码的测试方法;2、掌握白盒测试的主要检查内容、测试目的及实施步骤;3、掌握白盒测试的3种基本测试方法:逻辑覆盖、路径测试和数据流测试;实验要求1、复习教材的有关内容,掌握白盒测试的3种基本测试方法;2、掌握一门编程语言,能编写代码并执行程序;3、对具体程序的源代码,能分别使用3种测试方法设计测试用例,并实施测试、分析测试结果;实验设备与器材a)硬件:P4以上计算机,512M内存以上,2G以上空闲硬盘空间b)软件:Windows操作系统、java程序设计软件、office系列软件实验原理1、白盒测试的目的和检查内容;2、白盒测试的基本方法;3、根据白盒测试方法设计测试用例及实施测试。
实验内容1、使用例子---三角形问题来进行路径测试。
以下是问题陈述:三角形问题接受三个整数a、b、c作为输入,用做三角形的边。
整数a、b、c 必须满足以下条件:C1: 1≤a≤200 C4: a<b+cC2: 1≤b≤200 C5: b<a+cC3: 1≤c≤200 C6: c<a+b程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。
如果输入值没有满足这些条件中的任何一个,则程序会通过输出信息来进行通知,例如,“b的取值不在允许取值的范围内。
”如果a、b和c取值满足c1、c2和c3,则给出以下四种相互排斥输出中的一个:1、如果三角形等边,则程序的输出是等边三角形。
JUnit2、如果恰好有两条边相等,则程序的输出是等腰三角形。
3、如果没有两条边相等,则程序输出的是不等边三角形。
4、如果c4、c5和c6中有一个条件不满足,则程序输出的是非三角形。
对上述问题进行以下测试工作:1)对上面的问题陈述,使用自己熟悉的编程语言(java)写出程序;public class test{public static void main (String arg[]){Scanner input=new Scanner(System.int);System.out.print("请输入3条边(中间空格隔开)");double a=input.nextDouble();double b=input.nextDouble();double c=input.nextDouble();int s1=0,s2=0;if(a>0&&b>0&&c>0&&a<200&&b<200&&c<200){if(a+b>c&&b+c>a&&c+a>b){if(a==b&&b==c)System.out.print("组成一个等边三角形"); else if(a==b||b==c||a==c)System.out.print("组成一个等腰三角形") }}}}2)根据编写的程序画出程序图;3)按照基路径测试方法,找出所有独立路径;4)根据独立路径设计测试用例;5)实施测试并分析测试结果。
白盒测试实验一
一:实验目的
1.通过实验熟悉测试用例设计
2.通过实验熟悉白盒测试
二:实验内容1:
1.用java编写一个类,完成下面函数的功能,并编写另外一个类,调用该方法:
void DoWork(int x,int y,int z)
{
int k=0,j=0;
if((x>3)&&(z<10))
{
k=x*y-1; //语句块1
j=sqrt(k);
}
if((x= =4)||(y>5))
{
j=x*y+10; //语句块2
}
j=j%3; //语句块3
}
步骤:
1、画出上面函数的流程图。
2、分别使用语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合测试、路径测试设计测试用例
二:实验内容2
public class Test
{
static void dowork(int x,int y,int 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);
System.out.println("j="+j);
}
public static void main(String[] args)
{
dowork(4,6,5);
}
}
步骤:
1、画出流程图。
2、分别使用语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合测试、路径测试设计测试用例。