任务:
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.分清逻辑符号“&&”和“||”。