• 结对单元测试(随机运行四则运算)


    单元测试:

    由于这次换了一个结对伙伴,我们做的单元测试和黑白盒是我小伙伴的四则运算源代码,我负责进行单元测试和白盒,小伙伴负责黑盒。

    结对伙伴 54江丹仪,博客地址:http://www.cnblogs.com/JDY64/

    在进行单元测试的过程中,我将源代码主要算法中的分为三种方法封装在Core类中:

    import java.util.Scanner;
    
    public class Core {
    	int a,b,c,d,h;
    	char fh2,fh3,fh4;
    	char[]fh={'+','-','*','/'};
    	Scanner in=new Scanner(System.in);
    	int ranswer,answer;//正确答案和用户输入答案
    	int num,fhnum;//出题数和符号数
    
    	public void Fhum1 (int a,int b,char fh2)
    	{
    		if(fh2=='+'){
    			ranswer=a+b;
    		}
    		if(fh2=='-'){
    			ranswer=a-b;
    		}
    		
    		if(fh2=='*'){
    			ranswer=a*b;
    		}
    		if(fh2=='/'){
    			ranswer=a/b;
    		}
    	}
    	
    	
    	public void Fhum2 (int a,int b,int c,char fh2,char fh3){
    		if(fh2=='+')
    		{
    		if(fh3=='+')
    		{
    			ranswer=a+b+c;
    		}
    		if(fh3=='-')
    		{
    			ranswer=a+b-c;
    		}
    		
    		if(fh3=='*')
    		{
    			ranswer=a+b*c;
    		}
    		if(fh3=='/')
    		{
    			ranswer=a+b/c;
    		}
    		if(fh2=='-')
    		{
    		if(fh3=='+'){
    			ranswer=a-b+c;
    		}
    		if(fh3=='-'){
    			ranswer=a-b-c;
    		}
    		
    		if(fh3=='*'){
    			ranswer=a-b*c;
    		}
    		if(fh3=='/'){
    			ranswer=a-b/c;
    		}		
    	}
    	
    	if(fh2=='*')
    	{
    		if(fh3=='+'){
    			ranswer=a*b+c;
    		}
    		if(fh3=='-'){
    			ranswer=a*b-c;
    		}
    		
    		if(fh3=='*'){
    			ranswer=a*b*c;
    		}
    		if(fh3=='/'){
    			ranswer=a*b/c;
    		}
    	}
    	if(fh2=='/')
    	{
    		if(fh3=='+'){
    			ranswer=a/b+c;
    		}
    		if(fh3=='-'){
    			ranswer=a/b-c;
    		}
    		
    		if(fh3=='*'){
    			ranswer=a/b*c;
    		}
    		if(fh3=='/'){
    			ranswer=a-b/c;
    		}
    	}
    		}
    		}
    		public void Fhum3 (int a,int b,int c,int d,char fh2,char fh3,char fh4){	
    		if(fh2=='+')//第一为加
    			{
    				if(fh3=='+')
    				{
    					if(fh4=='+')
    					{ranswer=a+b+c+d;}
    					if(fh4=='-')
    					{ranswer=a+b+c-d;}
    					if(fh4=='*')
    					{ranswer=a+b+c*d;}
    					if(fh4=='/')
    					{ranswer=a+b+c/d;}
    					
    				}
    				if(fh3=='-')
    				{
    					if(fh4=='+')
    					{ranswer=a+b-c+d;}
    					if(fh4=='-')
    					{ranswer=a+b-c-d;}
    					if(fh4=='*')
    					{ranswer=a+b-c*d;}
    					if(fh4=='/')
    					{ranswer=a+b-c/d;}
    					
    				}
    				if(fh3=='*')
    				{
    					if(fh4=='+')
    					{ranswer=a+b*c+d;}
    					if(fh4=='-')
    					{ranswer=a+b*c-d;}
    					if(fh4=='*')
    					{ranswer=a+b*c*d;}
    					if(fh4=='/')
    					{ranswer=a+b*c/d;}
    					
    				}
    				if(fh3=='/')
    				{
    					if(fh4=='+')
    					{ranswer=a+b/c+d;}
    					if(fh4=='-')
    					{ranswer=a+b/c-d;}
    					if(fh4=='*')
    					{ranswer=a+b/c*d;}
    					if(fh4=='/')
    					{ranswer=a+b/c/d;}
    					
    				}
    			}
    			
    			
    			if(fh2=='-')//第一为减
    			{
    				if(fh3=='+')
    				{
    					if(fh4=='+')
    					{ranswer=a-b+c+d;}
    					if(fh4=='-')
    					{ranswer=a-b+c-d;}
    					if(fh4=='*')
    					{ranswer=a-b+c*d;}
    					if(fh4=='/')
    					{ranswer=a-b+c/d;}
    					
    				}
    				if(fh3=='-')
    				{
    					if(fh4=='+')
    					{ranswer=a-b-c+d;}
    					if(fh4=='-')
    					{ranswer=a-b-c-d;}
    					if(fh4=='*')
    					{ranswer=a-b-c*d;}
    					if(fh4=='/')
    					{ranswer=a-b-c/d;}
    					
    				}
    				if(fh3=='*')
    				{
    					if(fh4=='+')
    					{ranswer=a-b*c+d;}
    					if(fh4=='-')
    					{ranswer=a-b*c-d;}
    					if(fh4=='*')
    					{ranswer=a-b*c*d;}
    					if(fh4=='/')
    					{ranswer=a-b*c/d;}
    					
    				}
    				if(fh3=='/')
    				{
    					if(fh4=='+')
    					{ranswer=a-b/c+d;}
    					if(fh4=='-')
    					{ranswer=a-b/c-d;}
    					if(fh4=='*')
    					{ranswer=a-b/c*d;}
    					if(fh4=='/')
    					{ranswer=a-b/c/d;}
    					
    				}
    			}
    			if(fh2=='*')//第一为乘
    			{
    				if(fh3=='+')
    				{
    					if(fh4=='+')
    					{ranswer=a*b+c+d;}
    					if(fh4=='-')
    					{ranswer=a*b+c-d;}
    					if(fh4=='*')
    					{ranswer=a*b+c*d;}
    					if(fh4=='/')
    					{ranswer=a*b+c/d;}
    					
    				}
    				if(fh3=='-')
    				{
    					if(fh4=='+')
    					{ranswer=a*b-c+d;}
    					if(fh4=='-')
    					{ranswer=a*b-c-d;}
    					if(fh4=='*')
    					{ranswer=a*b-c*d;}
    					if(fh4=='/')
    					{ranswer=a*b-c/d;}
    					
    				}
    				if(fh3=='*')
    				{
    					if(fh4=='+')
    					{ranswer=a*b*c+d;}
    					if(fh4=='-')
    					{ranswer=a*b*c-d;}
    					if(fh4=='*')
    					{ranswer=a*b*c*d;}
    					if(fh4=='/')
    					{ranswer=a*b*c/d;}
    					
    				}
    				if(fh3=='/')
    				{
    					if(fh4=='+')
    					{ranswer=a*b/c+d;}
    					if(fh4=='-')
    					{ranswer=a*b/c-d;}
    					if(fh4=='*')
    					{ranswer=a*b/c*d;}
    					if(fh4=='/')
    					{ranswer=a*b/c/d;}
    					
    				}
    			}
    		}
    		public int getResult(){
    			return ranswer;
    		}
    	}

    第二步:将JUnit4单元测试包引入这个项目中

    第三步,生成JUnit测试框架,之后系统会自动生成一个新类CoreTest,再根据情况完善CoreTest类里面的代码,完整的CoreTest代码如下:

    import static org.junit.Assert.*;
    
    import org.junit.Before;
    import org.junit.Test;
    
    
    public class CoreTest {
        private static Core core=new Core();
        @Before
        public void setUp() throws Exception {
        }
       
        @Test 
        public void testFhum1() {
            core.Fhum1(3, 5, '+');
            assertEquals(8,core.getResult());
            fail("尚未实现");
        }
        @Test
        public void testFhum2() {
            core.Fhum2(3, 5, 2, '*', '+');
            assertEquals(17,core.getResult());
            fail("尚未实现");
        }
    
        @Test
        public void testFhum3() {
            core.Fhum3(5, 3, 2, 4, '+','-' , '+');
            assertEquals(10,core.getResult());
            fail("尚未实现");
        }
    
    }

    最后,进行测试,结果如下:

    白盒测试:

    实验总结:

      在一开始拿到的是自己完全不熟悉的代码,要先把小伙伴的代码看熟悉,  觉得代码比较混乱,不知道怎么去改比较好,运行中发现了几个可以改进的地方如下:

      1.一开始运行的时候,弹出的框里面什么东西都没有,需要先最小化再放大才可以看到界面提示。

      2.选择题目数大于5题的时候会自动退出程序,个人觉得可以先给个提示或者删除此功能。

      3.做完一道题时按确定要重新按开始答题才可以再次答题,答完题目后直接就退出框,一开始不熟悉程序的时候感觉不知道按哪里。

      4.代码缺少对分数的考虑,如5/3答案直接为1,可以将随机数强制转换为浮点型。

       做单元测试中,发现两个运算符的这部分算法有问题,但是不知道怎么去改,也不知道看哪里提示问题在哪里,感觉很茫然,无从下手。

      黑白盒的测试中,我负责的是白盒测试,但是觉得对这个黑白盒其实不是特别了解,老师上课讲了一下也没有听懂,做作业的时间比较短,我个人觉得白盒子就是对算法源代码的流程分析,黑盒子就是程序的改进结果。

         

  • 相关阅读:
    php程序员面试经验
    模板引擎(smarty)知识点总结五
    模板引擎(smarty)知识点总结三
    js计算字数
    phpexcel导出成绩表
    phpexcel用法(转)
    模板引擎(smarty)知识点总结
    apache泛域名解析
    对象的解构赋值
    解构赋值
  • 原文地址:https://www.cnblogs.com/leewanmei/p/4469591.html
Copyright © 2020-2023  润新知