zoukankan      html  css  js  c++  java
  • 20180925-4 单元测试,结对

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2146

    git地址:https://git.coding.net/qiaojingyu/f4.git

    单元测试代码详见上述git地址中的Test_f4.cs

    结对伙伴:乔静玉

    集成环境:Visual Studio 2017 

    编程语言:C#

    测试框架:NUnit3

    测试环境地配置,以及如何编写测试用例等参考了冉华学长的博客 http://www.cnblogs.com/ranh941/p/7629279.html ,在此深表感谢!

    一、编写测试用例

    四则运算的实现大概可以分为几个步骤,随机生成试题的字符串,将字符串转化为后缀表达式(逆波兰式),对后缀表达式进行计算得到结果。

    差不多是三个步骤,针对这三个步骤,我们讨论设计了相应功能的测试用例。

    (一)针对用于生成试题字符串的CreateEquation类

    对生成的试题是否是字符串string类型进行了判断。

    (二)针对生成逆波兰式的类CreateRPN

    1. 无括号情况:

    • 输入字符串:“19-4-2-8=”

      期望输出结果:“19 4 -  2 - 8 - ”

    • 输入字符串:“5*6+7/9=”

      期望输出结果:“5 6 * 7 9 / +”

    2. 有括号情况:

    • 输入字符串:“1-2-(3-4)=”

      期望输出结果:“1 2 - 3 4 - -”

    • 输入字符串:“(1+2)*3-4=”

      期望输出结果:“1 2 + 3 * 4 -”

    • 输入字符串:“1+((2-3)/4)=”

      期望输出结果:“1 2 3 - 4 / +”

    (三)针对计算逆波兰式的类Calculator

    • 输入字符串:“1 2 +”

      期望输出结果:3

    • 输入字符串:“4 5 -”

      期望输出结果:-1

    • 输入字符串:“2 3 *”

      期望输出结果:6

    • 输入字符串:“12 6 /”

      期望输出结果:2

    • 输入字符串:“19 14 - 12 - 18 -”

      期望输出结果:-25

    • 输入字符串:“1 2 3 - 4 / +”

      期望输出结果:0.75

    二、测试情况

    (一)第一次运行所有测试用例:

    1. 生成逆波兰式改错:通过下图可以查看到错误在于空格的添加。

    对相应代码的修改如下:

     1 int flag = 0;
     2 ... 
     3                 switch (strOld[i])
     4                 {
     5                     case '+':
     6                     case '-':
     7                     case '*':
     8                     case '/':
     9 ...
    10                         ope.Push(strOld[i]);
    11                         flag = 1;
    12 ...
    13                     default:
    14                         num.Push(strOld[i]);
    15                         if ((flag == 1) && (i != 0))
    16                         {
    17                             strNew += " ";
    18                             flag = 0;
    19                         }
    20                         strNew += strOld[i];
    21                         break;
    22                 }
    1 while (ope.Peek() != '#')
    2 {
    3     strNew += " " + ope.Peek();
    4     ope.Pop();
    5 }

    修改后测试通过:

    2. 计算逆波兰式改错

    计算结果与预期得到的值不同。

    发现是因为减法和除法,左右值的赋值顺序错误。

     1 //减法
     2 case '-':
     3     left = result.Peek();
     4     result.Pop();
     5     right = result.Peek();
     6     result.Pop();
     7     answer =right - left;
     8     i++;
     9     break;
    10 
    11 
    12 //除法
    13 case '/':
    14     left = result.Peek();
    15     result.Pop();
    16     right = result.Peek();
    17     result.Pop();
    18     answer = right / left;
    19     i++;
    20     break

    (二)最后一次测试,全部通过:

    三、总结、心得

    通过这次作业,学会了如何进行单元测试,保证自己的程序可以实现老师要求的基本功能。同时也发现了单元测试的重要性。同时也在这个作业快结束的时候,慢慢感受到一点TDD测试驱动开发的意思。先设计针对每个功能的测试用例,先考虑代码的使用需求。然后通过运行这些测试用例是否通过,来找到自己代码中存在的问题,没有实现或是实现有误的部分。

  • 相关阅读:
    使用MFC界面库LibUIDK制作超酷界面
    使用WSH和WMI实现定时记录系统CPU和内存使用率
    关于CreateFileMapping的问题
    360对NSIS误报Malware.QVM06.GEN的解决办法
    win2003实现单用户远程登录
    All bytes must be within the maximum size specified by CreateFileMapping
    解决在VS2005中“当前不会命中断点。源代码与原始版本不同”的问题
    static library中能不能带资源
    HUDSON_HOME
    USB GUID查找
  • 原文地址:https://www.cnblogs.com/wuyiyao694/p/9750673.html
Copyright © 2011-2022 走看看