zoukankan      html  css  js  c++  java
  • 结对编程2——单元测试

    项目代码


    陈麟凤 201421123015 && 张志杰 201421123019 &&黄海鸿 201421123020


    需求分析:

    将计算模块分离出来形成一个单独的类,针对自己采用的编程语言采用相应的方法

    测试相应的加减乘除功能和除0异常等

    设计测试框架, 模拟测试数据:

    • 加减乘除功能
    • 除0错误

    加减乘除功能:

    CalcFunction cf = new CalcFunction();
            //test add
            cf.s="1+2";
            cf.calc();
            assertEquals("3", cf.result);
            cf.s="1/5+7/8";
            cf.calc();
            assertEquals("43/40", cf.result);
            cf.s="10000+10000";
            cf.calc();
            assertEquals("20000", cf.result);
            cf.s="7/8+3/5";
            cf.calc();
            assertEquals("59/40", cf.result);
            
            //test sub
            cf.s="5-7";
            cf.calc();
            assertEquals("-2", cf.result);
            cf.s="1/7-8/9";
            cf.calc();
            assertEquals("-47/63", cf.result);
            cf.s="34-7";
            cf.calc();
            assertEquals("27", cf.result);
            cf.s="1/5-4/9";
            cf.calc();
            assertEquals("-11/45", cf.result);
            
            //test mul
            cf.s="5*7";
            cf.calc();
            assertEquals("35", cf.result);
            cf.s="1/7*8/9";
            cf.calc();
            assertEquals("8/63", cf.result);
            cf.s="34*7";
            cf.calc();
            assertEquals("238", cf.result);
            cf.s="1/5*4/9";
            cf.calc();
            assertEquals("4/45", cf.result);
            
            //test div
            cf.s="5÷7";
            cf.calc();
            assertEquals("5/7", cf.result);
            cf.s="1/7÷8/9";
            cf.calc();
            assertEquals("9/56", cf.result);
            cf.s="34÷7";
            cf.calc();
            assertEquals("34/7", cf.result);
            cf.s="1/5÷4/9";
            cf.calc();
            assertEquals("9/20", cf.result);
            
            cf.s="2++3";
            cf.calc();
            assertEquals("操作符错误", cf.result);
            cf.s="5÷0";
            cf.calc();
            assertEquals("参数错误", cf.result);

    加减乘除的功能测试通过assertequal中expected和actural值比较来判断功能的准确性

    除0错误+“1++2”的处理:

     public void calc(){
            if(s.indexOf("+")>-1)
            {
                add(s);
            }
            else if(s.indexOf("-")>-1)
            {
                sub(s);
            }
            else if(s.indexOf("*")>-1)
            {
                mul(s);
            }
            else if(s.indexOf("÷")>-1)
            {
                div(s);
            }
        }
        public void add(String s){
            try{
            String[] s1=s.split("[+]");
            if(s1[0].indexOf("/")>-1 || s1[1].indexOf("/")>-1)
            {
                String[] s2=s1[0].split("[/]");
                String[] s3=s1[1].split("[/]");
                int fenzi1=Integer.parseInt(s2[0]);
                int fenmu1=Integer.parseInt(s2[1]);
                int fenzi2=Integer.parseInt(s3[0]);
                int fenmu2=Integer.parseInt(s3[1]);
                int fenzi=fenzi1*fenmu2+fenzi2*fenmu1;
                int fenmu=fenmu1*fenmu2;
                int temp=yuefen(fenzi,fenmu);
                fenzi=fenzi/temp;
                fenmu=fenmu/temp;
                result=fenzi+"/"+fenmu;
            }
            else
            {
                int num1=Integer.parseInt(s1[0]);
                int num2=Integer.parseInt(s1[1]);
                int ans=num1+num2;
                result=ans+"";
            }
            }catch(java.lang.ArithmeticException e){
                result="参数错误";
            }
            catch( java.lang.NumberFormatException o){
                result="操作符错误";
            }
            
            
        }

    除0错误产生的异常捕获并将结果置为“参数错误“反馈

    操作符错误产生的异常捕获后将结果置为“操作符错误”反馈

    测试中遇到的问题及解决:

    • 最早是将整数与分数的计算分开的,原先的计算结果都没有错误,但是后面将分数和整数的计算合并后出现了一些乘法和除法的错误,将程序分成小模块后纠错就比较容易,直接去乘法和除法的代码那边将相应变量改对就OK了

    单元测试:

    小结与感受:

    一周后在看自己程序其实印象不是很深了,感觉代码的规范是非常必要的,在一段时间后肯定会对自己的程序感到陌生,规范的代码和相应的注释就能够更快的读懂自己的逻辑,而且在结对编程中,让你的伙伴看懂你写的代码是必须的,所以代码的规范不仅要做到自己看得懂,也要让其他人看得懂。在通过模块测试里确实能够发现程序的相应问题并加以改进。

    评价下伙伴:

    先来一片面包:在编程是容易投入与如何实现功能而不是去设计模块,起初是将计算分成分数计算和整数计算,被队友突然问道:"为什么不将两个加起来啊,整数不就是分母为1的分数",有点醒过来了,后面就将计算整合到一起,所以队友在编程过程的建议还是相当给力的,当然前提是能看得懂彼此写的代码。

    在把肉放上:在提出建议的时候最好能结合一下我的水平,提出一些和我水平相差太大的建议导致无法实现还嫌弃我。。

    再来一片面包:建议要好好提,不要动不动就嫌弃我的编程水平@201421123019@201421123020

    PSP:

    PSP2.1

    Personal Software Process Stages

    Time(min) Senior Student

    Time (min)

    Planning

    计划

    5

    2

    Estimate

    估计这个任务需要多少时间

    3

    5

    Development

    开发

    3

    0

    Analysis

    需求分析 (包括学习新技术)

    3

    2

    ·Design Spec

    生成设计文档

    1

    0

    ·Design Review

    设计复审

    1

    0

    Coding Standard

    代码规范

    10

    3

    · Design

    具体设计

    5

    5

    Coding

    具体编码

    60

    120

    ·Code Review

    代码复审

    5

    30

    Test

    测试(自我测试,修改代码,提交修改)

    10

    5

    Reporting

    报告

    5

    3

     

    测试报告

    3

    1

     

    计算工作量

    3

    5

     

    并提出过程改进计划

    5

    0

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    unit3d 4.6 document open solution
    Unity3dBug
    linq to xml
    A const field of a reference type other than string can only be initialized with null Error [duplicate]
    Redis数据类型
    redis快照与AOF
    redis实现高并发下的抢购/秒杀功能
    xss攻击怎么防止
    四种常见的索引类型
    什么是sql 注入及如何预防 sql 注入
  • 原文地址:https://www.cnblogs.com/chen15/p/6623167.html
Copyright © 2011-2022 走看看