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

    项目代码


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


     需求分析:

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

    运算符号在程序中是单个字符生成的,所以没有考虑"++"

    测试相应的加减乘除功能和除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错误产生的异常捕获并将结果置为“参数错误“反馈

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

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

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

    单元测试:

    小结与感受:时隔一周再去看代码而且是别人的代码难免有些生疏,有些地方没有注释还要花时间去看,结对编程不是一个人的任务必要的代码注释能让伙伴更容易的看懂代码。

    汉堡包式评价:

    先来一片面包:在一开始的设计中麟凤原来是打算将计算分为分数计算和整数计算两部分,后来仔细一想只需要将整数看做分母为1的分数划入分数部分不就不用分两部分写了,有时候充分考虑队友的建议也很重要。

    再把肉放上:在功能设计上要立足于队友和自己的水平,不要想到什么就想做什么。

    再来一片面包:个人属于比较懒的那类,希望队友多多监督不要嫌弃我。


    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


     

     

     

  • 相关阅读:
    转(Java中的递归思想)
    stuff thing object 区别
    论文阅读笔记ECCV 2018: Factorizable net: an efficient subgraphbased framework for scene graph generation
    论文阅读笔记Adversarial Learning with Mask Reconstruction for TextGuidedImage Inpainting
    论文阅读笔记Image Generation from Scene Graphs
    评价gan好坏的指标:IS和FID
    深度学习——正则化(L1\L2)(还没搞明白
    Adam
    L1 L2 SmoothL1损失函数
    ground truth
  • 原文地址:https://www.cnblogs.com/bestyun/p/6637184.html
Copyright © 2011-2022 走看看