软件测试实验1

1、设计函数实现输入日期显示星期几,并用等价类及边界值法测试

 

实验步骤:

① 设计程序

② 划分等价类,得到等价类表。等价类表格式如下:

③ 运用等价类划分法设计测试用例,得到测试用例表。测试用例表格式如下: 

④ 运用边界值法设计测试用例。 

  1. 程序、

import java.util.*;

 

public class rili {

 

public static void main(String[] args) {

Scanner n=new Scanner(System.in);

int r=0,i,p=0,year,k,z=0,month,day,t,monthsum=0;

//r为闰年数,i为余数。p为平年数。k为起始年数。z为总天数。monthsum为各个月天数

System.out.println("输入1900年1月1号之后的年份:");

year=n.nextInt();

for(k=1900;k<year;k++)//计算输入年数到1900年之间的平年有几个,跟闰年有几个。

{

if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)

{

r++;

}

else

p++;

}

z=z+r*366;

z=z+p*365;//计算年的总天数。

System.out.println("输入月数:");

    month=n.nextInt();

for(t=1;t<month;t++)//计算输入月,之前的月份的总天数。

{

switch(t)

{

case 1:monthsum=monthsum+31;

break;

case 2:

if((year%4==0 && year%100!=0)||(year%400==0))

monthsum=monthsum+29;

else

monthsum=monthsum+28;

break;

case 3:monthsum=monthsum+31;

break;

case 4:monthsum=monthsum+30;

break;

case 5:monthsum=monthsum+31;

break;

case 6:monthsum=monthsum+30;

break;

case 7:monthsum=monthsum+31;

break;

case 8:monthsum=monthsum+31;

break;

case 9:monthsum=monthsum+30;

break;

case 10:monthsum=monthsum+31;

break;

case 11:monthsum=monthsum+30;

break;

case 12:monthsum=monthsum+31;

break;

}

}

System.out.println("输入天:");

day=n.nextInt();

monthsum=monthsum+day;

z=monthsum+(z+1);

i=z%7;

if(i==0) {

System.out.println("星期一");

}

if(i==1) {

System.out.println("星期二");

}

if(i==2) {

System.out.println("星期三");

}

if(i==3) {

System.out.println("星期四");

}

if(i==4) {

System.out.println("星期五");

}

if(i==5) {

System.out.println("星期六");

}

if(i==6) {

System.out.println("星期七");

}

}

 

}

等价类表

输入条件

有效等价类

唯一标识

无效等价类

唯一标识

   1900<=y<=2500的闰年

1

Y<1900

10

 

1900<=y<=2500的平年

2

y>2500

11

m=1,3,5,7,8,10,12

3

m<1

12

 

m=4,6,9,11

4

m>12

13

 

m=2

5

 

 

1<=d<=28

6

d<1

14

 

d=29

7

d>31

15

 

d=30

8

 

 

 

d=31

9

 

 

测试用例表

序号

输入数据

覆盖等价类

输出

1

2012.3.31

1-3.6-9

星期二

2

2022.5.31

1-3.6-9

日期不存在

3

2022.4.29

1.2.4.7

星期五

4

2022.4.30

1.2.4.8

星期六

5

2022.4.31

1.2.4.9

日期不存在

6

2022.2.28

1.2.5.6

星期一

7

2012.2.29

1.5.7

星期三

8

2022.2.29

2.5.7

日期不存在

9

2055.3.12

10.11

年份错误

10

2012.13.1

12.13

月份错误

11

2012.1.33

14.15

日期错误

 

2、找零钱最佳组合

   假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商店的货币面值只包括:50(N50)10(N10) 5(N5)1(N1) 四种。

   请结合等价类划分法和边界值分析法为上述程序设计 出相应的测试用例。

实验步骤:

程序

import java.util.Scanner;

public class main {

    /**
     * 主函数
     * @param args
     */
    public static void main (String[] args) {
        // TODO Auto-generated method stub

        int pay = 0;//付款金额
        int cost = 0;//商品花费
        int change = 0;//找钱

        @SuppressWarnings("resource")
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入顾客付款金额:");
        //对输入的内容进行检测,是否符合规则
        try
        {
            pay = scanner.nextInt();
            if (pay > 100 || pay < 0)
            {
                System.out.println("请输入正确的金额");
                return;
            }

        }catch (Exception e)
        {
            System.out.println("请输入合法数字");
            return;
        }


        System.out.println("请输入商店货品价格:");
        //对输入的内容进行检测,是否符合规则
        try
        {
            cost = scanner.nextInt();
            if (cost > 100 || cost < 0)
            {
                System.out.println("请输入正确的金额");
                return;
            }
            else if (cost > pay)
            {
                System.out.println("您的消费金额超出支付金额");
                return;
            }
        }catch (Exception e)
        {
            System.out.println("请输入合法数字");
            return;
        }

        change = pay-cost;

        //输出此时的付款金额,商品价格,应找金额
        System.out.println("付款金额" + pay +"   货品价格" + cost + "     应找总金额:" + change);

        //获得结果,进行输出
        String end = giveChange(change);
        System.out.println("此次消费应找金额  " + change + " 元,其中应找  " + end);

    }

    /**
     * 以找钱规则找钱
     * @param change
     * @return String//返回最终的找钱结果
     */
    public static String giveChange(int change)
    {
        String str="";
        int qianshu;//应该找钱的张数
        int leftmoney = change;//还剩下多少钱,初始值为change

        if (leftmoney / 50 != 0)
        {
            qianshu = leftmoney / 50;
            str = str + qianshu + "张50元 ";
            leftmoney = leftmoney - qianshu * 50;
        }
        if (leftmoney / 10 != 0)
        {
            qianshu = leftmoney / 10;
            str = str + qianshu + "张10元 ";
            leftmoney = leftmoney - qianshu * 10;
        }
        if (leftmoney / 5 != 0)
        {
            qianshu = leftmoney / 5;
            str = str + qianshu + "张5元 ";
            leftmoney = leftmoney - qianshu * 5;
        }
        if (leftmoney / 1 != 0)
        {
            qianshu = leftmoney / 1;
            str = str + qianshu + "张1元 ";
            leftmoney = leftmoney - qianshu * 1;
        }

        //检验是否完全找完
        System.out.println("剩余没有找完的钱数为:"+leftmoney);
        return str;
    }
}

 

 

等价类表

输入条件

有效等价类

唯一标识

无效等价类

唯一标识

商品价钱

   0<=R<=100且是整数

1

R>100

3

 

 

 

R<0

4

 

 

 

R不为整数

5

付款

 P>R,P<=100

2

P<R

6

 

 

 

P>100

7

 

测试用例

序号

输入数据

覆盖等价类

输出

1

R=132

3

请输入正确的金额

 

2

R=-5

4

请输入正确的金额

 

3

R=50,P=150

1,7

请输入正确的金额

 

4

R=50,P=20

1,6

请输入正确的金额

 

5

R=50.5

5

请输入合法数字

 

6

R=50,P=100

1,2

1张50

posted @ 2022-03-24 19:09  Ryuuko-  阅读(890)  评论(0编辑  收藏  举报