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