实验04使用基本路径测试法求解自动售货机问题.docx
- 文档编号:25786592
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:17
- 大小:479.21KB
实验04使用基本路径测试法求解自动售货机问题.docx
《实验04使用基本路径测试法求解自动售货机问题.docx》由会员分享,可在线阅读,更多相关《实验04使用基本路径测试法求解自动售货机问题.docx(17页珍藏版)》请在冰豆网上搜索。
实验04使用基本路径测试法求解自动售货机问题
实验报告
实验序号:
04实验项目名称:
使用基本路径测试法求解“自动售货机”问题
学 号
122
姓 名
专业、班
实验地点
实1-511
)
指导教师
实验时间
2013/4/27
一、实验目的及要求
理解基本路径覆盖测试法的概念和方法;
掌握使用Eclipse+JUnit+EclEmma进行基本路径覆盖测试的方法。
二、实验设备(环境)及要求
开发环境:
Eclipse及以上版本;JUnit及以上版本;文本编辑软件。
硬件要求:
CPUPIV以上,256M内存,1G硬盘空间。
—
系统要求:
Windows98/Me/XP/NT/2000,IE5以上。
三、实验内容步骤
1.下载并安装Eclipse+JUnit+EclEmma实验环境;
2.通读自动售货机程序,并在Eclipse环境下运行该程序;
3.使用基本路径测试法设计测试用例,完成以下表格;
编
号
输入值
Type
输入值
;
money
状态
预期输出
实际情况
001
Beer
5C
各资源剩余
InputInformation
Type:
Beer;Money:
5Cents;Change:
0
-
CurrentState
Beer:
5
OrangeJuice:
6
5Cents:
7
1Dollar:
6
002
OrangeJuice
5C
各资源剩余
|
InputInformation
Type:
OrangeJuice;Money:
5Cents;Change:
0
CurrentState
Beer:
6
OrangeJuice:
5
5Cents:
7
1Dollar:
6
003
Beer
^
1D
没有啤酒
FailureInformation
BeerShortage
步骤:
1、解压eclemma软件包,并放到eclipse安装目录的dropins文件夹下:
2、重新启动eclipse软件,菜单栏会出现新的图标:
)
3、查看Windows的Customizeperspective项中的CommandGroupsAvailabiity多了Coverage项:
4、编写待测试类文件和测试JunitTestCase文件:
5、先点击运行看看,覆盖了%:
6、分析:
红色代表未执行、黄色代表条件没有全部执行、绿色代表执行过了:
7、继续修改测试代码,直到覆盖率达到100%:
共编写了12个测试用例,使待测试代码100%被覆盖,运行如图:
~
四、实验结果与数据处理
a、最终待测试代码如下:
publicclassSaleMachine{
privateintcountOfBeer,countOfOrangeJuice,countOfFiveCents,countOfOneDollar;
privateString[]typeOfGoods={"Beer","OrangeJuice"};
privateStringresultOfDeal;
publicSaleMachine()
{
~
initial();
}
publicvoidinitial()
{
countOfBeer=6;
countOfOrangeJuice=6;
countOfFiveCents=6;
countOfOneDollar=6;
}
publicSaleMachine(intfiveCents,intoneDollar,intnumOfBeer,intnumOfOrange)
-
{//便于测试的初始化函数
countOfFiveCents=fiveCents;
countOfOneDollar=oneDollar;
countOfBeer=numOfBeer;
countOfOrangeJuice=numOfOrange;
}
publicStringcurrentState()
{
Stringstate="CurrentState\n"+
"Beer:
"+countOfBeer+"\n"+
<
"OrangeJuice:
"+countOfOrangeJuice+"\n"+
"5Cents:
"+countOfFiveCents+"\n"+
"1Dollar:
"+countOfOneDollar;
returnstate;
}
publicStringoperation(Stringtype,Stringmoney)
{//type是用户选择的产品,money是用户投币种类
if("5C"))//如果用户投入5角钱
{
if(typeOfGoods[0]))//如果用户选择啤酒
|
{
if(countOfBeer>0)//如果还有啤酒
{
countOfBeer--;
countOfFiveCents++;
resultOfDeal="InputInformation\n"+
"Type:
Beer;Money:
5Cents;Change:
0\n\n"+currentState();
returnresultOfDeal;
}
else
"
{
resultOfDeal="FailureInformation\n"+"BeerShortage";
returnresultOfDeal;
}
}
elseif(typeOfGoods[1]))//用户选择橙汁
{
if(countOfOrangeJuice>0)
{
countOfOrangeJuice--;
~
countOfFiveCents++;
resultOfDeal="InputInformation\n"+
"Type:
OrangeJuice;Money:
5Cents;Change:
0\n\n"+currentState();
returnresultOfDeal;
}
else
{
resultOfDeal="FailureInformation\n"+"OrangeJuiceShortage";
returnresultOfDeal;
}
$
}
else
{
resultOfDeal="FailureInformation\n"+"TypeError";
returnresultOfDeal;
}
}
elseif("1D"))//如果用户投入一元钱
{
//if(countOfFiveCents>0)//如果用户投入一元钱
;
//{
if(countOfFiveCents>0)//如果售货机有零钱
{
if(typeOfGoods[0])&&countOfBeer>0)//如果用户选择啤酒而且还有啤酒
{
countOfBeer--;
countOfFiveCents--;
countOfOneDollar++;
resultOfDeal="InputInformation\n"+
"Type:
Beer;Money:
1Dollar;Change:
5Cents\n\n"+currentState();
]
returnresultOfDeal;
}
elseif(typeOfGoods[1])&&countOfOrangeJuice>0)//如果用户选择橙汁而且还有橙汁
{
countOfOrangeJuice--;
countOfFiveCents--;
countOfOneDollar++;
resultOfDeal="InputInformation:
\n"+
"Type:
OrangeJuice;Money:
1Dollar;Change:
5Cents\n\n"+currentState();
returnresultOfDeal;
:
}
else
{
if(typeOfGoods[0])&&countOfBeer<=0)
{
resultOfDeal="FailureInformation\n"+"BeerShortage";
returnresultOfDeal;
}
elseif(typeOfGoods[1])&&countOfOrangeJuice<=0)
{
!
resultOfDeal="FailureInformation\n"+"OrangeJuiceShortage";
returnresultOfDeal;
}
else
{
resultOfDeal="FailureInformation\n"+"TypeError";
returnresultOfDeal;
}
}
}
]
else
{
resultOfDeal="FailureInformation\n"+"ChangeShortage";
returnresultOfDeal;
}
}
/*else
{
resultOfDeal="FailureInformation\n"+"MoneyError";
returnresultOfDeal;
~
}*/
resultOfDeal="FailureInformation\n"+"MoneyError";
returnresultOfDeal;
}
}
b、最终测试代码如下:
importstaticclassSaleMachineTest{
SaleMachinesaleMachine=newSaleMachine();
:
@Before
publicvoidsetUp()throwsException{
}
@After
publicvoidtearDown()throwsException{
}
@Test
publicvoidtestOperation1(){
StringexpectedResult="InputInformation\n"+
"Type:
OrangeJuice;Money:
5Cents;Change:
0\n\n"+
:
"CurrentState\n"+
"Beer:
6\n"+
"OrangeJuice:
5\n"+
"5Cents:
7\n"+
"1Dollar:
6";
assertEquals(expectedResult,("OrangeJuice","5C"));
}
@Test
publicvoidtestOperation2(){
StringexpectedResult="InputInformation\n"+
[
"Type:
Beer;Money:
5Cents;Change:
0\n\n"+
"CurrentState\n"+
"Beer:
5\n"+
"OrangeJuice:
6\n"+
"5Cents:
7\n"+
"1Dollar:
6";
assertEquals(expectedResult,("Beer","5C"));
}
@Test
publicvoidtestOperation3(){
】
SaleMachinesaleMachine=newSaleMachine(6,6,0,6);
StringexpectedResult="FailureInformation\n"+
"BeerShortage";
assertEquals(expectedResult,("Beer","5c"));
}
@Test
publicvoidtestOperation4(){
SaleMachinesaleMachine=newSaleMachine(6,6,6,0);
StringexpectedResult="FailureInformation\n"+
"OrangeJuiceShortage";
》
assertEquals(expectedResult,("OrangeJuice","5c"));
}
@Test
publicvoidtestOperation5(){
SaleMachinesaleMachine=newSaleMachine(6,6,6,6);
StringexpectedResult="FailureInformation\n"+
"TypeError";
assertEquals(expectedResult,("apple","5c"));
}
@Test
,
publicvoidtestOperation6(){
StringexpectedResult="InputInformation\n"+
"Type:
Beer;Money:
1Dollar;Change:
5Cents\n\n"+
"CurrentState\n"+
"Beer:
5\n"+
"OrangeJuice:
6\n"+
"5Cents:
5\n"+
"1Dollar:
7";
assertEquals(expectedResult,("Beer","1D"));
}
!
@Test
publicvoidtestOperation7(){
StringexpectedResult="InputInformation:
\n"+
"Type:
OrangeJuice;Money:
1Dollar;Change:
5Cents\n\n"+
"CurrentState\n"+
"Beer:
6\n"+
"OrangeJuice:
5\n"+
"5Cents:
5\n"+
"1Dollar:
7";
assertEquals(expectedResult,("OrangeJuice","1D"));
$
}
@Test
publicvoidtestOperation8(){
SaleMachinesaleMachine=newSaleMachine(6,6,0,6);
StringexpectedResult="FailureInformation\n"+
"BeerShortage";
assertEquals(expectedResult,("Beer","1D"));
}
@Test
publicvoidtestOperation9(){
!
SaleMachinesaleMachine=newSaleMachine(6,6,6,6);
StringexpectedResult="FailureInformation\n"+
"TypeError";
assertEquals(expectedResult,("apple","1D"));
}
@Test
publicvoidtestOperation10(){
SaleMachinesaleMachine=newSaleMachine(6,6,6,0);
StringexpectedResult="FailureInformation\n"+
"OrangeJuiceShortage";
assertEquals(expectedResult,("OrangeJuice","1D"));
}
@Test
publicvoidtestOperation11(){
SaleMachinesaleMachine=newSaleMachine(0,6,6,6);
StringexpectedResult="FailureInformation\n"+
"ChangeShortage";
assertEquals(expectedResult,("OrangeJuice","1D"));
}
@Test
publicvoidtestOperation12(){
SaleMachinesaleMachine=newSaleMachine(6,6,6,6);
StringexpectedResult="FailureInformation\n"+
"MoneyError";
assertEquals(expectedResult,("OrangeJuice","0"));
}
}
五、分析与讨论
通过操作本次实验,我结合Junit和elemma软件对待测试代码进行测试和修改。
编写测试用例,最终达到代码的100%覆盖。
Junit是在eclipse工具里使用的白盒测试软件,是帮助我们在编写代码的过程里及时发现错误的帮手,而elemma软件很好的配合了Junit测试工具,它可以监测Junit测试代码的覆盖率。
六、教师评语
签名:
日期:
成绩
~
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 04 使用 基本 路径 测试 求解 自动 售货 问题
![提示](https://static.bdocx.com/images/bang_tan.gif)