测试

测试代码-------211606360 丁培晖 211606343 杨宇潇

单元测试

测试思路

  • 首先从有返回值,有传参的函数入手。测试返回值是否和预期值相等。
  • 由于void函数无返回值,则通过设立flag检查测试,或者将void类型修改,改为有返回值的方法。我们将void类型的calculate_1,calculate_2,calculate_3修改为int类型,返回一个数值,用于判断生成题目数量是否和符合传入的参数,同时也检测该程序是否成功运行。
  • 将某些方法忽略。

部分测试代码

  • 在测试方法传入参数格式,通过assertEquals进行对比,可以得出测试是否成功。
  • 测试要调用的方法需为public类,否则无法测试。
@Test   //测试优先级的判断是否正确
public void testLevel_1() {
    String operation = "+";
     assertEquals(1, MathExam6360.Level(operation));
}
@Test   //测试传入的参数格式是否正确
public void testMathExam_1(){
    String[] str = new String[] {"-n", "10", "-grade", "3"};
    assertEquals(true,MathExam6360.MathExam(str));
}
@Test  //测试传入的题目数量和年级是否符合大小限定以及格式
public void testJudge_1() {
    String count = "10";
    String grade = "3";
    assertEquals(true,MathExam6360.judge(count, grade));
}

代码覆盖率

1472318-20180930053006340-1959985623.png

结构优化

uml图

1472318-20180930053016839-989111373.png

流程图

1472318-20180930053127349-487698900.png

重构
  • 将一二年级的算法进行优化,使其能够使用中序表达式与逆波兰。
  • 在reckon里面添加了对计算数据的判断,比如出现负数时,返回false的字符串,通过字符匹配,重新对式子进行修改。
  • 在得出结果后,对答案进行限制,限制于10000以内。
  • calculate()方法:对传入的年级进行判断,然后调用相关年级的式子生成方法,如:calculate_1,calculate_2,calculate_3。
    Level()方法:对符号的优先级进行判断,并返回int类型值。

性能调优

  • 程序性能瓶颈:
    • 代码冗余 ,无法有效运行。
  • 优化方案:
    • 将重复操作的代码进行删减。
    • 将多余的参数去除。
    • 效能分析截图
      优化前
      1472318-20180930082729241-1496001204.png
优化后

1472318-20180930081502395-496024073.png

总结

  • 这次进行了单元测试,对传入参数的格式、大小进行测试,同时检测调用的方法是否成功运行。
  • 第一次写测试代码,通过慕课视频,粗略了解了测试代码的格式、写法,其实测试代码并没有以前想的那么高大上,毕竟它不能判断你是对的,只能判断你没有错。
  • 每测试一个方法,都需要对方法进行修改,根据情况,选择使用返回值或者设立flag等方式,来进行测试。而基础薄弱我们,算是从0开始,一点一点汲取博客里的经验,渐渐写出了现在的程序。

转载于:https://www.cnblogs.com/Dnyqi/p/9727368.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值