测试与优化

211614331 王诚荣
211614354 陈斌

单元测试

我的设计单元思路是利用JUnit4测试单元框架,创建JUnit4测试类将代码中的方法都测试一下,最后用JUnit测试套件将所有方法集中在一起测试。这次的测试任务中,我负责写了四个测试类。

  • 第一个测试我将MathExam类输入的参数是否为正确创建成一个test方法,然后在test包里新建一个JUnit Test Case的testPartInput测试类,将test方法调用到这testPartInput类中,使用JUnit4的参数化测试,把我的所有测试数据和预期结果存在这个Object[]数组,然后利用参数化测试的特点,每一次从数组中取一组数据传入测试方法中,判断方法的测试结果与预期结果是否相同。如果相同,通过测试;如果不相同,测试出现Failure,就说明代码有问题,需要继续修改代码。

  • 第二个测试,我将RandomQuestions类中的questionsShop()方法调用到test包中新建的testPartRQquestionsShop类中,该测试类关键代码如下:

@Test
	public void testquestionsShop() {
		RandomQuestions rq=new RandomQuestions();//实例化一个对象为rq
	    String s1=rq.questionsShop();	//将s1代表rq调用questionsShop()方法
	    String[] a=s1.split(" ");  //先用split的将s1字符串用空格打断成数组,创建一个数组a来等于s1,存下questionsShop()方法返回的题目
	    int symbolNumber=0; // 定义符号的个数
	    int digNumber=0; // 定义数字的个数
	    for(int i=0;i<a.length;i++) {  
	    	if(a[i].matches("[\\+\\-\\×\\÷]")) {   //利用正则表达式判断题目中有任意一个加减乘除符号,就symbolNumber+1
	    		symbolNumber++;
	    	}
	    	else if(a[i].matches("\\d+")) { //利用正则表达式判断题目中有数字就digNumber+1
	    		digNumber++;
	    	}
	    }
	    boolean expected=true;  //初始化expected预期结果为true
	    boolean right;
	    if(digNumber-symbolNumber==1) {  //如果相减为1,说明产生的题目符合要求,然后把right赋值为true,再与预期结果比较
	    	right=true;
	    }
	    else {
	    	right=false;
	    }
	    assertEquals(expected, right); //自动判断题目是否符合要求
	    symbolNumber=0;
	    digNumber=0;
	    System.out.println("当前题目为: "+rq.problemSave); //人工判断题目是否符合要求
	 }

该测试类表示如果预期结果与实际结果相同,就测试成功,否则测试失败。

  • 第三个测试我将MathExam类中的main方法调用到test包里新建的一个testMain类中,看输入参数后,整个程序能否正确运行,各个模块能否被正确调用,其中包括输入输出,输入参数,一二三年级算法等。

  • 第四个测试我将所有test包里的测试类都调用到test包里的testAll测试类中,利用JUnit测试套件,运行所有测试。

测试覆盖率

结构优化

UML类图

运行流程图

心得体会

在这次的结对测试作业中,我有以下一些心得:

  • 测试方法上必须使用@Test进行修饰;
  • 测试类的包应该和被测试类保持一致;
  • 测试单元中的每个方法可以独立测试,测试方法间不能有任何的依赖;
  • 测试结果中Failure表示测试点发现了问题,也就是程序输出的结果和我们预期的不一样;
  • 测试结果中error是由代码异常引起的,它可能产生于测试代码本身的问题,也可能是被测试代码中的一个BUG;
  • 测试套件是组织测试类一起运行的;
  • 写一个作为测试套件的入口类,这个类里不包含其他的方法;
  • 更改测试运行器Suite.class
  • 将要测试的类作为数组传入到Suite.SuiteClasses({})。
posted @ 2018-09-30 11:19  薛定谔的猫灬  阅读(196)  评论(0编辑  收藏  举报