实验二 白盒测试 (2)

合集下载

软件测试技术实验报告册

软件测试技术实验报告册

工程学院计算机学院软件测试技术实验报告册适用专业:学期: 专业: 班级: 学号: 姓名: 指导教师:2014年9月目录实验一 (1)实验二 (5)实验三 (10)实验四 (13)实验五 (16)实验六 (19)附录 (22)实验一、黑盒测试一、实验目的1、熟练掌握黑盒测试方法的相关知识和方法;2、熟练等价类划分方法、边界值分析法、判定表方法和因果图法;3、掌握基本的测试用例的设计。

二、实验容1.题目一:问题某城市由三部分组成。

它们的名称和容分别是:(1)地区码:空白或三位数字;(2)前缀:非'0'或'1'的三位数字;(3)后缀:4位数字。

假定被测程序能接受一切符合上述规定的,拒绝所有不符合规定的。

根据该程序的规格说明,作等价类的划分,并设计测试方案。

2.题目二:三角形问题根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。

“一个程序读入三个整数。

把此三个数值看成是一个三角形的三个边。

这个程序要打印出信息,说明这个三角形是三边不等的、是等腰的、还是等边的。

”3.题目三:日期问题用决策表测试法测试以下程序:该程序有三个输入变量month、day、year(month 、 day和year均为整数值,并且满足:1≤month≤12和1≤day≤31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。

例如,输入为2004 年11月29日,则该程序的输出为2004年12月1日。

(1) 分析各种输入情况,列出为输入变量 month 、 day 、 year 划分的有效等价类。

(2) 分析程序的规格说明,并结合以上等价类划分的情况,给出问题规定的可能采取的操作(即列出所有的动作桩)。

(3) 根据 (1) 和 (2) ,画出简化后的决策表。

4.题目四:找零钱最佳组合假设商店货品价格(R)皆不大于100元(且为整数),若顾客付款在100元 (P) ,求找给顾客最少货币个()数?(货币面值50元10 元,5 元,1元四种)三、实验要求(1)根据题目要求编写测试用例(参照表1进行用例设计);(2)实验结果要求给出两套测试用例集测试效果比较;(3)撰写实验报告四、实验容清单实验二、白盒测试一、实验目的1、熟练掌握白盒测试方法的相关知识和方法;2、熟练语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖和基本路径测试法;3、掌握基本的测试用例的设计。

白盒测试2

白盒测试2

南京信息工程大学实验(实习)报告实验(实习)名称白盒测试2实验(实习)日期2011.5.26得分指导教师徐旦华系计算机专业软件工程年级 08 班次 2 姓名学号 20082344059一、实验目的理解白盒测试的基本方法,掌握语句覆盖、分支覆盖、条件覆盖、路径覆盖等代码覆盖测试策略,并能应用白盒测试技术设计测试用例二实验准备主流PC 机一套,要求安装windows 操作系统和Office 工具及相应编程软件;三实验内容被测程序:寻找最大数程序:max.numbers程序操作说明:从键盘输入3个整数(间隔为空格),找出并输出其中数值最大的那一个。

如果其中有一个以上的最大数(相等的情况),也要表示出来。

#include<stdio.h>1 void main()2 {3 int i,a,b,c;4 i = 0;5 while(i<100) {6 printf("Enter numbers: ");7 scanf("%d %d %d",&a,&b,&c);8 if(a>b)9 {10 if(a>c)11 printf("max. a=%d\n",a);12 else if(a==c)13 printf("max. a=c=%d\n",c);14 else15 printf("max. c=%d\n",c);16 }17 else{18 if(a==b)19 {20 if(a>c)21 printf("max. a=b=%d\n",a);22 else23 if(a==c)24 printf("max. a=b=c=%d\n",c);25 else26 printf("max. c=%d\n",c);27 }28 else{29 if(b>c)30 printf("max. b=%d\n",b);31 else32 if(b==c)33 printf("max. b=c=%d\n",b);34 else35 printf("max. c=%d\n",c);36 }37 }38 i++;39 }40 }实验要求:依据语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖、基本路径测试分别给出测试用例。

白盒测试实验报告(2)

白盒测试实验报告(2)

白盒测试实验报告,(2)软件学院综合性、设计性实验报告专业:年级/班级:20152016学年第一学期课程名称软件测试指导教师本组成员学号姓名实验地点实验时间2015年12月26日项目名称白盒测试实验类型综合性/设计性一、实验目的1.通过实验熟悉测试用例设计2.通过实验熟悉白盒测试二、实验仪器或设备计科楼计算机三、总体设计(设计原理、设计方案及流程等)程序流程图:程序控制流图四、实验步骤(包括主要步骤、代码分析等)代码分析/**判断三角形的类*/publicclassTriangleTestMethod{/**判断三角形的种类。

参数a,b,c分别为三角形的三边,*返回的参数值为0,表示非三角形;*为1,表示普通三角形;*为2,表示等腰三角形;*为3,表示等边三角形。

*/publicstaticintcomfirm(inta,intb,intc){if((a+bc)(b+ca)(a+ cb)){//判断为三角形if((a==b)(b==c))//判断为等边三角形return3;if((a==b)||(b==c)||(a==c))//判断为等腰三角形return2; else//判断为普通三角形return1;}else{//为非三角形return0;}}}三、测试用例1.语句覆盖测试用例:输入期望输出覆盖对象测试结果Case10①,⑤0a=1,b=6,c=7Case2a=3,b=4,c=51①,②,④,⑥1Case3a=3,b=3,c=42①,②,④,⑦2Case4a=3,b=4,c=53①,②,③32.判定覆盖测试用例输入期望输出覆盖对象测试结果Case11a=1,b=2,c=30①,⑤0Case12a=3,b=4,c=51①,②,④,⑥1Case1 3a=3,b=3,c=42①,②,④,⑦2Case14a=3,b=4,c=53①,②,③33.条件覆盖测试用例输入期望输出覆盖对象测试结果Case5a=1,b=2,c=30F1,T2,T30Case6a=7,b=1,c=60T1,F2,T30Case7a= 1,b=7,c=60T1,T2,F30Case8a=3,b=3,c=42T1,T2,T3,T4,2F5,T6,F7,F 8Case9a=3,b=4,c=32T1,T2,T3,F4,2F5,F6,F7,T8Case10a=4,b=3,c=3 2T1,T2,T3,F4,2T5,F6,T7,F84.条件-判定覆盖测试用例输入期望输出覆盖对象测试结果Case15a=1,b=6,c=70F1,T2,T30(①,②)Case16a=1,b=1,c=60T1,F2,T 30(①,②))Case17a=7,b=1,c=60T1,T2,F30(①,②)Case18a=3,b=4,c =32T1,T2,T3,T4,2F5,T6,F7,F8(①,②,③,⑦)Case19a=4,b=3,c=32F T1,T2,T3,4,2F5,F6,F7,T8(①,②,③,⑦)Case20a=3,b=3,c=42T1,T2 ,T3,F4,2T5,F6,T7,F8(①,②,③,⑦)Case21a=3,b=3,c=33F1,T2,T33 (①,②,③)Case22a=3,b=4,c=51T1,F2,T31(①,②,④,⑥)5.条件组合覆盖测试用例输入期望输出覆盖对象测试结果Case23a=1,b=6,c=70F1,T2,T30Case24a=7,b=6,c=10T1,F2,T30Case2 5a=1,b=7,c=60T1,T2,F20Case26a=3,b=3,c=33T1,T2,T3,3T4,T5Case 27a=3,b=3,c=42T1,T2,T3,T4,F5,F6,F7,T82Case28a=4,b=3,c=32T1, T2,T3,2F4,T5,F6,T7,F8Case29a=3,b=4,c=51T1,T2,T3,1F4,F5,F6,F 7,F8Case30a=3,b=4,c=32T1,T2,T3,2F4,F5,F6,F7,T8备注其他条件组合,无法到达结束基本路径覆盖测试用例输入期望输出覆盖对象测试结果Case31a=7,b=6,c=10A-D0Case32a=1b=6,c=70A-B-D0Case33a=1,b=7, c=60A-B-C-D0Case34a=3,b=3,c=33A-B-C-E-G-3HCase35a=3,b=3,c=4 2A-B-C-E-G-2ICase36a=4,b=3,c=32A-B-C-E-F-2HCase37a=3,b=4,c= 32A-B-C-E-F-J2-HCase38a=3,b=4,c=51A-B-C-E-F-J1-K五、结果分析与总结试验中对于路径测试有了更深的理解,可以更好,更迅速的去划分路径,设计测试用例,通过试验,我对软件测试有了进一步的认识和学习,对白盒测试流程有了较清楚的了解,收获很多。

软件测试-实验2-白盒测试案例分析

软件测试-实验2-白盒测试案例分析

实验2 白盒测试一、实验目的与要求1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力3、掌握路径法测试二、实验设备1、电脑PC三、实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。

它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。

这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。

1、语句覆盖语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。

无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。

2、判定覆盖又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。

判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。

3、条件覆盖、条件判定覆盖条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。

条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。

4、条件组合覆盖又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。

线性地增加了测试用例的数量。

5、基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。

实验二 白盒测试 (2)

实验二 白盒测试 (2)

实验二白盒测试一、实验目的1、掌握白盒测试的基本方法;2、掌握白盒测试用例的编写。

二、实验要求1、根据给出的程序分别使用语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定-条件覆盖、条件组合测试、路径测试设计测试用例。

2、输入数据进行测试,填写测试用例。

三、实验内容1、用C++或者Java编写一个类,完成下面函数的功能,并编写另外一个类,调用该方法:void DoWork(int x,int y,int z){int k=0,j=0;if((x>3)&&(z<10)){k=x*y-1; //语句块1j=sqrt(k);}if((x= =4)||(y>5)){j=x*y+10; //语句块2}j=j%3; //语句块3}要求:(1)画出上面函数的流程图。

(2)分别使用语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定-条件覆盖、条件组合测试、路径测试设计测试用例(注意测试用例的格式)。

语句覆盖:用例:x=4,y=6,z=8判定覆盖:用例1:x = 4 , y = 6 , z = 8用例2:x = 3 , y = 5 , z = 8条件覆盖:用例1:x=3,y=8,z=8用例2:x=4,y=5,z=13判定-条件覆盖:用例1:x=4,y=8,z=8用例2:x=3,y=5,z=13条件组合测试用例1:x=4,y=8,z=8用例2:x=4,y=3,z=13用例3:x=2,y=8,z=8用例4:x=2,y=3,z=13路径测试:用例1:x=4,y=8,z=8用例2:x=4,y=3,z=13用例3:x=6,y=2,z=8用例4:x=2,y=3,z=13(3)执行每个测试用例,执行完毕后填写测试用例。

2、用C++或者Java编写“计算被输入日期是星期几,例如公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几。

”测试用例;程序说明:A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数;B闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)。

软件测试实验报告

软件测试实验报告

学号:《软件测试技术》实验报告与习题册2014 / 2015 学年第2学期系别计算机学院专业班级一班姓名指导教师实验时间:实验地点:实验学时:实验时间:实验地点:实验学时:目录项目成绩批改时间实验一基于白盒测试的用例设计与验证(一)实验二基于白盒测试的用例设计与验证(二)实验三基于黑盒测试的用例设计与验证(一)实验四基于黑盒测试的用例设计与验证(二)实验五JUnit的安装与使用实验六LoadRunner的使用实验七WinRunner的使用实验时间:实验地点:实验学时:实验一:基于白盒测试的用例设计与验证(一)一.实验目的(1)熟悉Eclipse开发环境(2)掌握Java语言的基本语法,能够利用Java实现简单的程序开发(3)熟悉白盒测试基本原理(4)掌握白盒测试的逻辑覆盖法,能够依据语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖的原理进行相应测试用例的设计工作。

二.实验内容(1)选择一门语言,完成指定的单元程序开发。

#include<stdio.h>void main(){int m,n,p,q;printf("please input m,n,p,q:\n");scanf("%d,%d,%d,%d",&m,&n,&p,&q);if(m>0&&n<6){m=n+3;n=n*2;}if(p>5||q<0){p=2*q+5;q++;}printf("输出的四个数是:%d,%d,%d,%d\n",m,n,p,q);实验时间: 实验地点: 实验学时:return ; }(2)分别依据白盒测试逻辑覆盖法中的语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖的原理设计相应的测试用例。

(3)根据给定的流程图,实际运行测试用例,检测程序的实现是否正确。

实验2白盒测试

实验2白盒测试

实验2⽩盒测试实验2 ⽩盒测试⼀、实验⽬的1. 了解⽩盒测试的概念。

2. 掌握⽩盒测试的主要⽅法。

3. 掌握⽩盒测试⼯具JUnit的安装和使⽤⽅法。

4. 利⽤⽩盒测试⼯具JUnit,针对⼀个具体问题进⾏测试,掌握测试的基本过程、测试⽤例的编写和测试结果的分析⽅法。

⼆、实验内容1. ⽩盒测试⼯具JUnit的安装和使⽤⽅法。

2. 利⽤⽩盒测试⼯具JUnit测试某个Java类(⿎励测试⾃⼰编写的Java类)。

三、实验要求1. ⾃⼰编写测试⽤例。

2. 使⽤JUnit软件对测试⽤例进⾏测试。

3. 记录并分析测试结果。

四、操作⽅法与实验步骤0. 准备⼯作在Eclipse中新建项⽬Calculator,再创建类Calculator。

该类实现加、减、乘、除四则运算。

为了体验测试过程,故意给出某些错误。

代码如下:public class Calculator {private static int result;public void add(int n) {result=result+n;}public void substract(int n) {result=result-1; 正确的是result=result-n}public void multiply(int n) { 该⽅法待定义,预留接⼝}public void divide(int n) {result=result/1; 正确的是result=result/n }public int getResult() {return result;}}1. 步骤⼀:将JUnit4测试包引⼊Calculator项⽬2. 步骤⼆:⽣成JUnit4测试框架3. 步骤三:在前述⾃动⽣成的测试框架下,⾃⼰编写测试⽤例程序。

4. 步骤四:运⾏测试代码五、测试⽤例测试⽤例代码如下:import static org.junit.Assert.*;import org.junit.After;import org.junit.Before;import org.junit.Test;public class CalculatorTest {private static Calculator calculator=new Calculator();@Beforepublic void setUp() throws Exception {}@Afterpublic void tearDown() throws Exception {}@Testpublic void testAdd() {calculator.add(2);calculator.add(3);assertEquals(5,calculator.getResult());}@Testpublic void testSubstract() {calculator.add(10);calculator.substract(3);assertEquals(7,calculator.getResult());}@Testpublic void testMultiply() {fail("Not yet implemented");}@Testpublic void testDivide() {calculator.add(6);calculator.divide(2);assertEquals(3,calculator.getResult());}}六、测试结果及分析测试运⾏结果如下图所⽰:图2.1 测试运⾏结果图根据报错信息将测试⽤例表补充完整:结合测试⽤例代码和测试结果,分析得错误原因为每⼀次运算调⽤的add()⽅法将输⼊的数据不断累加,⽽⾮初始化,因此对代码做出以下修正:①完善Calculator类中multiply⽅法:public void multiply(int n) {result=result*n;}②在每⼀项测试⽤例前增加语句:calculator.multiply(0);程序修正后测试运⾏结果如下图所⽰:图2.2 修正后的测试运⾏结果图。

黑盒白盒实验(一二)

黑盒白盒实验(一二)

黑盒测试(一)和白盒测试(二)实验背景知识结构性测试是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行。

结构性测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

一、逻辑覆盖结构性测试力求提高测试覆盖率。

逻辑覆盖是一系列测试过程的总称,它是在使用白盒测试法时,选用测试用例执行程序逻辑路径的方法。

逻辑覆盖按覆盖程度由低到高大致分为以下几类:(1)语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;(2)判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;(3)条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;(4)判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;(5)条件组合覆盖。

设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。

(6)路径覆盖。

设计足够的测试用例,使程序的每条可能路径都至少执行一次。

如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。

二、基本路径测试如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。

它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。

①程序的控制流图控制流图是描述程序控制流的一种图示方法。

符号○称为控制流图的一个结点,一组顺序处理框可以映射为一个单一的结点。

控制流图中的箭头称为边,它表示了控制流的方向,在选择或多分支结构中分支的汇聚处,即使没有执行语句也应该有一个汇聚结点。

实验二 Nextdata实验白盒测试

实验二 Nextdata实验白盒测试
实验
分析
实验
分析

实验
分析

实验
分析


本次实验的收获、体会、经验、问题和教训:
关于白盒测试
测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试(White-box Testing)方法。
白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。
2001.11.30
F1、F3、T4、F5
beji
2001.12.1
2.利用路径覆盖分析NextDate函数
基本路径测试方法
(1)控制流图
图2-1 NextDate函数的控制流图
(2)环形复杂度
方法一:V(G)=5(封闭区域)+1=6
方法二:V(G)=16(边数)—12(节点)+2=6
方法三:V(G)=5(判定节点2、3、4、5、6)+1=6
(3)导出基本路径
根据上面的计算结果,可导出基本路径集,列出程序的独立路径,可得出程序段的的基本路径集中有6条独立路径,每条独立路径为一个独立的测试用例。路径如下。
路径1:1→2→3→10→12
路径2:1→2→3→5→9→12
路径3:1→2→3→5→6→7→12
路径4:1→2→3→5→6→8→12
路径5:1→2→4→5→6→8→12
输入条件
覆盖条件
执行路径
预期输出
测试用例1
2000.2.29
T1、T2
ac
2000.3.1
测试用例2
2001.2.28
F1、T3
bd
2001.3.1

白盒测试

白盒测试

湖北科技学院软件测试实验报告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;}public boolean doWork(int x,int y,int z){return true;}}测试程序:(1)package gy.test2;import junit.framework.*;import org.junit.Test;public class DoWorkTest1 extends TestCase { private static int x,y,z;private static DoWork dowork=new DoWork(x,y,z);public void setUp() throws Exception {}@Testpublic void testDoWork() {assertEquals(true, dowork.doWork(4, 8, 8));}}(2)package gy.test2;import static org.junit.Assert.*;import org.junit.Test;public class DoWorkTest2 {private static int x,y,z;private static DoWork dowork=new DoWork(x,y,z);public void setUp() throws Exception {}@Testpublic void testDoWork() {assertEquals(true, dowork.doWork(4, 3, 13));}}(3)package gy.test2;import static org.junit.Assert.*;import org.junit.Test;public class DoWorkTest3 {private static int x,y,z;private static DoWork dowork=new DoWork(x,y,z);public void setUp() throws Exception {}@Testpublic void testDoWork() {assertEquals(true, dowork.doWork(6, 2, 8));}}(4)package gy.test2;import static org.junit.Assert.*;import org.junit.Test;public class DoWorkTest4 {private static int x,y,z;private static DoWork dowork=new DoWork(x,y,z);public void setUp() throws Exception {}@Testpublic void testDoWork() {assertEquals(true, dowork.doWork(2, 3, 13));}}2.源程序:package gy.test;public class BinSearch {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;elselow = mid+1;}return -1;}}测试程序:(1)package gy.test;import junit.framework.*;public class BinSearchTest1 extends TestCase{ private static BinSearch search= new BinSearch();private int array[] = {};public void setUp() throws Exception {}public void testBinSearch() {assertEquals(-1, search.binSearch(array, 1));}}(2)package gy.test;import junit.framework.*;public class BinSearchTest2 extends TestCase { private static BinSearch search= new BinSearch();private int array[] = {2,4,6};public void setUp() throws Exception {}public void testBinSearch() {assertEquals(1, search.binSearch(array, 4));}}(3)package gy.test;import junit.framework.*;public class BinSearchTest3 extends TestCase{ private static BinSearch search= new BinSearch();private int array[] = {2,4,6,8};public void setUp() throws Exception {}public void testBinSearch() {assertEquals(0, search.binSearch(array, 2));}}(4)package gy.test;import junit.framework.*;public class BinSearchTest4 extends TestCase {private static BinSearch search= new BinSearch();private int array[] = {2,4,6,8};public void setUp() throws Exception {}public void testBinSearch() {assertEquals(2, search.binSearch(array, 6));}}。

软件工程实验报告

软件工程实验报告

软件工程实验报告学号:姓名:专业:年月实验一:白盒测试一、实验目的巩固白盒测试知识,对于给定的待测程序,能熟练应用基本控制流覆盖方法设计测试用例;能够执行白盒测试过程,并撰写白盒测试分析报告。

二、实验内容白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。

测试规划基于产品内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试方法。

白盒测试将被测程序看做一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。

白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。

测试内容包括语句覆盖测试、分支覆盖测试、条件覆盖测试、分支/条件覆盖测试、条件组合覆盖测试和基本路径测试。

三、程序代码要求:实现对不少于10个随机输入的数的冒泡排序算法。

#include<iostream>using namespace std;int main(){double a[100];int N;int i = 0, j = 0;cin >> N;//排序元素的个数for (i = 0; i <= N; i++){cin >> a[i];}for (i = 0; i < N-1 ; i++) {for (j = 0; j < N - 1 - i; j++){if (a[j] > a[j + 1]) {int tmp;tmp = a[j];a[j] = a[j + 1];a[j + 1] = tmp;}}}for (i = 0; i < N; i++){cout << a[i] <<" ";}cout << endl;return 0;}四、程序流程图五、测试内容(1)语句覆盖测试测试结果:①②测试结果分析:输入元素时需要输入的元素个数大于最初输入的元素个数。

实验二 白盒测试——基本逻辑覆盖测试方法

实验二 白盒测试——基本逻辑覆盖测试方法

实验二白盒测试基本逻辑覆盖——测试方法1、实验目的(1)理解等价类划分方法的内涵;(2)掌握等价类测试健壮性概念;(3)能够使用等价类划分法设计测试用例。

2、实验预习等价类划分测试方法的主要目的是能够对软件进行完备的测试,同时避免冗余测试用例的存在。

等价类的划分关键是确定类的等价关系,根据单/多缺陷假设和健壮性,等价类划分测试方法可以分为弱一般等价类测试、强一般等价类测试、弱健壮等价类测试和强健壮等价类测试四类方法。

3、实验内容及要求现在有一个应用于旅馆住宿管理系统的程序,其包含了用户登录、用户注册和用户结算等功能,需要对该程序进行测试,具体测试任务主要有:(1)旅馆住宿系统用户名字段测试用例设计;(必做)(2)旅馆住宿系统用户注册测试用例设计;(必做)(3)旅馆住宿系统结算功能测试用例设计。

(选做)在任务1中,用户名限制为6~10位自然数,要求使用等价类划分方法设计测试用例。

在任务2中,用户信息主要有登录帐号(6~10位自然数)、真实姓名(大小写的英文字符)、登录密码和确认密码、出生日期(其中有效年份1900~2010)。

任务3中,旅馆房费结算有一定的规则,当游客入住后可根据房间价格、入住天数、入住人是否有会员卡等情况给予折扣结算,房费计算公式为,房费=房间单价×折扣率×入住天数。

折扣率根据住宿人住宿天数(最多30天)、是否有会员卡、入住次数(3次及以下、3次以上)和物品寄存个数的不同有所不同,体现在不同条件下对应的积分不同,10分及10分以上折扣率为7折,10分以下折扣率为9折,具体规则:要求给出所有这些任务的实验步骤以及强健壮等价类测试用例,并给出实际测试结果。

4、实验总结(1) 请确定任务1和任务2的输入和输出变量。

(2) 对于任务1和任务2,在做健壮性测试用例时,给出输入变量的无效区间。

(3) 请结合实验谈一下等价类划分测试方法的优劣。

软件测试-实验2-静态白盒测试

软件测试-实验2-静态白盒测试

软件质量保证与测试Array 2013春季教师:实验报告2–静态白盒测试学号: 姓名:1引言【此部分简单介绍静态白盒测试相关技术、PC-Lint等】(至少200字)静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。

对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。

静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。

静态测试结果可用于进一步的查错,并为测试用例选取提供指导。

白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。

这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

PC-Lint 是GIMPEL SOFTWARE公司开发的C/C++软件代码静态分析工具,它的全称是PC-Lint/FlexeLint for C/C++,PC-Lint 能够在Windows、MS-DOS和OS/2平台上使用,以二进制可执行文件的形式发布,而FlexeLint 运行于其它平台,以源代码的形式发布。

PC-lint 在全球拥有广泛的客户群,许多大型的软件开发组织都把PC-Lint 检查作为代码走查的第一道工序。

PC-Lint不仅能够对程序进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针以及冗余的代码,还能够有效地帮你提出许多程序在空间利用、运行效率上的改进点。

2测试结果记录表1 静态测试结果分析表1233遗漏缺陷分析【列出你认为静态测试应该可以发现、但被遗漏的缺陷】表2 静态测试遗漏缺陷表44其他的测试代码【你还能想到哪些在编程中容易出现的缺陷?请写出示例代码,记录测试结果。

实验二_白盒测试

实验二_白盒测试

实验二:白盒测试一、实验目的保证一个模块中的所有独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。

二、实验内容要求:被测测试程序功能:PriorDate函数;程序定义:为了获得前一个日期, PriorDate函数执行如下操作:(默认年数大于等于0)如果输入日期day变量值大于1,则把day变量的值减1;如果输入日期是2~12月份中某月的第一天,则把day变量的值置为前一个月的最后一天,month变量的值减1;如果输入日期是1月的第一天,则day变量的值置为31,month变量的值置为12,year变量的值减1。

关于最后一天的判断:如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31;如果是有30天的月份(4,6,9,11),day变量值为30;如果是有29天的月份(闰年的2月),day变量值为29;如果是有28天的月份(非闰年的2月),day变量值为28。

测试环境:Windows 7、Eclipse;三、实验要求根据代码调通程序并进行白盒测试,即用语句覆盖、分支覆盖、条件覆盖、分支/条件覆盖、条件组合覆盖及基本路径测试方法,写出测试用例,执行测试,给出测试报告,实验报告。

四、实验测试用例与测试结果程序的流程图如下图:1.语句覆盖语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=12,year=2012 OBDFHL Y 前一天为:12 11 2012month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于02.分支覆盖执行足够的测试用例,使得程序中的每一个分支至少都通过一次测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=12,year=2012 OBDFHL Y 前一天为:12 11 2012 month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012 month=11,day=12,year=2012 OBDFINY 前一天为:11 11 2012 month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2000 OBDFJRY 前一天为:2 29 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于03.条件覆盖测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=0,day=0,year=1800 OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012 month=11,day=12,year=2012 OBDFINY 前一天为:11 11 2012 month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2000 OBDFJRY 前一天为:2 29 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于0执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。

白盒测试实验二

白盒测试实验二

软件测试基础与实践实验报告实验名称:白盒测试实验二实验地点:机房实验日期:学生姓名:学生学号:一、实验目的(1)巩固白盒测试知识,能熟练应用基本路径测试方法设计测试用例;(2)学习测试用例的书写。

二、实验内容实验背景:已知公元 1 年 1 月 1 日是星期一,我们可以实现一个程序,使得只要输入年月日,程序就能自动回答当天是星期几。

现有 07 级同学实现上述功能的程序 WeekB,该程序用于计算输入日期是星期几。

实验 1:基本路径测试技术实验运用基本路径测试方法,分别对程序 WeekB 中的方法 IsCorrect()和 getResult()进行测试。

要求:(1) 画出程序流图。

(2) 计算环复杂度。

(3) 找到基本路径集合。

(4) 设计具体的测试用例。

一、测试IsCorrect()已在visio中作答,可双击以下打开和编辑Starty<1y%4==0)&&(y%100!=0))||(y%400==0)m<0||m>12d>maxA[m-1]EndTrue maxA[1]=29False123-4-57-8910111223456789if(y<1)return false;else {if(((y%4==0)&&(y%100!=0))||(y%400==0))maxA[1]=29;if(m<0||m>12)return false;else{if(d>maxA[m-1])return false;elsereturn true;}}V(G)=18-12+2=8L1:1-2-11-12L2:1-2-3-7-8-9-11-12L3:1-2-3-4-6-7-8-9-11-12L4:1-2-3-4-5-7-8-9-11-12L5:1-2-3-4-5-6-7-11-12L6:1-2-3-4-5-6-7-8-11-12L7:1-2-3-4-5-6-7-8-9-11-12L8:1-2-3-4-6-7-8-9-10-1216101211测试用例二、测试getResult()已在visio中作答,可双击以下打开和编辑Start for(int i=1)i<yi%4==0)&&(i %100!=0))||(i%400==0)totalDays+=366totalDays+=365y%4==0)&&(y%100!=0))||(y%400==0)maxA[1]=29maxA[1]=28for(int i=1)i<mtotalDays+=maxA[i-1]totalDays+=(d-1)maxA[1]=28return (totalDays%7)End1245-6-79811-12-13151491617182021222312346911long totalDays=0;{for(int i=1;i<y;i++){if(((i%4==0)&&(i%100!=0))||(i%400==0))totalDays+=366;elsetotalDays+=365;}if(((y%4==0)&&(y%100!=0))||(y%400==0))maxA[1]=29;elsemaxA[1]=28;for(int i=1;i<m;i++){totalDays+=maxA[i-1];}totalDays+=(d-1);maxA[1]=28;return (totalDays%7);}V(G)=30-23+2=9L1:1-2-3-4-11-15-16-17-20-21-22-23L2:1-2-3-4-5-9-10-4-11-12-13-15-16-17-20-21-22-23L3:1-2-3-4-5-6-8-10-4-11-12-14-16-17-20-21-22-23L4:1-2-3-4-5-6-7-9-10-4-11-12-13-14-16-17-20-21-22-23L5:1-2-3-4-5-6-7-8-10-4-11-12-13-14-16-17-20-21-22-23L6:1-2-3-4-5-6-7-8-10-4-11-15-16-17-20-21-22-23L7:1-2-3-4-5-6-7-8-10-4-11-12-14-16-17-20-21-22-23L8:1-2-3-4-5-6-7-8-10-4-11-12-13-15-16-17-20-21-22-23L9:1-2-3-4-5-6-7-8-10-4-11-12-13-14-16-17-18-18-20-21-22-23i++i++5781012131415161718192021totalDays =0310192223测试用例三、实验体会要选择的路径太多,但是要覆盖全部路径的数目是相对的.。

白盒测试实验报告-范例

白盒测试实验报告-范例

实验报告书实验一白盒测试学生姓名:李庆忠专业:计算机科学与技术学号:17白盒测试实验报告一实验内容1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。

3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力;4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法;5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例,测试报告等)二实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。

它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。

这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。

其又称为结构测试。

流程图如下图所示实验代码#include""int main(){int x,y,z;scanf("%d%d",&x,&y);if((x>0)&&(y>0)){z=x+y+10;}else{z=x+y-10;}if(z<0){z=0;printf("%d\n",z);}else{printf("%d\n",z);}return 0;}语句覆盖是指选择足够的测试,使得程序中每个语句至少执行一次。

如选择测试x=1,y=1和x=1,y=-1可覆盖所有语句。

判定覆盖是指选择足够的测试,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。

选择测试x=1,y=1和x=1,y=-1可覆盖所有判定。

条件覆盖是指选择语句多数的测试,使得程序判定中的每个条件能获得各种不同的结果。

实验二-白盒测试

实验二-白盒测试

实验二白盒测试一、实验目的通过本实验,熟悉白盒测试的目的、内容,并掌握白盒测试的基本方法,能够按照具体要求对指定的程序设计测试用例并进行测试。

二、相关知识逻辑覆盖法的六种覆盖标准:1、语句覆盖:设计足够的测试用例,使得程序中的每个语句至少执行一次。

2、判定覆盖:设计足够的测试用例,使得在语句覆盖的基础上,程序中每个判定的取“真”分支和取“假”分支至少都执行一次。

3、条件覆盖:设计足够的测试用例,在语句覆盖的基础上使得程序判定中的每个条件能获得各种可能的结果。

4、判定/条件覆盖:设计足够的测试用例,使得判定中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。

5、条件组合覆盖:设计足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次。

6、路径覆盖:每条可能的路径都至少执行一次。

三、实验内容1、对实验一中编写的三角形程序,画出其程序流程图;分析程序流程图,确定程序分支;(1) 设计分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖的测试用例;(2) 用测试用例对程序进行测试,记录测试结果,并对结果进行分析,如果存在缺陷则修改程序,继续测试;运用逻辑覆盖法的六种覆盖标准设计测试用例,并执行测试,撰写实验报告。

四、实验步骤1、根据其题意,可以得出输入为三个整数:a、b、c为三角形的三条边,再根据以下条件输出其类型:条件一:a>0 条件二:b>0 条件三:c>0条件四:a<b+c 条件五:b<a+c 条件六:c<a+b(1)如果输入值a、b、c不满足条件一、条件二、条件三,程序输出“边的取值不符合要求”。

(2)如果输入值a、b、c不满足条件四、条件五、条件六,程序输出“非三角形”。

(3)如果三条边相等,程序输出“等边三角形”。

(4)如果三条边恰好有两边相等,程序输出“等腰三角形”。

(5)如果三条边都不相等,则程序输出为“一般三角形”。

白盒测试实验二

白盒测试实验二

测试计划学号__________姓名________专业_________1引言1.1编写目的本文档的编写目的在于为此程序(Triangle.java)进行三角形问题的白盒测试,包括:输入输出。

具体需求参照三角形问题,利用白盒测试中静态测试方法、逻辑覆盖方法建立测试用例,编写测试计划文档、测试总结报告。

1.2背景说明:a.Windows 7,Eclipseb.阅读客户的需求说明文档1.3定义a:三角形的第一条边b:三角形的第二条边c:三角形的第三条边普通三角形:三边都不相等的三角形等腰三角形:有任意两边相等的三角形等边三角形:三边相等的三角形1.4参考资料a.《软件质量与测试》.孟磊.西安电子科技大学出版社2015年3月1.5程序代码import java.util.Scanner;public class Triangle {public static void main(String[] args) {Scanner reader=new Scanner(System.in);System.out.println("请输入三角形的三边:");int a=reader.nextInt();int b=reader.nextInt();int c=reader.nextInt();if((a*b*c==0)||(a+b<=c)||(a+c<=b)||(b+c<=a)){System.out.println("非三角形");}else if((a==b)&&(a==c)&&(b==c)){System.out.println("正三角形");}else if((a==b)||(b==c)||(a==c)){System.out.println("等腰三角形");}else System.out.println("普通三角形");}}2计划2.1软件说明2.2测试内容功能性测试:根据输入测试能够判断是否可以构成三角形,如果可以构成三角形,又是何种三角形。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二白盒测试一、实验目的1、掌握白盒测试的基本方法;2、掌握白盒测试用例的编写。

二、实验要求1、根据给出的程序分别使用语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定-条件覆盖、条件组合测试、路径测试设计测试用例。

2、输入数据进行测试,填写测试用例。

三、实验内容1、用C++或者Java编写一个类,完成下面函数的功能,并编写另外一个类,调用该方法:void DoWork(int x,int y,int z){int k=0,j=0;if((x>3)&&(z<10)){k=x*y-1; //语句块1j=sqrt(k);}if((x= =4)||(y>5)){j=x*y+10; //语句块2}j=j%3; //语句块3}要求:(1)画出上面函数的流程图。

(2)分别使用语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定-条件覆盖、条件组合测试、路径测试设计测试用例(注意测试用例的格式)。

语句覆盖:用例:x=4,y=6,z=8判定覆盖:用例1:x = 4 , y = 6 , z = 8用例2:x = 3 , y = 5 , z = 8条件覆盖:用例1:x=3,y=8,z=8用例2:x=4,y=5,z=13判定-条件覆盖:用例1:x=4,y=8,z=8用例2:x=3,y=5,z=13条件组合测试用例1:x=4,y=8,z=8用例2:x=4,y=3,z=13用例3:x=2,y=8,z=8用例4:x=2,y=3,z=13路径测试:用例1:x=4,y=8,z=8用例2:x=4,y=3,z=13用例3:x=6,y=2,z=8用例4:x=2,y=3,z=13(3)执行每个测试用例,执行完毕后填写测试用例。

2、用C++或者Java编写“计算被输入日期是星期几,例如公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几。

”测试用例;程序说明:A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数;B闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)。

要求:(1)分析各种输入情况,结合程序输出结果,并给出详细测试用例;(2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例;(3)决策表测试法;①列出输入变量month、 day、 year的有效等价类;(条件桩)②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩)③画出决策表(简化);④根据决策表,给出详细测试用例。

代码:#include <iostream>using namespace std;int main(){int x=1,year, month, day;while(x) {int i, num=0,total, total1, total2;cout<<"请输入年份: ";cin>>year;cout<<"请输入月份: ";cin>>month;cout<<"请输入日期: ";cin>>day;//求得输入年份之前一年末的总天数for(i=1; i<year; i++) {if((i%4==0)&&(i%100!=0)||(i%400==0))num++;}total1 = 365*(year-num-1) + 366*num;//求得输入年份的总天数if((year%4==0)&&(year%100!=0)||(year%400==0)) {//求得输入月份之前一月末的总天数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 {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日到输入日期当天的总天数total = total1 + total2 + day;int week;week = total % 7;cout<<"您输入的日期是";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)环路复杂度计算由图可知,图中的环路有六条,故环路复杂度为六。

3)基本路径集设计基本路径集为:A.1、2、3、4、5、6、7、8、11、12、14、15、16、17、18、19B.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 <iostream>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<<"=====请输入测试用例====="<<endl;int i, num=0,total, total1, total2,qw;cout<<"请输入年份: ";cin>>year;cout<<"请输入月份: ";cin>>month;cout<<"请输入日期: ";cin>>day;cout<<"请输入预期输出结果(星期一到星期天,对应输入1~7):";cin>>qw;cout<<"程序运行路径: 1->2->3->4->5->6->7->8";for(i=1; i<year; i++) {if((i%4==0)&&(i%100!=0)||(i%400==0))num++;}if(i>1){cout<<"->9";if(m1==0){m++;m1=1;}}if(num>0){cout<<"->10";if(m2==0){m++;m2=1;}}total1=365*(year-num-1)+366*num;cout<<"->11->12";if((year%4==0)&&(year%100!=0)||(year%400==0)) { cout<<"->13";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 {cout<<"->14";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;}}cout<<"->15->16->17->18->19"<<endl;total = total1 + total2 + day; int week;week = total % 7;cout<<"-----该测试用例测试结果-----"<<endl; cout<<endl;cout<<"测试用例"<<n<<" : 输入"<<year<<"."<<month<<"."<<day<<", 预期输出为:"; switch(qw%7) {case 0:cout<<"星期天, ";break;case 1:cout<<"星期一, ";break;case 2:cout<<"星期二, ";break;case 3:cout<<"星期三, ";break;case 4:cout<<"星期四, ";break;case 5:cout<<"星期五, ";break;case 6:cout<<"星期六, ";break;}cout<<"实际输出为:";switch(week) {case 0:cout<<"星期天, ";break;case 1:cout<<"星期一, ";break;case 2:cout<<"星期二, ";break;case 3:cout<<"星期三, ";break;case 4:cout<<"星期四, ";break;case 5:cout<<"星期五, ";break;case 6:cout<<"星期六, ";break;}if(week==qw%7) cout<<"成功!"<<endl;else{cout<<"失败!"<<endl; f++;}cout<<endl;cout<<"=====本次测试用例测试已结束,退出测试请输入0,否则任一输入继续测试====="<<endl;cin>>x;}cout<<"最终对main函数中while内循环语句单元测试结果统计:"<<endl;;cout<<"共执行"<<n<<"个测试用例, 总的路径覆盖率:"<<m*100/19<<"%, 其中通过"<<n-f<<"个, 失败"<<f<<"个"<<endl;}测试结果:四、实验步骤1、依次按照每种方法的步骤来写出测试用例2、测试,得出结果。

相关文档
最新文档