实训题目基本路径测试用例设计-------上机

合集下载

白盒测试:路径测试及测试用例设计

白盒测试:路径测试及测试用例设计

20 14 —20 15 学年第 2 学期
软件测试技术课程
实验报告
学院:计算机科学技术
专业:软件工程
班级:软件12401
*名:***
学号:*********
任课教师:***
实验日期:2015年 6 月16 日实验题目实验5、白盒测试:路径测试及测试用例设计
实验目的1、掌握独立路径,程序基本路径测试的概念。

2、掌握独立路径测试法。

实验内容
程序int binsearch(int array[],int key)实现折半查找的功能。

数组array元素按升序排列,length为数组array的长度,key为要查找的值。

试用独立路径集测试法测试该程序,撰写实验报告。

关键代码如下(Java实现)
public static int binsearch(int array[],int key)
{
int low = 0;
int high = array.length - 1;
int middle;
while(low <= high)
{
middle = (low+high)/2;
if(array.[middle] == key)
{
return middle;
}else
if(array.[middle] < key)
{
low = middle +1;
}else
{
high = middle - 1;
}
}
return -1;
}
实验步骤:
1)画出程序的流图(控制流程图)。

软件白盒测试-基本路径测试

软件白盒测试-基本路径测试

软件白盒测试-基本路径测试基本路径测试也是一种常用的白盒测试用例设计方法。

在实际工作中,即使一个简单的程序,路径数量往往也比较多,要在测试中覆盖所有的路径是不现实的。

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

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

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

控制流图是退化的程序流程图,它是把程序流程图中的每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧。

这种图只描述程序内部的控制流程,完全不表现对数据的具体操作以及分支和循环的具体条件。

因此,它往往把一个简单的if语句与循环语句的复杂性看成是一样的,把嵌套的if语句与case语句的复杂性看成是一样的。

程序中的基本控制结构对应的图形符号如图1.1所示。

图1.1控制结构示意图图中的圆圈为控制流图的一个结点,它表示一个或多个无分支的源代码语句。

在绘制控制流图前,一般先画出程序的流程图,再把流程图映射成控制流图。

例如,有下面的函数。

void sort(int iRecordNum,int iType)1 {2 int x=0;3 int y=0;4 while (iRecordNum-- > 0)5 {6 if(0==iType)7 x=y+2;8 else9 if(1==iType)10 x=y+10;11 else12 x=y+20;13 }14 }其流程图如图1.2所示。

把流程图映射成对应的控制流图,如图1.3所示。

图1.2流程图图1.3控制流图映射关系如下。

一组顺序处理框可以映射为一个单一结点。

控制流图中的箭头表示了控制流的方向,类似于流程图中的流线,一条边必须终止于一个结点,但在选择或多分支结构中分支的汇聚处,即使没有可执行语句也应该绘制一个结点。

软件测试基本路径法设计测试用例Junit单元测试

软件测试基本路径法设计测试用例Junit单元测试

一、实验目的1、掌握用基本路径法设计测试用例。

2、掌握用Junit进行单元测试二、实验内容1、对三角形问题,用基本路径法设计白盒测试用例。

2.使用Junit对下面的类进行测试:有一个存款帐户类Money,暂时有存款add和Money类对象的比较equals方法。

三、实验环境Windows XP ProfessionJBuilder 2008 R2四、实验步骤(1)基本路径法设计测试用例1、程序如下:public void Testtriangle(int a, int b, int c)1. {2. bool j, k;3. j = ((a > 0 || a <= 100) || (b > 0 || b <= 100) || (c > 0 || c <= 100));4. k = (a < b + c) && (b < a + c) && (c < a + b);5. if (!k)6. Console.WriteLine("非三角形");7. if(j && k )8. {9. if (a == b||b == c||c==a)10. {{if (a==b && b==c && c==a)11. Console.WriteLine("等边三角形");}12. else Console.WriteLine("等腰三角形"); }13. else if(a*a+b*b==c*c||a*a+c*c==b*b|| b*b +c*c==a*a)14. { {if (a == b||b == c||c==a)15. Console.WriteLine("等腰直角三角形");}16.else Console.WriteLine("直角三角形");}17. else18. Console.WriteLine("一般三角形");19. }20. }2、程序流程图4、计算环形复杂度18(条边)- 14(个节点)+ 2 =65、导出独立路径路径1:5 → 6→ 20路径2:5→ 7 → 18 → 19→ 20路径3:5→ 7 → 9 → 12 →19→ 20路径4:5→ 7 → 9→ 10 → 11→ 19 → 20路径5:5 → 7 → 13→ 15 →19 → 20路径6:5→ 7 → 13→ 14 →16 → 19 → 206、设计测试用例输入数据预期输出测试路径测试用例1 k=0 非三角形路径1测试用例2 K=1 一般三角形路径2测试用例3 k=1,a=3,b=3,c=2 等腰三角形路径3测试用例4 k=1,a=3,b=3,c=3 等边三角形路径4测试用例5 k=1,a=3,b=4,c=5 直角三角形路径5等腰直角三角形路径6测试用例6k=1,a=1,b=1,c=2(2)Junit单元测试1.先安装Java虚拟机JDK,然后再运行Eclipas;2.启动Eclipse,并在在Eclipse中配置Junit2.1.创建变量JUNIT和JUNIT_SRC。

软件测试之基本路径测试

软件测试之基本路径测试

软件测试之基本路径测试基本路径测试是Tom McCabe[MCC76]首先提出的一种白盒测试技术,基本路径测试方法上”。

允许测试用例设计者导出一个过程设计的逻辑复杂性测度,并使用该测度作为指南来定义执行路径的基本集。

从该基本集导出的测试用例保证对程序中的每一条语句至少执行一次。

1 流图符号在介绍基本路径方法之前,必须先介绍一种简单的控制流表示方法,即流图或程序图①。

流图使用图1-1中的符号描述逻辑控制流,每一种结构化构成元素有一个相应的流图符号。

为了说明流图的用法,我们采用图1-2中的过程设计表示法,此处,流程图用来描述程序控制结构。

图 1-2b将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。

在图1-2b中,每一个圆,称为流图的节点,代表一个或多个语句。

一个处理方框序列和一个菱形决测框可被映射为一个节点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。

一条边必须终止于一个节点,即使该节点并不代表任何语句(例如:参见if-else-then结构的符号)。

由边和节点限定的范围称为区域。

计算区域时应包括图外部的范围①。

任何过程设计表示法都可被翻译成流图,图 1-3显示了一个程序设计语言(PDL,ProgramDesign Language)片段及其对应的流图,注意,对PDL语句进行了编号,并将相应的编号用于流图中。

程序设计中遇到复合条件时,生成的流图变得更为复杂。

当条件语句中用到一个或多个布尔运算符(逻辑OR,AND,NAND,NOR)时,就出现了复合条件。

图1-4中,将一个PDL片段翻译为流图,注意,为语句IF a OR b中的每一个a 和b创建了一个独立的节点,包含条件的节点被称为判定节点,从每一个判定节点发出两条或多条边。

2 环形复杂性环形复杂性是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于基本路径方法,计算所得的值定义了程序基本集的独立路径数量,并为我们提供了确保所有语句至少执行一次的测试数量的上界。

实训题目基本路径测试用例设计-------上机

实训题目基本路径测试用例设计-------上机

实训题目:基本路径测试用例设计------------上机实训目的:1、一步熟悉白盒测试的方法和策略2、点掌握圈复杂度概念和基本路径测试用例设计方法3、增强测试经验实训地点:机房实训课时:2课时实训重点、难点:基本路径测试用例设计实训安排:首先讲解基本路径测试设计测试用例的步骤,要求学生注意总结方法和技巧,然后布置上机任务,要求学生对照课件和课本完成上机任务。

老师在机房进行辅导。

实训步骤:一、Void sort(int i,int j,int k)1 {2 int m,n,p;3 m=n=p=0;4 if (i>5 and j<8)5m++;6else7 if(k>=9)8 n++;9 else10 p++;11 Printf(“%d,%d,%d”,m,n,p);12 }按照基本路径测试方法设计测试用例?1、画流图,计算复杂度2、导出测试用例阅读下列说明,回答问题1 至问题3,将解答填入答题纸的对应栏内。

【说明】使用基本路径法设计出的测试用例能够保证程序的每一条可执行语句在测试过程中至少执行一次。

以下代码由C 语言书写,请按要求回答问题。

Int IsLeap(int year)1 {2 if (year % 4 == 0)3 {4 if (year % 100 == 0)5 {6 if ( year % 400 == 0)7 leap = 1;8 else9 leap = 0;10 }11 else12 leap = 1;13 }14 else15 leap = 0;16 return leap;17 }【问题1】(3 分)请画出以上代码的控制流图【问题2】(4 分)请计算上述控制流图的圈复杂度V(G)(独立线性路径数)【问题3】(8 分)假设输入的取值范围是1000 < year < 2001,请使用基本路径测试法为变量year 设计测试用例,使其满足基本路径覆盖的要求。

实验04.使用基本路径测试法求解“自动售货机”问题

实验04.使用基本路径测试法求解“自动售货机”问题

实验04:使用基本路径测试法求解“自动售货机”问题实验学时:2实验类型:设计实验要求:必修一、实验目的●理解并掌握基本路径覆盖测试法,能够实际运用;●使用Eclipse+JUnit+EclEmma进行单元测试。

二、实验要求●开发环境:Eclipse v3.7及以上版本;JUnit v4.10及以上版本;文本编辑软件。

●硬件要求:CPU PIV 以上,256M 内存,1G 硬盘空间。

●系统要求:Windows98/Me/XP/NT/2000,IE 5 以上。

三、实验内容1.下载并安装Eclipse+JUnit+EclEmma实验环境;2.通读自动售货机程序,并在Eclipse环境下运行该程序;3.使用基本路径测试法设计测试用例;⏹绘制程序控制流图;⏹计算环路复杂度;⏹确定基本路径;⏹设计测试用例。

4.完整填写以下表格:5.编写JUnit测试用例,并运行程序,保证所有测试用例通过测试;6.使用EclEmma检测测试用例覆盖率,保证覆盖率达到100%。

四、实验结果检查与评定●提交时间:2013年4月24日之前/2013年5月1日22:00之前●提交地址:学习委员邮箱●文档命名方式:12软件专升本X班_0907052XXX_张三_实验04.doc实验报告实验序号:实验项目名称:附录问题描述自动售货机程序:●若投入5角钱或1元钱的硬币,按下“橙汁”或“啤酒”按钮,则相应的饮料就送出来;●若售货机没有零钱找,则显示“零钱找完”的红灯亮,这是再投入一元硬币并按下按钮后,饮料不送出来而且1元硬币也退出来;●若有零钱找,则显示“零钱找完”的红灯灭,在送出饮料的同时退还5角硬币。

程序流程图实验源代码(有缺陷的源代码)public class Sale Mac hine {priv ate in t c ount OfB eer, c o untO fOr ang eJu ice, co unt OfF i veCe nts, c oun tOfO neD oll ar;priv ate St rin g[] typ eOf Goo d s = {"B eer", "Ora nge Jui ce"};priv ate St rin g re sul tOf Dea l;publ ic Sal eMa chin e(){init ial();}publ ic voi d i niti al(){coun tOfBee r = 6;coun tOfOra nge Juic e = 6;coun tOfFiv eCe nts= 6;coun tOfOne Dol lar = 6;}publ ic Sal eMa chin e(i nt fiv e Cent s, int on eDol lar, i nt n umOf Bee r, int num OfO ran ge) //便于测试的初始化函数{coun tOfFiv eCe nts= f ive Cen t s;coun tOfOne Dol lar = o neD oll a r;countOf Bee r = num OfB eer;coun tOfOra nge Juic e = nu mOf O rang e;}publ ic Str ing cur ren tSt ate(){Stri ng sta te = "C urr ent St a te\n" +"Be er: "+ c oun tOf Bee r +"\n"+"Or ang e J uic e: " +co unt Of Oran geJ uic e +"\n" +"5 Cen ts: "+ c oun tOf Fiv eC ents + "\n" +"1 Dol lar: " + cou ntO fOn eD olla r;retu rn sta te;}publ ic Str ing ope rat ion(St r ing typ e, Str ing mon ey)//ty pe是用户选择的产品,m one y是用户投币种类{if(m oney.e qua lsIg nor eCa se("5C")) //如果用户投入5角钱{if(t ype.eq ual s(ty peO fGo ods[0]))//如果用户选择啤酒{if(c oun tOf Bee r>0)//如果还有啤酒{coun tOf Bee r--;coun tOf Fiv eCe nts++;resu ltO fDe al= "I npu t I nfo r mati on \n" +"Ty pe: Be er; Mo ney: 5 Ce nt s; C han ge: 0\n\n" + currentSta te();retu rn res ult OfDe al;}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "B eer Sh ort a ge";retu rn res ult OfDe al;}}else if (t ype.equ als(ty peO f Good s[1]))//用户选择橙汁{if(c oun tOf Ora ngeJ uic e > 0){coun tOf Ora nge Juic e--;coun tOf Fiv eCe nts++;resu ltO fDe al= "I npu t I nfo r mati on \n" +"Ty pe: Or ang eJu ice; M one y: 5 C ent s; Cha nge: 0\n\n" + currentSta te();retu rn res ult OfDe al;}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "T ype Er ror";retu rn res ult OfDe al;}}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "T ype Er ror";retu rn res ult OfDe al;}}else if(mo ney.equ als Ign ore C ase("1D"))//如果用户投入一元钱{if(c oun tOf Fiv eCen ts>0) //如果用户投入一元钱{if(c oun tOf Fiv eCen ts> 0) //如果用户有零钱{if(t ype.eq ual s(ty peO fGo ods[0])&&co unt OfB eer>0)//如果用户选择啤酒而且还有啤酒{coun tOf Bee r--;coun tOf Fiv eCe nts--;coun tOf One Dol lar++;resu ltO fDe al= "I npu t I nfo r mati on \n" +"yp e: Bee r; M one y: 1 Do lla r; Ch ang e: 5 Ce nts\n\n"+ currentSta te();retu rn res ult OfDe al;}else if (t ype.equ als(ty peO f Good s[1]))//如果用户选择橙汁而且还有橙汁{coun tOf Ora nge Juic e --;coun tOf Fiv eCe nts--;coun tOf One Dol lar ++;resu ltO fDe al= "I npu t I nfo r mati on: \n" +"Ty pe: Or ang eJu ice; M one y: 1 D oll ar; Ch ange: 5 Cents\n\n" + curr ent Sta te();retu rn res ult OfDe al;}else{if(t ype.eq ual s(ty peO fGo ods[0])&&co unt OfO rang eJu ice<=0){resu ltO fDe al= "F ail ue Inf o rmat ion \n" +"Be er Sho rta g e";retu rn res ult OfDe al;}else if(ty pe.equa ls(typ eOf G oods[1])&&cou ntOf Ora nge Jui c e<=0){resu ltO fDe al= "Fai lur e Info r mati on \n"+"O ran geJ uice S hor tage";retu rn res ult OfDe al;}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "T ype Er ror";retu rn res ult OfDe al;}}}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "C han ge Sho r tage";retu rn res ult OfDe al;}}else{resu ltO fDe al= "F ail ure In f orma tio n \n"+ "M one y E rro r";retu rn res ult OfDe al;}}resu ltOfDe al = "F ail ure In f orma tio n \n"+ "M one y E rro r";retu rn res ult OfDe al;}}测试用例示例代码:import static org.junit.Assert.*;import org.junit.Before;import org.junit.Test;public class SaleMachineTest {SaleMachine saleMachine = new SaleMachine();@Beforepublic void setUp() throws Exception {}@Testpublic void testOperation1() {String expectedResult = "Input Information \n" +"Type: OrangeJuice; Money: 5 Cents; Change: 0\n\n" +"Current State\n" +"Beer: 6\n" +"Orange Juice: 5\n" +"5 Cents: 7\n" +"1 Dollar: 6";assertEquals(expectedResult,saleMachine.operation("OrangeJuice", "5C"));}}。

软件测试技术实践考核上机练习题(1004)

软件测试技术实践考核上机练习题(1004)

一、编程语言及上机环境(1)C/C++编程语言(2)VC++6.0及以上编译环境二、考试内容1、功能(黑盒)测试用例设计编程实现(1)等价类划分法(2)边界值分析法(3)因果图法(4)决策表法2、结构(白盒)测试用例设计编程实现(1)语句覆盖(2)判定覆盖(3)条件覆盖(4)组合覆盖(5)路径覆盖(6)独立路径测试三、上机考试程序(1)考生抽取试题。

(2)排定考试座位(机位)。

(3)启动上机环境。

(4)开始考试。

(5)程序验收。

(6)适当的口试。

(7)成绩评定。

上机考试时间为120分钟。

上机考试成绩评定的依据主要是根据试题的完成情况和程序的运行结果,以及必要的口试。

四、考生注意事项1、平时训练与考试(1)思想重视明确考试目的,端正考试态度,认真做好上机考试的准备工作。

(2)知识准备平时认真学习,消化课程内容,熟悉编程环境和工具,认真做好课程实验。

(3)平时训练应针对上机考试题型做好平时训练。

2、遵守考场纪律对于下列情况之一者,实践课成绩为不及格。

(1)上机程序运行未通过。

(2)拷贝他人的上机程序。

(3)上机考试严重违纪。

练习题(一)1、NextDate函数问题说明:输入一个日期,求从输入日期算起的第三天日期。

例如,输入为2008年8月8日,则该程序的输出为2008年8月10日。

NextDate函数包含三个整数变量month、day和year,并且满足下列条件:1≤ month ≤12、1≤day ≤31和2000≤ year ≤2100。

分析各种输入情况,列出为输入变量month、day、year划分的有效等价类:输入等价类输入ID 有效等价类day 1 1 ≤day≤262 day=273 day=284 day=295 day=306 day=31month 7 month=4,6,9,118 month=1,3,5,7,8,109 month=210 month=12year 11 闰年12 非闰年编程实现:(1)对每一个有效等价类,至少设计一个测试用例。

软件测试之基本路径测试

软件测试之基本路径测试

软件测试之基本路径测试软件测试之基本路径测试基本路径测试是Tom McCabe[MCC76]首先提出的一种白盒测试技术,基本路径测试方法上”。

允许测试用例设计者导出一个过程设计的逻辑复杂性测度,并使用该测度作为指南来定义执行路径的基本集。

从该基本集导出的测试用例保证对程序中的每一条语句至少执行一次。

1 流图符号在介绍基本路径方法之前,必须先介绍一种简单的控制流表示方法,即流图或程序图①。

流图使用图1-1中的符号描述逻辑控制流,每一种结构化构成元素有一个相应的流图符号。

为了说明流图的用法,我们采用图1-2中的过程设计表示法,此处,流程图用来描述程序控制结构。

图 1-2b将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。

在图1-2b中,每一个圆,称为流图的节点,代表一个或多个语句。

一个处理方框序列和一个菱形决测框可被映射为一个节点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。

一条边必须终止于一个节点,即使该节点并不代表任何语句(例如:参见if-else-then结构的符号)。

由边和节点限定的范围称为区域。

计算区域时应包括图外部的范围①。

任何过程设计表示法都可被翻译成流图,图1-3显示了一个程序设计语言(PDL,ProgramDesign Language)片段及其对应的流图,注意,对PDL语句进行了编号,并将相应的编号用于流图中。

程序设计中遇到复合条件时,生成的流图变得更为复杂。

当条件语句中用到一个或多个布尔运算符(逻辑OR,AND,NAND,NOR)时,就出现了复合条件。

图1-4中,将一个PDL片段翻译为流图,注意,为语句IF a OR b中的每一个a 和b创建了一个独立的节点,包含条件的节点被称为判定节点,从每一个判定节点发出两条或多条边。

2 环形复杂性环形复杂性是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于基本路径方法,计算所得的值定义了程序基本集的独立路径数量,并为我们提供了确保所有语句至少执行一次的测试数量的上界。

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

实训题目:基本路径测试用例设计------------上机
实训目的:
1、一步熟悉白盒测试的方法和策略
2、点掌握圈复杂度概念和基本路径测试用例设计方法
3、增强测试经验
实训地点:机房
实训课时:2课时
实训重点、难点:基本路径测试用例设计
实训安排:首先讲解基本路径测试设计测试用例的步骤,要求学生注意总结方法和技巧,然后布置上机任务,要求学生对照课件和课本完成上机任务。

老师在机房进行辅导。

实训步骤:
一、Void sort(int i,int j,int k)
1 {
2 int m,n,p;
3 m=n=p=0;
4 if (i>
5 and j<8)
5m++;
6else
7 if(k>=9)
8 n++;
9 else
10 p++;
11 Printf(“%d,%d,%d”,m,n,p);
12 }
按照基本路径测试方法设计测试用例?
1、画流图,计算复杂度
2、导出测试用例
阅读下列说明,回答问题1 至问题3,将解答填入答题纸的对应栏内。

【说明】
使用基本路径法设计出的测试用例能够保证程序的每一条可执行语句在测试过程中至少执行一次。

以下代码由C 语言书写,请按要求回答问题。

Int IsLeap(int year)
2 if (year % 4 == 0)
3 {
4 if (year % 100 == 0)
5 {
6 if ( year % 400 == 0)
7 leap = 1;
8 else
9 leap = 0;
10 }
11 else
12 leap = 1;
13 }
14 else
15 leap = 0;
16 return leap;
【问题1】(3 分)
请画出以上代码的控制流图
【问题2】(4 分)
请计算上述控制流图的圈复杂度V(G)(独立线性路径数)
【问题3】(8 分)
假设输入的取值范围是1000 < year < 2001,请使用基本路径测试法为变量year 设计测试用例,使其满足基本路径覆盖的要求。

?。

相关文档
最新文档