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

合集下载

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

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

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. 绘制控制流图:根据程序代码,画出程序的控制流图。

控制流图应该包括所有可能的执行路径和判断条件。

2. 确定基本路径:从控制流图中找出所有可能的基本路径。

一个基本路径是从程序入口到出口之间没有分支或循环的最长路径。

3. 设计测试用例:对于每个基本路径,设计至少一个测试用例来覆盖该路径。

测试用例应该包括输入数据、预期输出和执行结果。

4. 执行测试用例:按照设计好的测试用例,逐一执行并记录执行结果。

如果某个测试用例无法通过,则说明该基本路径存在错误或缺陷。

5. 分析结果:根据执行结果分析程序中存在哪些错误或缺陷,并及时修复。

下面是一个简单示例:假设有以下代码片段:```pythondef max(a, b, c):if a > b:if a > c:return aelse:return celse:if b > c:return belse:return c```则其控制流图如下:```(1)|/ \(2) (3)| |(4) (5)| |(6) (7)| |(8) |\ /(9)```其中,数字表示程序中的行号。

根据控制流图,可以找出以下三个基本路径:- 1-2-4-6-8-9- 1-2-4-7-9- 1-3-5-7-9针对每个基本路径,可以设计如下测试用例:1. 输入:a=3, b=2, c=1;预期输出:3。

2. 输入:a=2, b=3, c=1;预期输出:3。

3. 输入:a=1, b=2, c=3;预期输出:3。

执行测试用例后,如果所有测试用例均能通过,则说明程序中不存在错误或缺陷;否则,需要根据执行结果分析并修复问题。

通过以上步骤进行基本路径测试,可以有效地检测程序中的错误和缺陷,并提高程序的质量和稳定性。

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

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

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

老师在机房进行辅导。

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

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

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

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

?。

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

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

20 15 —20 16 学年第 2 学期软件测试技术课程实验报告学院:计算机科学技术专业:软件工程班级:软件二班姓名:吴德宁学号:041340217任课教师:刘玉宝实验日期:2016年 4 月19 日实验题目实验1、黑盒测试:等价类划分法实验目的1、掌握等价类的概念2、掌握等价类划分方法的测试用例设计方法。

实验内容 1、对房价计算问题,运用等价类测试用例设计法设计测试用例,并执行测试,撰写实验报告。

房价计算问题:房屋价格=房屋面积×面积单价;房屋面积有:75, 95,125,165,185平方米四种;面积单价与楼层相关:房屋共7层,2楼单价3500元/平方米为基准价,1楼单价比基准价低2%,3,4楼比基准价高3%,5,6楼比基准价少2%,7楼比基准价少3%。

关键代码如下(Java实现)public class BlackTest1 {int Area;int Floor;double sum;Scanner scan = new Scanner(System.in);public static void main(String[] args){BlackTest1 t = new BlackTest1();t.display();}public void display(){System.out.println("----------------欢迎来到房价计算器---------------");System.out.println("| 注:选择你要操作的编号0-9 |");System.out.println("------------------------------------------------");System.out.println("* *");System.out.println("* 9.计算房价 *");System.out.println("* *");System.out.println("* 0.退出系统 *");System.out.println("* *");System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++");int select = scan.nextInt();switch(select){case 9:System.out.println("请输入所在楼层1-7Floor:");Floor = scan.nextInt();System.out.println("请输入楼层面积Area:");Area = scan.nextInt();switch(Floor){case 1:sum= Area*3500*(1-0.02);System.out.println("您选择"+Floor+"楼,住房面积是:"+Area+"平方米");System.out.println("这套房一共要花"+ sum +"元");break;case 2:sum = Area*3500*1;System.out.println("您选择"+Floor+"楼,住房面积是:"+Area+"平方米");System.out.println("这套房一共要花"+ sum +"元");break;case 3:case 4:sum = Area*3500*(1+0.03);System.out.println("您选择"+Floor+"楼,住房面积是:"+Area+"平方米");System.out.println("这套房一共要花"+ sum +"元");break;case 5:case 6:sum = Area*3500*(1-0.02);System.out.println("您选择"+Floor+"楼,住房面积是:"+Area+"平方米");System.out.println("这套房一共要花"+ sum +"元");break;case 7:sum = Area*3500*(1-0.03);System.out.println("您选择"+Floor+"楼,住房面积是:"+Area+"平方米");System.out.println("这套房一共要花"+ sum +"元");break;default :break;}display();break;default :break;}}}实验步骤:①划分等价类,得到等价类表。

基本路径法

基本路径法

控制流图
McCabe的导出强连接图
五个线性独立路径
P1:A,B,C,G

P2:A,B,C,B,C,G P3:A,B,E,F,G
P4:A,D,E,F,G
第5页/共23P页5:A,D,F,G
圈数计算
•令 • e是G中的边数。 • n是G中的节点数。 • p是G中的连通分量个数。
• 不增加从汇节点到源节点的边 • V(G)=e-n+2p
}
第16页/共23页
10.2.1 白盒测试技术
Step1 根据程序的逻辑结构画出流程图
11
1
2 模块流程图
3
6
4
7
8
5
9
10
第17页/共23页
Step2 根据流程图画出流图
10.2.1 白盒测试技术
流 图 刻 画 了 程 序 的 控 制 结 构 , 但 不 涉 及 程 序 的 过 程 性 细节
• 节点:过程块,结合点,判定点
2. {
3. if ( temp == ">=")
4.
m_oper.Set CurSe l(0);
5. else if (temp == ">")
6.
m_oper.Set CurSe l(1);
7. else if ( temp == "==")
8.
m_oper.Set CurSe l(2);
第10页/共23页
10.2.1 白盒测试技术
第21页/共23页
Step4 对每条基本路径设计测试用例
10.2.1 白盒测试技术
对于路径1 – 11
✓ nPosX 取-1, nPosY取任意值

实训四 基本路径测试技术

实训四 基本路径测试技术

实训四基本路径测试目标:(思想、知识、能力)1.了解基本路径测试方法概念2.掌握基本路径测试方法用例设计过程3.掌握基本技巧、策略内容:1. 基本路径测试方法思想主要知识:(1)概念:基本路径测试就是这样一种测试方法,它在程序控制流图的基础上,通过分析控制构造的环形复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

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

(2)步骤:A、绘制程序控制流图;B、通过分析环形复杂性,计算圈复杂度;C、确立独立路径集合;D、准备测试用例:确保基本路径集中的每一条路径的执行。

2. 基本路径测试方法举例如下面的一个方法:void Sort(int iRecordNum,int iType)1 {2 int x=0;3 int y=0;4 while (iRecordNum-- > 0)5 {6 if(iType==0)7 x=y+2;8 else9 if(iType==1)10 x=y+10;11 else12 x=y+20;13 }14 }第一步:画出控制流图第二步:计算圈复杂度有以下四种方法计算圈复杂度:1、流图中区域的数量对应于圈复杂度;2、给定流图G的圈复杂度-V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;3、给定流图G的圈复杂度-V(G),定义为V(G)=P+1,P是流图G中判定结点的数量;4、给定流图G的圈复杂度-V(G),V(G)=图形矩阵中行上数字之和大于等于2的行数加1。

第三步:确立独立路径集合根据上面的计算方法,可得出四个独立的路径:路径1:4-6-7-13-4-14路径2:4-6-9-12-13-4-14路径3:4-6-9-10-13-4-14路径4:4-14第四步:导出测试用例1、iRecordNum=1, iType=0;2、RecordNum=1, iType=2;3、RecordNum=1, iType=1;4、RecordNum=0, iType=0;根据上面的独立路径,去设计输入数据,使程序分别执行上面四条路径。

白盒测试基本路径法实训报告三角形

白盒测试基本路径法实训报告三角形

白盒测试基本路径法实训报告三角形一、实验目的通过使用白盒测试基本路径法,对三角形程序进行测试,掌握基本路径法的测试方法和技巧,提高软件测试的能力。

二、实验环境1.操作系统:Windows 102.开发工具:Visual Studio 2019三、实验步骤1.分析程序三角形程序的功能是判断三个数是否能组成三角形,并返回三角形的类型。

程序的代码如下:```#include <stdio.h>int main(){int a, b, c;printf("请输入三个数:");scanf("%d%d%d", &a, &b, &c);if (a + b > c && a + c > b && b + c > a){if (a == b && b == c){printf("这是一个等边三角形");}else if (a == b || a == c || b == c) {printf("这是一个等腰三角形");}else{printf("这是一个普通三角形");}}else{printf("这不是一个三角形");}return 0;}```2.确定基本路径根据程序的控制流图,可以确定程序的基本路径如下:1-2-3-4-5-6-7-8-9-10-11-12-13-141-2-3-4-5-6-7-8-9-10-11-12-151-2-3-4-5-6-7-8-9-10-11-161-2-3-4-5-6-7-8-9-171-2-3-4-5-6-7-181-2-3-4-5-191-2-3-4-201-2-3-211-2-221-233.设计测试用例根据基本路径,设计测试用例如下:测试用例1:a=3, b=4, c=5测试用例2:a=2, b=2, c=2测试用例3:a=1, b=2, c=3测试用例4:a=0, b=0, c=0测试用例5:a=1, b=1, c=2测试用例6:a=1, b=2, c=1测试用例7:a=2, b=1, c=1测试用例8:a=1, b=0, c=1测试用例9:a=1, b=1, c=0测试用例10:a=0, b=1, c=14.执行测试用例根据设计的测试用例,执行测试如下:测试用例1:a=3, b=4, c=5输出结果:这是一个普通三角形测试用例2:a=2, b=2, c=2输出结果:这是一个等边三角形测试用例3:a=1, b=2, c=3输出结果:这不是一个三角形测试用例4:a=0, b=0, c=0输出结果:这不是一个三角形测试用例5:a=1, b=1, c=2输出结果:这不是一个三角形测试用例6:a=1, b=2, c=1输出结果:这是一个等腰三角形测试用例7:a=2, b=1, c=1输出结果:这是一个等腰三角形测试用例8:a=1, b=0, c=1输出结果:这不是一个三角形测试用例9:a=1, b=1, c=0输出结果:这不是一个三角形测试用例10:a=0, b=1, c=1输出结果:这不是一个三角形5.总结通过使用白盒测试基本路径法,对三角形程序进行了测试,并得出了测试结果。

基本路径测试方法设计测试用例

基本路径测试方法设计测试用例

基本路径测试方法设计测试用例一、介绍基本路径测试是一种软件测试方法,旨在验证系统在各个基本路径上的正确性和稳定性。

基本路径是指程序中最小的可执行路径,通过执行基本路径来发现潜在的错误和缺陷,以提高软件质量。

设计有效的基本路径测试用例可以帮助开发人员和测试人员更好地发现和修复软件中的问题。

二、测试方法基本路径测试方法包括以下几个主要步骤:1. 确定程序的基本路径在进行基本路径测试前,我们首先需要明确程序的基本路径。

基本路径可以通过构造控制流图和使用基本路径分析工具来获得。

控制流图是程序中各个语句和控制语句之间的流转关系的图形表示,通过对控制流图的分析,可以得到程序的所有基本路径。

2. 设计基本路径测试用例设计有效的基本路径测试用例是进行基本路径测试的核心。

要设计有效的用例,我们可以考虑以下几个方面:a. 覆盖所有基本路径一个好的基本路径测试用例集应该能够覆盖程序中的所有基本路径。

通过覆盖所有的基本路径,我们可以增加发现潜在错误的机会。

b. 边界值测试在设计基本路径测试用例时,我们应当关注边界值。

边界值测试是通过测试程序在输入达到最小值、最大值或临界值时的行为来发现问题。

边界值测试可以揭示程序在处理边界情况时可能出现的错误。

c. 异常情况测试除了边界值测试外,我们还应该设计一些异常情况的测试用例。

异常情况测试是为了检查系统对于异常输入或非预期行为的处理是否正确。

通过测试异常情况,我们可以验证系统的容错能力和稳定性。

3. 执行测试用例执行基本路径测试用例时,我们需要按照设计好的用例来执行测试。

在执行测试用例时,我们应当记录测试过程和结果,以便于分析和修复问题。

4. 分析测试结果在执行完测试用例后,我们需要对测试结果进行分析。

分析测试结果可以帮助我们识别并定位系统中的潜在问题。

如果测试发现了错误或缺陷,我们应当及时通知开发人员并提供详细的测试报告。

三、基本路径测试用例示例下面是一个基本路径测试用例的示例:1. 测试用例名称:登录验证步骤:1.输入正确的用户名和密码,点击登录按钮。

基路径测试案例分析

基路径测试案例分析

基路径测试案例分析举例说明:例:下例程序流程图描述了最多输入50个值(以–1作为输入结束标志),计算其中有效的学生分数的个数、总分数和平均值。

步骤1:导出过程的流图。

步骤2:确定环形复杂性度量V(G):1)V(G)= 6 (个区域)2)V(G)=E–N+2=16–12+2=6其中E为流图中的边数,N为结点数;3)V(G)=P+1=5+1=6其中P为谓词结点的个数。

在流图中,结点2、3、5、6、9是谓词结点。

步骤3:确定基本路径集合(即独立路径集合)。

于是可确定6条独立的路径:路径1:1-2-9-10-12路径2:1-2-9-11-12路径3:1-2-3-9-10-12路径4:1-2-3-4-5-8-2…路径5:1-2-3-4-5-6-8-2…路径6:1-2-3-4-5-6-7-8-2…步骤4:为每一条独立路径各设计一组测试用例,以便强迫程序沿着该路径至少执行一次。

1)路径1(1-2-9-10-12)的测试用例:score[k]=有效分数值,当k < i ;score[i]=–1, 2≤i≤50;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。

2)路径2(1-2-9-11-12)的测试用例:score[ 1 ]= – 1 ;期望的结果:average = – 1 ,其他量保持初值。

3)路径3(1-2-3-9-10-12)的测试用例:输入多于50个有效分数,即试图处理51个分数,要求前51个为有效分数;期望结果:n1=50、且算出正确的总分和平均分。

4)路径4(1-2-3-4-5-8-2…)的测试用例:score[i]=有效分数,当i<50;score[k]<0,k< i ;期望结果:根据输入的有效分数算出正确的分数个数n1、总分sum和平均分average。

基本路径侧试

基本路径侧试

课程名称软件测试技术实验名称基本路径测试姓名学号专业班级实验日期成绩指导老师(①实验目的②实验原理③主要仪器设备④实验内容与步骤⑤实验数据记录与处理⑥实验结果分析⑦问题建议)一、实验目的1.通过实验掌握白盒测试中动态测试的主要方法之一:基本路径测试;2.掌握基本路径测试中程序的控制流程图绘制方法;3.掌握计算程序环路复杂性和确定独立路径集合的方法;4.掌握基本路径测试用例的编写方法。

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

在基本路径测试中,设计出的测试用例要保证在被测程序的每一条可执行语句上至少执行一次。

三、主要软件工具1.VC++6.0; 2.VISIO等绘图软件工具。

四、实验内容与步骤1.按照下述代码画出程序控制流程图;1) Void sort(int i,int j)2) {3) int m,n,k;4) m=n=k=0;5) while(i++<11)6) {7) if (j<5)8) m++;9) else10) if(j<8)11) n++;12) else13) k++;14) }15) Printf(“%d,%d,%d”,m,n,k);16) }2.计算程序环路复杂性;3.确定独立路径集合;4.准备测试用例,用例包含输入数据和预期结果;5.对上述代码进行编程作为被测单元,同时设计一个可视化界面作为驱动程序,驱动程序可接受用例中的输入数据,调用被测单元,显示执行结果和执行路径(可利用程序插桩技术)。

6.执行测试用例,记录测试结果。

五、实验数据记录与处理六、实验结果分析七、问题建议。

  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 设计测试用例,使其满足基本路径覆盖的要求。

?。

相关文档
最新文档