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

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

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

答案

-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

随堂练习01

1.FindBugs

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

答:

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

1. Bug: Invocation of toString on combination in

solver.Matrix.main(String[])

The code invokes toString on an array, which will generate a fairly useless result such as [C@16f0472. Consider using Arrays.toString to convert the array into a readable String that gives the contents of the array.

中文:在组合代码调用toString数组,这将产生一个相当无用的结果。考

虑使用Arrays.toString方法将数组转化成可读的字符串。

2. Bug: pute() 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 1.5) explicitly.

中文:这个方法似乎是建立在一个循环中使用连接字符串。在每个迭代中,

字符串转换为StringBuffer / StringBuilder,附加到,转换回一个字符串。这

可能导致成本数量的二次迭代,在每个迭代字符串复制。

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

3.Bug: Unread field: gui.MainWindow.m_gameOutput

This field is never read. Consider removing it from the class.

中文:gui.MainWindow.m_gameOutput这个属性没有被读。

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

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

答:

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

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

法替代+操作。

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

该属性)

2.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(type.equals(typeOfGoods[0])) //如果用户选择啤酒

{

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

{

countOfBeer--;

countOfFiveCents++;

resultOfDeal = "请取出饮料";

return resultOfDeal;

}

相关文档
最新文档