优化与测试

测试代码

211606343 杨宇潇 211606360 丁培辉

单元测试

测试思路

  • 允许某些测试被忽略或分组并一起执行。
  • 从有返回值,有传参的函数开始入手。测试预期值和返回值是否一样。
  • 定义一个待测试的类,并且定义两个变量,一个用于存放参数,一个用于存放期待的结果。
  • 由于void函数无返回值,则通过设立flag检查测试。

部分测试代码

  • 在测试方法传入参数格式,通过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));
}

代码覆盖率

结构优化

uml图

流程图

重构

  • 将一二年级的算法进行优化,使其能够使用中序表达逆波兰算法。
  • 在reckon里面添加了对计算数据的判断,比如出现负数时,返回false的字符串。
  • 在得出结果后,对答案进行限制,限制于10000以内。

性能调优

  • 程序的性能瓶颈:
    • 代码冗余;运行效率低。
  • 优化方案:
    • 将重复代码删除;
    • 重写方法,在不同地方调用,提高代码利用率。

效能分析截图

优化后

总结

第一次写测试代码,其中包含了太多的不懂,从0开始一点一点去百度,去搜索相关知识去学习。每次修改方法,使用一个返回值,就会出现不同的错误,要根据不同情况来选择如何选择返回值的类型或者别的解决方法。一段代码的健壮性,是需要通过不断的修改构造方法,优化算法,和参数的多样性测试得到的。

猜你喜欢

转载自www.cnblogs.com/w9250872/p/9727369.html