软件测试技术-随堂练习01答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}