1. 程式人生 > 其它 >軟體測試實驗1

軟體測試實驗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