软件测试技术-随堂练习01答案

软件测试技术-随堂练习01答案
软件测试技术-随堂练习01答案

)

随堂练习01

1.FindBugs

A.查看 FindBugs发现的问题,一共有几类问题,各是什么含义将这几类问题翻译成中文;

答:

一共有以下三种类型的问题:

1.Bug: Invocation of toString on combination in code invokes toString on an array, which will generate a fairly useless result such as [C@16f047

2. Consider using to convert the array into a readable String that gives the contents of the array.

中文:在组合代码调用toString数组,这将产生一个相当无用的结果。考虑使用方法将数组转化成可读的字符串。

2.Bug: concatenates strings using + in a loop

(

The method seems to be building a String using concatenation in a loop. In each iteration, the String is converted to a

StringBuffer/StringBuilder, appended to, and converted back to a String. This can lead to a cost quadratic in the number of iterations, as the growing string is recopied in each iteration.

Better performance can be obtained by using a StringBuffer (or StringBuilder in Java explicitly.

中文:这个方法似乎是建立在一个循环中使用连接字符串。在每个迭代中,字符串转换为StringBuffer / StringBuilder,附加到,转换回一个字符串。这可能导致成本数量的二次迭代,在每个迭代字符串复制。

可以获得更好的性能通过使用StringBuffer显式(或StringBuilder Java 中)。

3.Bug: Unread field: field is never read. Consider removing it from the class.

中文:这个属性没有被读。

这个字段是不会被程序读的。考虑把它从类中移除。

~

B.如何解决FindBugs指出的问题请修改Sudoku程序,以改正所有FindBugs指出的问题。注意:同类错误仅需记录一次修改思想即可。

答:

1.使用将数组转换为字符串。

2.将String类型的该变量定义为StringBuffer类型的,并在循环体中用append()

方法替代+操作。

3.通过”查找”找出对应的属性的所有代码,并注释\删除。(或者调用print方法输

出该属性)

2.,

3.Junit

源程序:

package sale;

public class SaleMachine {

private int countOfBeer, countOfJuice, countOfFiveCents, countOfOneDollar;

private String[] typeOfGoods = {"Beer", "Juice"};

private String resultOfDeal;

public SaleMachine()

{

initial();

}

public void initial()

{//默认售货机

countOfBeer = 3;

countOfJuice = 3;

countOfFiveCents = 3;

countOfOneDollar = 3;

}

public SaleMachine(int fiveCents, int oneDollar, int numOfBeer, int numOfOrange)

//带参数的初始化售货机

!

{

countOfFiveCents = fiveCents;

countOfOneDollar = oneDollar;

countOfBeer = numOfBeer;

countOfJuice = numOfOrange;

}

public String currentState()

·

{//返回当前售货机状态

String state = "库存 \n" +

"啤酒: " + countOfBeer + "\n" +

"橙汁: " + countOfJuice + "\n" +

"五角硬币: " + countOfFiveCents + "\n" +

"一元硬币: " + countOfOneDollar;

return state;

}

\

public String buy(String type, int money)

//用户购买的方法。type是用户选择的产品,money是用户投币种类

{

if(money==50) //如果用户投入5角钱

{

if(typeOfGoods[0])) //如果用户选择啤酒

{

if(countOfBeer>0) //如果还有啤酒

{

countOfBeer--;

countOfFiveCents++;

resultOfDeal = "请取出饮料";

return resultOfDeal;

}

else

{

resultOfDeal = "目前该饮料已经售完";

return resultOfDeal;

}

}

else if (typeOfGoods[1])) //用户选择橙汁

{

if(countOfJuice > 0)

{

,

countOfJuice--;

countOfFiveCents++;

resultOfDeal = "请取出饮料";

return resultOfDeal;

}

else

{

resultOfDeal = "目前该饮料已经售完";

return resultOfDeal;

}

}

else

{

resultOfDeal = "目前不提供该饮料";

return resultOfDeal;

}

}

else if(money==100) //如果用户投入一元钱

{

if(countOfFiveCents > 0) //如果售货机有零钱

if(typeOfGoods[0])&&countOfBeer>0)//如果用户选择啤酒而且还有啤酒

{

|

countOfBeer--;

countOfFiveCents--;

countOfOneDollar++;

resultOfDeal = "请取饮料,并取回找钱";

return resultOfDeal;

}

else if (typeOfGoods[1])&&countOfJuice>0)//如果用户选择橙汁而且还有橙汁

{

-

countOfJuice --;

countOfFiveCents --;

countOfOneDollar ++;

resultOfDeal = "请取饮料,并取回找钱";

return resultOfDeal;

}

else

{

if(typeOfGoods[0])&&countOfBeer<=0)

{

resultOfDeal = "目前该饮料已经售完";

return resultOfDeal;

}

else if(typeOfGoods[1])&&countOfJuice<=0)

{

resultOfDeal = "目前该饮料已经售完";

#

return resultOfDeal;

}

else

{

resultOfDeal = "目前不提供该饮料";

return resultOfDeal;

}

}

<

}

else

resultOfDeal = "对不起,目前不能找钱,请投 5 角硬币";

return resultOfDeal;

}

}

`

resultOfDeal = "请投 5 角或者1 元的硬币";

return resultOfDeal;

}

}

测试程序

以下测试场景均基于上述程序:

*

测试场景:初始化五角/一元硬币/啤酒/橙汁都为4个,投币50,购买5次橙汁预期结果:显示“请取出饮料”*4 + "目前该饮料已经售完"

函数代码:public void test_50Orange4(){//售货机没有啤酒剩余,用户投币5角,选择啤酒

SaleMachine sm = new SaleMachine(4,4,4,4);

assertEquals("orange", 50), "请取出饮料");

assertEquals("orange", 50), "请取出饮料");

assertEquals("orange", 50), "请取出饮料");

assertEquals("orange", 50), "请取出饮料");

assertEquals("orange", 50), "目前该饮料已经售完");

}

测试结果:通过截图:

相关主题
相关文档
最新文档