zoukankan      html  css  js  c++  java
  • 作业要求20170928-2 单元测试结对

    结对伙伴:邹双黛

    要求1 

    对每个功能,先给出测试用例,然后在编码功能。请注意把测试用例视为功能需求完成的检验指标。

    测试用例:https://git.coding.net/tianjiping/ruanjiangongcheng.git

    版本

    开始时间

    结束时间

    备注

    V1.0

    2017/10/4 15:30:30

    2017/10/4 17:26:14

    初步确定测试用例

     

     

     

     

    测试用例ID

    用例标题

    场景

    测试数据

    测试步骤

    预期结果

    TC1-1

    功能一-用户计算结果输入格式错误

    对用户输入的计算结果检验。

    用户数输入题目的计算结果。

    控制台出现题目后,输入“*”,*代表用户的计算结果,且*的第一个字符不为’?’。然后点击回车。

    控制台输出“请重新输入答案”。

    TC1-2

    功能一-用户计算结果输入格式正确-值错误

    控制台出现题目后,输入“?*”,*代表用户的计算结果。

    控台台换行显示“答对啦,你真是个天才!”

    TC1-3

    功能一-用户计算结果输入格式正确-值正确

    控台台换行显示“你一共答对n道题,共m道题”(n代表答对题目的数量, m此时为20)

    TC1-4

    功能一-不输入计算结果

    出现题目后,不输入任何字符,直接点击回车键。

    控制台输出“请重新输入答案”。

    TC1-5

    功能一-答题结束

    答完20道题后控制台应存在的输出结果。

     

    答完20道题目。

    控制台输出“你一共答对n道题,共m道题”(n代表答对题目的数量,m此时为20),该段文字与最后道题的输出结果之间存在一个空行。

    TC2-1

    功能二-用户计算结果输入格式错误

    对用户输入的计算结果检验。

    用户输入题目的计算结果。

    控制台出现题目后,输入“*”,*代表用户的计算结果,且*的第一个字符不为’?’。然后点击回车。

    控制台输出“请重新输入答案”。

    TC2-2

    功能二-用户计算结果输入格式正确-值错误

    控制台出现题目后,输入“?*”,*代表用户的计算结果。然后点击回车。

    控台台换行显示“答对啦,你真是个天才!”

    TC2-3

    功能二-用户计算结果输入格式正确-值正确

    控台台换行显示“你一共答对n道题,共m道题”(n代表答对题目的数量, m此时为20)

    TC2-4

    功能二-不输入计算结果

    出现题目后,不输入任何字符,直接点击回车键。

    控制台输出“请重新输入答案”。

    TC2-4

    功能二-答题结束

    答完20道题后控制台应存在的输出结果。

     

    答完20道题目。

    控制台输出“你一共答对n道题,共m道题”(n代表答对题目的数量,m此时为20),该段文字与最后道题的输出结果之间存在一个空行。

    TC3-1

    功能三-题目数量为负数

    命令行参数合法性检验

    f4 -c -200

    (1)打开控制台,进入可执行文件目录。

    (2)输入测试数据。

    (3) 点击回车键。

    控制台输出“题目数量必须是 正整数。”

    TC3-2

    功能三-题目数量为小数

    f4 -c 3.5

    TC3-3

    功能三-题目数量为字符串

    f4 -c test

    TC3-4

    功能三-题目数量为0

    f4 -c 0

    TC3-5

    功能三-命令行参数不为-c

    f4 -m 5

    控制台输出“输入不合法”。

    TC3-6

    功能三-命令行参数合法

    f4 -c 4

    (1)控制台输出4个不同的题目和正确答案。

    (2)生成一个记录4个题目和正确答案的txt文件。

    (3)题目与答案横向对齐,答案在题目右侧,同时答案的第一个数字竖直方向对齐。

     

     

    1 首先添加c++测试工具

    2 添加c++测试

      

    3 在TestMethod1()函数里面添加要测试功能 ,我添加的是求值功能。

     

     4 测试结果通过

    5 测试代码如下 

      1 #include "stdafx.h"
      2 #include<stdio.h>
      3 #include<stack>
      4 #include<stdlib.h>
      5 #include<string>
      6 #include<math.h>
      7 #include<time.h>
      8 using namespace std;
      9 using namespace System;
     10 using namespace System::Text;
     11 using namespace System::Collections::Generic;
     12 using namespace Microsoft::VisualStudio::TestTools::UnitTesting;
     13 
     14 void weishu(char str[10], int i, int n);
     15 struct Number
     16 {
     17     double a;
     18     bool b;
     19 };
     20 stack<Number>s3;
     21 void houzhuiming(char str[10])
     22 {
     23     stack<char>s1;
     24     stack<Number>s2;
     25     int i = 0, j = 0;
     26     for (i = 0; str[i] != ''; i++)
     27     {
     28         if (str[i] >= '0'&&str[i] <= '9')
     29         {
     30             Number num;
     31             num.a = 0;
     32             num.b = 0;
     33             while (str[i] <= '9'&&str[i] >= '0')
     34                 num.a = (str[i++] - '0') + num.a * 10;
     35             s2.push(num);
     36             i--;
     37         }
     38         else
     39         {
     40             if (str[i] == ')')
     41             {
     42                 while (s1.top() != '(')
     43                 {
     44                     Number num;
     45                     num.b = 1;
     46                     num.a = s1.top();
     47                     s2.push(num);
     48                     s1.pop();
     49                 }
     50                 s1.pop();
     51             }
     52             else if (s1.empty() || s1.top() == '(' || str[i] == '(')
     53             {
     54                 s1.push(str[i]);
     55             }
     56             else
     57             {
     58                 if ((str[i] == '*' || str[i] == '/') && (s1.top() == '+' || s1.top() == '-'))
     59                     s1.push(str[i]);
     60                 else
     61                 {
     62                     Number num;
     63                     num.b = 1;
     64                     num.a = s1.top();
     65                     s2.push(num);
     66                     s1.pop();
     67                     i--;
     68                 }
     69             }
     70         }
     71     }
     72     while (!s1.empty())
     73     {
     74         Number num;
     75         num.b = 1;
     76         num.a = s1.top();
     77         s2.push(num);
     78         s1.pop();
     79     }
     80     while (!s2.empty())
     81     {
     82         s3.push(s2.top());
     83         s2.pop();
     84     }
     85 }
     86 void fuhao(char str[10], int i, int n)
     87 {
     88     //srand(time(0));
     89     int num = rand() % 4;
     90     srand(time(0));
     91     switch (num)
     92     {
     93     case 0:str[i] = '+'; break;
     94     case 1:str[i] = '-'; break;
     95     case 2:str[i] = '*'; break;
     96     case 3:str[i] = '/'; break;
     97     }
     98     weishu(str, ++i, n);
     99 }
    100 void weishu(char str[10], int i, int n)
    101 {
    102     //   srand(time(0));
    103     int num = rand() % 10;
    104     srand(time(0));
    105     str[i] = '0' + num;
    106     n++;
    107     if (n == 4)
    108     {
    109         str[++i] = '';
    110         return;
    111     }
    112     i++;
    113     fuhao(str, i, n);
    114 }
    115 
    116 namespace TestProject1
    117 {
    118     [TestClass]
    119     public ref class UnitTest
    120     {
    121     private:
    122         TestContext^ testContextInstance;
    123 
    124     public: 
    125         /// <summary>
    126         ///获取或设置测试上下文,该上下文提供
    127         ///有关当前测试运行及其功能的信息。
    128         ///</summary>
    129         property Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ TestContext
    130         {
    131             Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ get()
    132             {
    133                 return testContextInstance;
    134             }
    135             System::Void set(Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ value)
    136             {
    137                 testContextInstance = value;
    138             }
    139         };
    140 
    141         #pragma region Additional test attributes
    142         //
    143         // 编写测试时,可以使用以下附加特性: 
    144         //
    145         // 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
    146         //[ClassInitialize()]
    147         //static void MyClassInitialize(TestContext^ testContext) {};
    148         //
    149         // 在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
    150         //[ClassCleanup()]
    151         //static void MyClassCleanup() {};
    152         //
    153         //在运行每个测试之前,使用 TestInitialize 来运行代码
    154         //[TestInitialize()]
    155         //void MyTestInitialize() {};
    156         //
    157         //在每个测试运行完之后,使用 TestCleanup 来运行代码
    158         //[TestCleanup()]
    159         //void MyTestCleanup() {};
    160         //
    161         #pragma endregion 
    162 
    163         [TestMethod]
    164         void TestMethod1()
    165         {
    166             //
    167             // TODO:  在此处添加测试逻辑
    168             //
    169             stack<double>s4;
    170             while (!s3.empty())
    171             {
    172                 Number c1 = s3.top();
    173                 s3.pop();
    174                 if (c1.b == 0)
    175                     s4.push(c1.a);
    176                 else
    177                 {
    178                     double c2 = s4.top();
    179                     s4.pop();
    180                     double c3 = s4.top();
    181                     s4.pop();
    182                     double c4;
    183                     switch ((int)c1.a)
    184                     {
    185                     case '+':c4 = c3 + c2; break;
    186                     case '-':c4 = c3 - c2; break;
    187                     case '*':c4 = c3*c2; break;
    188                     case '/':c4 = c3 / c2; break;
    189                     }
    190                     s4.push(c4);
    191                 }
    192             }
    193             return s4.top();
    194         };
    195     };
    196 }
    197 int main()
    198 {
    199     char str[100];
    200     int js = 0;
    201     for (int i = 0; i < 20; i++)
    202     {
    203         int t = 0;
    204         int n = 0;
    205         weishu(str, t, n);
    206         houzhuiming(str);
    207         double ans = void TestMethod1();
    208         for (int i = 0; str[i] != ''; i++)
    209             printf("%c", str[i]);
    210         printf("=
    ?");
    211         double s;
    212         scanf("%lf", &s);
    213             if (abs(s - ans)<0.01)
    214             {
    215                 js++;
    216                 printf("答对了,你真是天才
    ");
    217             }
    218             else
    219                 printf("再想想吧,答案似乎是%.2lf喔!
    ", ans);
    220         }
    221         printf("你一共答对%d道题,共20道题。
    ", js);
    222         return 0;
    223     }
    View Code

    要求 2

    在博客报告测试用例全部fail 到 全部pass 的过程,报告事实 (fail到修改代码或者测试用例,到pass) 以及收获。 除了最初的框架,测试用例中存在一次性pass没有经过fail的,也报告一次性通过,给出如此优秀地实现了这部分功能的代码

                     测试以前没接触过,测试我主要是用单元测试,我先上网查了一下,网上说点击函数右键 如图

     

    结果出现这样的错误 我查了一下,结果并没有解决这样的错误,然后我有直接添加测试,但是看老师的要求,2人结对,使用TDD测试框架 (如NUnit, JUnit, cppUnit等)完成本周作业四则运算试题生成的单元测试。我试着查了一下百度,百度说Nunit主要是c#的测试,Junt主要是java代码的测试,cppUnit主要是c++测试的工具然而我查了一下cppunit在vs2010上过程如图

    什么都找不到,这就很尴尬了,所以我努力解决这个问题,结果没有成功,所以我又下载了个2015 ,在2015上找到了cppUnit

    这样找到了,c++的测试,测试代码

     1 [TestMethod]
     2         void TestMethod1()
     3         {
     4             //
     5             // TODO:  在此处添加测试逻辑
     6             //
     7             stack<double>s4;
     8             while (!s3.empty())
     9             {
    10                 Number c1 = s3.top();
    11                 s3.pop();
    12                 if (c1.b == 0)
    13                     s4.push(c1.a);
    14                 else
    15                 {
    16                     double c2 = s4.top();
    17                     s4.pop();
    18                     double c3 = s4.top();
    19                     s4.pop();
    20                     double c4;
    21                     switch ((int)c1.a)
    22                     {
    23                     case '+':c4 = c3 + c2; break;
    24                     case '-':c4 = c3 - c2; break;
    25                     case '*':c4 = c3*c2; break;
    26                     case '/':c4 = c3 / c2; break;
    27                     }
    28                     s4.push(c4);
    29                 }
    30             }
    31             return s4.top();
    32         };
    33     };
    34 }
    View Code

     测试 git:https://git.coding.net/tianjiping/ruanjiangongcheng.git

  • 相关阅读:
    【宗萨仁波切】研究佛教即是研究自己,而研究自己即是发现无我
    【佩玛.丘卓】在当下那一刻觉醒...
    佩玛·丘卓:人生基本的事实
    佩玛.丘卓的生活智慧——【空船】
    佩玛·丘卓 | 宽恕自己,重新开始
    佩玛·丘卓:修炼平等心
    佩玛•丘卓 :我们需要的皆已具足
    【佩玛丘卓】喂养好狼
    佩玛.丘卓:为事情如实的面目而喜悦
    佩玛·丘卓:精神勇士的口诀
  • 原文地址:https://www.cnblogs.com/tianjiing/p/7645045.html
Copyright © 2011-2022 走看看