测试

测试代码-------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));
}

代码覆盖率

结构优化

uml图

流程图

重构

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

性能调优

  • 程序性能瓶颈:

    • 代码冗余 ,无法有效运行。
  • 优化方案:

    • 将重复操作的代码进行删减。
    • 将多余的参数去除。

效能分析截图

优化前

优化后

总结

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