• 第一次作业+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.分清逻辑符号“&&”和“||”。

  • 相关阅读:
    MySQL:procedure, function, cursor,handler
    Spring:ApplicationContext (2)
    Dojo: Quick Start
    Linux:常用命令
    Squirrel: 通用SQL、NoSQL客户端
    湖南师范大学邮箱申请及
    一文读懂基因测序技术的前世今生
    一 二 三代测序技术
    浅议基因测序技术的代际:后记
    浅议基因测序技术的代际
  • 原文地址:https://www.cnblogs.com/ChainYugi/p/6601316.html
Copyright © 2020-2023  润新知