a. 需求分析:测试上有哪些详细的需求?

 1、把计算模块提取出来,单独创建一个类。 
 2、针对提取出来的计算类的接口函数做单元测试。
 3、测试整数运算。
 4、测试分数运算。

b. 测试数据:

1、整数运算测试:

2、分数运算测试:

3、代码覆盖率:

部分代码展示(整数):

    public string Calculate(string s)
    {
        // ToDo
        if(s.IndexOf("+")>-1){
            add(s);
        }else if(s.IndexOf("-")>-1){
            substract(s);
        }else if(s.IndexOf("*")>-1){
            multiply(s);
        }else if(s.IndexOf("/")>-1){
            divide(s);
        }
        Console.Write(getResult());
           
        return "";
    }
    public void add(String s)
    {
        String[] str = s.Split('+');
        result =int.Parse(str[0])+int.Parse(str[1]);
    }
    public void substract(String s)
    {
        String[] str=s.Split('-');
        result = int.Parse(str[0])-int.Parse(str[1]);
    }
    public void multiply(String s)
    {
        String[] str=s.Split('*');
        result = int.Parse(str[0])*int.Parse(str[1]);
    }
    public void divide(String s)
    {
        String[] str=s.Split('/');
        result = int.Parse(str[0])/int.Parse(str[1]);
    }

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

由于我们之前是借助控件接受参数,所以程序中省去了取参这一步骤,这次测试略微改动了一下,算法虽然没有优化但是看起来更加简洁了。
通过测试,可以很直观看到各个模块的功能。
算法逻辑是没有问题的,但是看起来有些杂乱,下次还是应该把方法单独写出来,有利于测试,看起来也更方便。

照片:

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

(1) 良好的设计:之前没有分模块写在方法类调用,而是在按钮事件里直接写的方法,故这次作业前先进行了模块划分。
(2) 编码规范:规范的编码格式,有意义的函数名,使得这个时隔一周的代码看起来也不会太麻烦,时间上有一定的节省。
(3) 必要的注释:距离之前写这个代码已经过去一周了,添加必要的注释方便重温代码,大大节省了回忆代码的时间,这是个好习惯,要一直保持。

e.项目开发的coding.net 地址:https://coding.net/u/DzXzz/p/BasicCalculator-unittest/git

f.此次结对作业的PSP:

<body> <table> <tr> <td>PSP2.1</td> <td>Personal Software Process Stages</td> <td>Time Senior Student</td> <td>Time</td> </tr> <tr> <td>Planning</td> <td>计划</td> <td></td> <td></td> </tr> <tr> <td>Estimate</td> <td>估计这个任务需要多少时间</td> <td>6h</td> <td>7h</td> </tr> <tr> <td>Development</td> <td>开发</td> <td></td> <td></td> </tr> <tr> <td>Analysist</td> <td>需求分析 (包括学习新技术)</td> <td>0.5h</td> <td>0.4h</td> </tr> <tr> <td>Design Spec</td> <td>生成设计文档</td> <td>0</td> <td>0</td> </tr> <tr> <td>Design Review</td> <td>设计复审</td> <td>0</td> <td>0</td> </tr> <tr> <td>Coding Standard</td> <td>代码规范</td> <td>0.5h</td> <td>0.3h</td> </tr> <tr> <td>Design</td> <td>具体设计</td> <td></td> <td></td> </tr> <tr> <td>Coding</td> <td>具体编码</td> <td>2.5h</td> <td>3h</td> </tr> <tr> <td>Code Review</td> <td>代码复审</td> <td>0.5h</td> <td>0.5h</td> </tr> <tr> <td>Test</td> <td>测试(自我测试,修改代码,提交修改</td> <td>2h</td> <td>2h</td> </tr> <tr> <td>Reporting</td> <td>报告</td> <td>1.5h</td> <td>1.5h</td> </tr> <tr> <td></td> <td>测试报告</td> <td>0</td> <td>0</td> </tr> <tr> <td></td> <td>计算工作量</td> <td></td> <td></td> </tr> <tr> <td></td> <td>并提出过程改进计划</td> <td></td> <td></td> </tr> </table> </body>