zoukankan      html  css  js  c++  java
  • 【软件测试】功能性测试方法

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文!

    本博客全网唯一合法URL:http://www.cnblogs.com/acm-icpcer/p/8779376.html

    前一日函数PreDate是NextDate的逆函数,即给定一个年份、月份、日期,会返回前一天的日期。

    输入要求:
    年的取值在 1812 年到 2017 年。
    日的取值在 1 日到 31 日之间。
    月的取值在 1 到 12 月之间

    #include<cstdio>  
    #include<cstring>  
    #include<algorithm>  
    #include<iostream>  
    #include<string>  
    #include<vector>  
    #include<stack>  
    #include<bitset>  
    #include<cstdlib>  
    #include<cmath>  
    #include<set>  
    #include<list>  
    #include<deque>  
    #include<map>  
    #include<queue>  
    using namespace std;
    
    int main()
    {
        int year,month,day;
        cout<<"input NextDate(year month day):"<<endl;
        while(scanf("%d %d %d",&year,&month,&day)==3&&year&&month&&day)
        {
            if((year<1812||year>2017)||(month<1||month>12)||(day<1||day>31))
            {
                cout<<"input ERROR detected!"<<endl;
                continue;
            }
            bool is_leapyear=false;
            int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
            if((year%100!=0)&&(year%400==0||year%4==0))
            {
                is_leapyear=true;
                days[2]++;
            }
            
            if(day>days[month])
            {
                cout<<"input ERROR detected!"<<endl;
                continue;
            }
            
            day--;
            if(day<=0)
            {
                day=days[month-1];
                if(day==0)    day=31;//in case of 1->12
                month--;
            }
            if(month<=0)
            {
                month=12;
                year--;
            }
            cout<<year<<'/'<<month<<'/'<<day<<endl;
        }
        return 0;
    }

    决策表:

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    C1:月份在

    M1

    M1

    M1

    M2

    M2

    M3

    M3

    M4

    M4

    C2:日期在

    D1

    D2-D5

    D6

    D1

    D2-D6

    D1

    D2-D6

    D1

    D2-D3

    C2:年份在

     

     

     

     

     

     

     

     

     

    a1:不可能

     

     

    X

     

     

     

     

     

     

    a2:day减1

     

    X

     

     

    X

     

    X

     

    X

    a3:day复位31

    X

     

     

     

     

    X

     

    X

     

    a4:day复位30

     

     

     

    X

     

     

     

     

     

    a5:day复位29

     

     

     

     

     

     

     

     

     

    a6:day复位28

     

     

     

     

     

     

     

     

     

    a7:月减1

    X

     

     

    X

     

     

     

    X

     

    a8:月复位12

     

     

     

     

     

    X

     

     

     

    a9:年减一

     

     

     

     

     

    X

     

     

     

     

     

    10

    11

    12

    13

    14

    15

    16

    17

    C1:月份在

    M4

    M4

    M4

    M5

    M5

    M5

    M6

    M6

    C2:日期在

    D4

    D4

    D5-D6

    D1

    D1

    D2-D6

    D1

    D2-D6

    C2:年份在

    Y1

    Y2

     

    Y1

    Y2

     

     

     

    a1:不可能

     

    X

    X

     

     

     

     

     

    a2:day减1

    X

     

     

     

     

    X

     

    X

    a3:day复位31

     

     

     

     

     

     

    X

     

    a4:day复位30

     

     

     

     

     

     

     

     

    a5:day复位29

     

     

     

    X

     

     

     

     

    a6:day复位28

     

     

     

     

    X

     

     

     

    a7:月减1

     

     

     

    X

    X

     

    X

     

    a8:月复位12

     

     

     

     

     

     

     

     

    a9:年减一

     

     

     

     

     

     

     

     

     

     

    表格说明:

    M1={月份:4,6,9,11月}

    M2={月份:5,7,10,12月}

    M3={月份:1月}

    M4={月份:2月}

    M5={月份:3月}

    M6={月份:8月}

    D1={日期:1日}

    D2={日期:2<=日期<=27}

    D3={日期:28日}

    D4={日期:29日}

    D5={日期:30日}

    D6={日期:31日}

    Y1={年:是闰年}

    Y2={年:不是闰年}

     

    测试结果:

    用例ID

    输入数据

    预期输出

    实际输出

    是否通过

    备注

    001

    2015/4/1

    2015/3/31

    2015/3/31

    Yes

     

    002

    2015/4/5

    2015/4/4

    2015/4/4

    Yes

     

    003

    2015/6/31

    Error

    Error

    Yes

     

    004

    2015/7/1

    2015/6/30

    2015/6/30

    Yes

     

    005

    2015/7/4

    2015/7/3

    2015/7/3

    Yes

     

    006

    2015/1/1

    2014/12/31

    2014/12/31

    Yes

     

    007

    2015/1/2

    2015/1/1

    2015/1/1

    Yes

     

    008

    2015/2/1

    2015/1/31

    2015/1/31

    Yes

     

    009

    2015/2/28

    2015/2/27

    2015/2/27

    Yes

     

    010

    2016/2/29

    2016/2/28

    2016/2/28

    Yes

     

    011

    2015/2/29

    Error

    Error

    Yes

     

    012

    2016/2/31

    Error

    Error

    Yes

     

    013

    2016/3/1

    2016/2/29

    2016/2/29

    Yes

     

    015

    2015/3/25

    2015/3/24

    2015/3/24

    Yes

     

    016

    2015/8/1

    2015/7/31

    2015/7/31

    Yes

     

    017

    2015/8/5

    2015/8/4

    2015/8/4

    Yes

     

     

      画这个决策表,我的想法是年月日三项分别代表一个自变量,每个自变量都有自己的中断点,这个些中断点可以通过分类讨论的方法来进行等价类划分。比如,年在此分为闰年和非闰年,月可分为有31日的月份、有30日的月份和2月就足够了(但是实际上我进行了进一步的细化)。日分为30、31、28、29四类即可。然后根据这些划分了2*3*4=24个等价类,将触发了相同结果的等价类合并为一以减少测试用例的数量。代码没有什么可以说的,纯面向过程,只要根据最终的测试结果完善完善即可。

     

     

     

    tz@COI HZAU

    2018/4/10

  • 相关阅读:
    使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能。并且在界面上有radio 的选择内容也要上传
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/acm-icpcer/p/8779376.html
Copyright © 2011-2022 走看看