zoukankan      html  css  js  c++  java
  • 结对编程2——单元测试(201421123040,60,61)

    由于班级人数为奇数,故我们组员有三人,分别是孙佳萱(201421123040),谷天鹏(201421123060),常昊(201421123061)

    需求分析

    这次项目我们将上一次的项目四则运算中的计算模块独立出来,另写了一个独立的类。
    再利用一个测试模块对计算模块进行测试,测试模块使用的是php下的phpunit单元测试,ide为phpstorm

    测试框架

    计算模块

    class Quiz {
        function simplify($mol, $den) {
            $Mol = $mol;
            $Den = $den;
            if($den == 0){
                return "分母不为0";
            }
                while ($den) {
                    $temp = $mol % $den;
                    $mol = $den;
                    $den = $temp;
                }
                $temp = $mol;
                if ($temp != 0) {
                    $mol = $Mol / $temp;
                    $den = $Den / $temp;
                    if ($den == 1) {
                        return $mol;
                    } else {
                        return "$mol/$den";
                    }
                }
            }
    
        function getQuiz($Fra_a,$Fra_b,$Fra_c,$Fra_d,$operator) {
            $answer = 0;
            switch ($operator) {
                case '+':
                    $mol = ($Fra_a * $Fra_d) + ($Fra_c * $Fra_b);
                    $den = $Fra_b * $Fra_d;
                    $answer = $this->simplify($mol, $den);
                    break;
                case '-':
                    $mol = ($Fra_a * $Fra_d) - ($Fra_c * $Fra_b);
                    $den = $Fra_b * $Fra_d;
                    $answer = $this->simplify($mol, $den);
                    break;
                case '×':
                    $mol = $Fra_a * $Fra_c;
                    $den = $Fra_b * $Fra_d;
                    $answer = $this->simplify($mol, $den);
                    break;
                case '÷':
                    $mol = $Fra_a * $Fra_d;
                    $den = $Fra_b * $Fra_c;
                    $answer = $this->simplify($mol, $den);
                    break;
                default:
                    $answer="error";
                    echo $answer;
                    break;
            }
            return $answer;
        }
    }
    

    测试

    分数的四则运算

    $Test = new Quiz();
            $this->assertEquals('104/235',$Test->getQuiz(2,5,8,188,'+'));
            $this->assertEquals('1',$Test->getQuiz(3,6,3,6,'+'));
            $this->assertEquals('1/2',$Test->getQuiz(6,6,3,6,'-'));
            $this->assertEquals('21/4',$Test->getQuiz(9,6,7,2,'×'));
            $this->assertEquals('40/21',$Test->getQuiz(8,3,7,5,'÷'));
    

    分数化简

    $this->assertEquals('21/4',$Test->simplify(42,8));
    

    异常处理(除0,符号错误)

    $this->assertEquals('error',$Test->getQuiz(3,6,3,6,'?'));
    $this->assertEquals('分母不为0',$Test->simplify(42,0));
    

    测试结果

    这里断言故意写错,输出结果如下

    正确输出

    通过测试

    代码覆盖率

    php下通过phpunit 与 Xdebug扩展完成代码覆盖率的查看以及报告生成以及ide内部查看代码覆盖率

    通过命令行生成html代码覆盖率报告

    #    phpunit --coverage-html ./coverage ./QuizTest.class.php
    

    小结与感受:通过测试,是否有效发现了程序计算模块的问题,并给予改进?

    经过测试,计算模块基本没有问题,一些小的问题也已经改进。
    因为之前没有接触过单元测试,查阅了很多资料,经过很多次的修改,对单元测试中的断言有了一定的了解。
    但毕竟是第一次接触,不是很熟练,自己将会多加练习。

    在隔了一周之后再看之前的代码,是否更能体会到下面这些东西

    (1) 良好的设计
    设计较之前更加简洁清晰,更加完善了
    (2) 编码规范
    代码可读性较强,成员之间没有因此事产生问题
    (3) 必要的注释
    必要注释都有标明

    PSP

    结对照片


    Coding地址

    https://coding.net/u/augur_g/p/homework-2/git

  • 相关阅读:
    devise 异步发邮件
    ubuntutweak for lucid
    960gs blueprint
    Amoeba for mysql 0.31发布(读写分离、负载均衡、Failover、数据切分)
    Google App Servlet容器转型 – 从Tomcat到Jetty
    DBeaver
    用simple from暂不用formtastic
    [SQL Server]ORDER BY的问题
    PHP pathinfo() 函数
    php中使用head进行二进制流输出,让用户下载PDF等附件的方法
  • 原文地址:https://www.cnblogs.com/haogege/p/6637064.html
Copyright © 2011-2022 走看看