第一次作业+105032014063

任务:

1、流程图:根据被测代码,绘制程序流程图

2、测试用例设计:依据语句覆盖、判定覆盖,编写测试用例设计

3、测试结果:执行测试,并给出测试结论:通过与不通过。

4、代码优化建议:对被测代码,依据通用编码规范,进行符合性代码审查,给出修改代码的建议。

被测试代码链接:http://www.cnblogs.com/gaohaofeng/p/6533274.html

1、流程图

2、测试用例设计

用例号 输入 期待结果 实际结果 是否通过 时间
1 -1 -1 -1 -1 -1 -1 错误提示 -9.8 × 2017.3.22
2 -1 1 -1 1 -1 1 9.8 9.8 2017.3.22
3 1 1 1 9.8 9.8 2017.3.22
4 0 0 0 0.0 0.0 2017.3.22
5 0 100 0 100.0 100.0 2017.3.22
6 0 101 0 101.5 101.0 × 2017.3.22
7 0 180 0 220.0 180.0 × 2017.3.22
8 0 181 0 222.0 181.0 × 2017.3.22
9 1.0 1.0 1.0 9.8 程序崩溃 × 2017.3.22
10 1.1 1.1 1.1 错误提示 程序崩溃 × 2017.3.22
11 + + + 错误提示 程序崩溃 × 2017.3.22

3、测试结果

存在大量错误:

(1)题意理解错误。题意要求为如果销售额不足1000元按10%提取佣金,1000-1800元部分按15%提取佣金,超过1800元部分按20%提取佣金。而该程序则无视了“部分”,将1000-1800元的销售额全额按15%提取佣金,超过1800元的销售额全额按20%提取佣金,导致错误。

(2)对负数输入的判断仅一次判断。从测试用例1和2可以看出,程序对负数输入的判断仅有1次,无论第二次输入的数是否是正数一律通过并赋值给相应变量,导致测试用例1的错误。

(3)没有对非整数输入进行判断。用例9、10和11可以明显看出程序不支持小数、字符等的输入,并且会使程序崩溃。

(4)逻辑错误。

这段核心代码存在以下逻辑上的错误:

  1.if(totalmoney<1000||totalmoney>=0)这里的“||”应为“&&”,否则任意totalmoney的值必然满足条件,必然执行该if语句块的语句而不会跳转到其他if语句块。

  2.else if(totalmoney<=1800||totalmoney>=1000)与1同理。

  *3.if,else if,else if如果都不满足,将会直接执行return commission语句,而此时commission并没有经过计算,仅有初始值0。不过因为这3个if已经包含所有可能的情况,所以不可能存在totalmoney不满足所有的这3个if。所以这条没有严重的错误,仅提及。

另外,这段代码的commission计算方法与题意是不符的。

4、代码优化建议

1.下次发博客请用编辑器里的插入代码功能,否则代码没有缩进看起来实在费力。

2.没怎么学JAVA,所以很菜。如果可以用C/C++来写那是再好不过了。至于JAVA的代码规范我也不是很懂,没什么好的建议,至少空格什么的应该还是要有的。可以自己去百度下JAVA的代码规范。至少可以肯定这段代码肯定不是规范的。

3.看清题意再敲代码!看清题意再敲代码!看清题意再敲代码!

4.输入的时候应该可以用try语句块来处理输入不是整数的情况,不要让程序直接崩溃。

5.分清逻辑符号“&&”和“||”。

原文地址:https://www.cnblogs.com/ChainYugi/p/6601316.html