软件测试技术_随堂练习01答案.docx
- 文档编号:169258
- 上传时间:2022-10-05
- 格式:DOCX
- 页数:8
- 大小:134.57KB
软件测试技术_随堂练习01答案.docx
《软件测试技术_随堂练习01答案.docx》由会员分享,可在线阅读,更多相关《软件测试技术_随堂练习01答案.docx(8页珍藏版)》请在冰豆网上搜索。
随堂练习01
1.FindBugs
A.查看FindBugs发现的问题,一共有几类问题,各是什么含义?
将这几类问题翻译成中文;
答:
一共有以下三种类型的问题:
1.Bug:
InvocationoftoStringoncombinationinsolver.Matrix.main(String[])
ThecodeinvokestoStringonanarray,whichwillgenerateafairlyuselessresultsuchas[C@16f0472.ConsiderusingArrays.toStringtoconvertthearrayintoareadableStringthatgivesthecontentsofthearray.
中文:
在组合代码调用toString数组,这将产生一个相当无用的结果。
考虑使用Arrays.toString方法将数组转化成可读的字符串。
2.Bug:
solver.Mpute()concatenatesstringsusing+inaloop
ThemethodseemstobebuildingaStringusingconcatenationinaloop.Ineachiteration,theStringisconvertedtoaStringBuffer/StringBuilder,appendedto,andconvertedbacktoaString.Thiscanleadtoacostquadraticinthenumberofiterations,asthegrowingstringisrecopiedineachiteration.
BetterperformancecanbeobtainedbyusingaStringBuffer(orStringBuilderinJava1.5)explicitly.
中文:
这个方法似乎是建立在一个循环中使用连接字符串。
在每个迭代中,字符串转换为StringBuffer/StringBuilder,附加到,转换回一个字符串。
这可能导致成本数量的二次迭代,在每个迭代字符串复制。
可以获得更好的性能通过使用StringBuffer显式(或StringBuilderJava1.5中)。
3.Bug:
Unreadfield:
gui.MainWindow.m_gameOutput
Thisfieldisneverread.Considerremovingitfromtheclass.
中文:
gui.MainWindow.m_gameOutput这个属性没有被读。
这个字段是不会被程序读的。
考虑把它从类中移除。
B.如何解决FindBugs指出的问题?
请修改Sudoku程序,以改正所有FindBugs指出的问题。
注意:
同类错误仅需记录一次修改思想即可。
答:
1.使用Arrays.toString将数组转换为字符串。
2.将String类型的该变量定义为StringBuffer类型的,并在循环体中用append()方法替代+操作。
3.通过”查找”找出对应的属性的所有代码,并注释\删除。
(或者调用print方法输出该属性)
2.Junit
源程序:
packagesale;
publicclassSaleMachine{
privateintcountOfBeer,countOfJuice,countOfFiveCents,countOfOneDollar;
privateString[]typeOfGoods={"Beer","Juice"};
privateStringresultOfDeal;
publicSaleMachine()
{
initial();
}
publicvoidinitial()
{//默认售货机
countOfBeer=3;
countOfJuice=3;
countOfFiveCents=3;
countOfOneDollar=3;
}
publicSaleMachine(intfiveCents,intoneDollar,intnumOfBeer,intnumOfOrange)
//带参数的初始化售货机
{
countOfFiveCents=fiveCents;
countOfOneDollar=oneDollar;
countOfBeer=numOfBeer;
countOfJuice=numOfOrange;
}
publicStringcurrentState()
{//返回当前售货机状态
Stringstate="库存\n"+
"啤酒:
"+countOfBeer+"\n"+
"橙汁:
"+countOfJuice+"\n"+
"五角硬币:
"+countOfFiveCents+"\n"+
"一元硬币:
"+countOfOneDollar;
returnstate;
}
publicStringbuy(Stringtype,intmoney)
//用户购买的方法。
type是用户选择的产品,money是用户投币种类
{
if(money==50)//如果用户投入5角钱
{
if(type.equals(typeOfGoods[0]))//如果用户选择啤酒
{
if(countOfBeer>0)//如果还有啤酒
{
countOfBeer--;
countOfFiveCents++;
resultOfDeal="请取出饮料";
returnresultOfDeal;
}
else
{
resultOfDeal="目前该饮料已经售完";
returnresultOfDeal;
}
}
elseif(type.equals(typeOfGoods[1]))//用户选择橙汁
{
if(countOfJuice>0)
{
countOfJuice--;
countOfFiveCents++;
resultOfDeal="请取出饮料";
returnresultOfDeal;
}
else
{
resultOfDeal="目前该饮料已经售完";
returnresultOfDeal;
}
}
else
{
resultOfDeal="目前不提供该饮料";
returnresultOfDeal;
}
}
elseif(money==100)//如果用户投入一元钱
{
if(countOfFiveCents>0)//如果售货机有零钱
{
if(type.equals(typeOfGoods[0])&&countOfBeer>0)//如果用户选择啤酒而且还有啤酒
{
countOfBeer--;
countOfFiveCents--;
countOfOneDollar++;
resultOfDeal="请取饮料,并取回找钱";
returnresultOfDeal;
}
elseif(type.equals(typeOfGoods[1])&&countOfJuice>0)//如果用户选择橙汁而且还有橙汁
{
countOfJuice--;
countOfFiveCents--;
countOfOneDollar++;
resultOfDeal="请取饮料,并取回找钱";
returnresultOfDeal;
}
else
{
if(type.equals(typeOfGoods[0])&&countOfBeer<=0)
{
resultOfDeal="目前该饮料已经售完";
returnresultOfDeal;
}
elseif(type.equals(typeOfGoods[1])&&countOfJuice<=0)
{
resultOfDeal="目前该饮料已经售完";
returnresultOfDeal;
}
else
{
resultOfDeal="目前不提供该饮料";
returnresultOfDeal;
}
}
}
else
{
resultOfDeal="对不起,目前不能找钱,请投5角硬币";
returnresultOfDeal;
}
}
resultOfDeal="请投5角或者1元的硬币";
returnresultOfDeal;
}
}
测试程序
以下测试场景均基于上述程序:
测试场景:
投币1元购买橙汁三次,然后投币1元购买啤酒三次。
预期结果:
显示“对不起,目前不能找钱,请投5角硬币”
函数代码:
publicvoidtest_NoCoin(){
SaleMachinesm=newSaleMachine();
assertEquals(sm.buy("orange",100),"请取饮料,并取回找钱");
assertEquals(sm.buy("orange",100),"请取饮料,并取回找钱");
assertEquals(sm.buy("orange",100),"请取饮料,并取回找钱");
assertEquals(sm.buy("beer",100),"对不起,目前不能找钱,请投5角硬币");
}
测试结果:
通过
测试场景:
投币1元,购买可乐
预期结果:
显示“目前不提供该饮料”
函数代码:
publicvoidtest_Cola(){//售货机有5角,投币1元,选择非啤酒非橙汁
SaleMachinesm=newSaleMachine();
assertEquals(sm.buy("Cola",100),"目前不提供该饮料");
}
测试结果:
通过
测试场景:
投币5块,购买橙汁
预期结果:
显示"请投5角或者1元的硬币"
函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 技术 练习 01 答案