1. 程式人生 > >軟體測試 實驗(二) 測試用例的設計

軟體測試 實驗(二) 測試用例的設計

一、實驗目的:

通過實驗,理解測試用例設計含義,掌握黑盒測試技術。

二、實驗要求和內容:

年、月、日分別以Y、M和D來儲存相應的值,現在要測試NextData(Y,M,D)函式,用判定表和正交試驗法來設計相應的測試用例。

三、實驗步驟

1、理解實驗內容。
2、採用判定表法設計測試用例,用word文件記錄設計的測試用例。
3、採用正交試驗法設計測試用例,用word文件記錄設計的測試用例。
4、對兩種測試方法進行比較,理解兩種方法的優缺點,並瞭解兩種方法的適用條件。
5、編寫應用程式,實現NextData功能。
6、根據設計的測試用例,建立測試類,進行測試。

四、對實驗進行總結。

測試資料設計分析:

不合法: 年份負數,月份負數,日期負數,月份>12,日期>該月日期,閏年二月大於29天
合法:一般合法,某月最後一天,12月最後一天,閏年二月最後一天

程式碼:

檔案結構:

軟體測試檔案結構

日期類
package day;

public class Day {
    private int Y;
    private int M;
    private int D;
    public int getY() {
        return Y;
    }
    public void setY(int y) {
        Y = y;
    }
    public
int getM() { return M; } public void setM(int m) { M = m; } public int getD() { return D; } public void setD(int d) { D = d; } public Day(int y, int m, int d) { super(); Y = y; M = m; D = d; } public
Day() { super(); } }
被測試類程式碼-計算下一天
package code;

import day.Day;

public class GetNextDay {

    private int month[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

    private boolean is_Leap(int n){
        if(n % 4 == 0 && n % 100 != 0 || n % 400 == 0) return true;
        return false;
    }
    private boolean is_Day(Day a){
        boolean flag = true;
        if(a.getY() <= 0 || a.getM() <= 0 || a.getD() <= 0 || a.getM() > 12){
            return false;
        }

        if(a.getM() == 2){
            if(is_Leap(a.getY()) && a.getD() > month[2]+1){
                flag = false;
            }
            if(!is_Leap(a.getY()) && a.getD() > month[2]){
            flag = false;
            }
        }
        else
        {
            if( a.getD() > month[a.getM()]){
                return false;
            }
        }
        return flag;
    }
    private boolean is_Last_Day(Day d){
        if(d.getM() != 2 && d.getD() == month[d.getM()]){
            return true;
        }
        if(d.getM() == 2){
            if(is_Leap(d.getY()) && d.getD() == month[d.getM()]+1){
                return true;
            }
            if(!is_Leap(d.getY()) && d.getD() == month[d.getM()]){
                return true;
            }
        }
        return false;
    }
    public Day getNextDay(Day d){
        Day nd = new Day(0,0,0);
        if(!is_Day(d)){
            System.out.println("your input is Wrongful!");
            return nd;
        }
        if(is_Last_Day(d)){
            if(d.getM() == 12){
                nd.setY(d.getY()+1);
                nd.setM(1);
                nd.setD(1);
            }else{
                nd.setY(d.getY());
                nd.setM(d.getM()+1);
                nd.setD(1);
            }
        }else{
            nd = d;
            nd.setD(d.getD()+1);
        }
        System.out.println(d.getY()+"年"+d.getM()+"月"+d.getD()+"日   NextDays is "+nd.getY()+"年"+nd.getM()+"月"+nd.getD()+"日");
        return nd;
    }
}
測試類程式碼
package text;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import code.GetNextDay;
import day.Day;

@RunWith(Parameterized.class)
public class GetNextDayTest {
    private GetNextDay gnd = new GetNextDay();
    private Day day;
    private Day exc;
    private int y,m,d,yy,mm,dd;

    public GetNextDayTest(int y, int m, int d, int yy, int mm, int dd) {
        super();
        this.y = y;
        this.m = m;
        this.d = d;
        this.yy = yy;
        this.mm = mm;
        this.dd = dd;
    }

    @Parameters
    public static Collection<Object[]> data(){
        //
        Object[][] data = new Object[][]{
            {-1997,1,1,0,0,0},
            {1997,-1,1,0,0,0},
            {1997,1,-1,0,0,0},
            {1997,13,1,0,0,0},
            {1997,1,32,0,0,0},
            {1997,1,1,1997,1,2},
            {1997,3,31,1997,4,1},
            {1997,12,31,1998,1,1},
            {1997,2,28,1997,3,1},
            {2008,2,29,2008,3,1},
        };
        return Arrays.asList(data);
    }
    @Before
    public void setUp() throws Exception{
        day = new Day(this.y,this.m,this.d);
        exc = new Day(this.yy,this.mm,this.dd);
    }
    @Test
    public void testGetNextDay() {

        Day res = gnd.getNextDay(day);
        //assertEquals(exc, res);
        assertEquals(exc.getD(), res.getD());
        assertEquals(exc.getM(), res.getM());
        assertEquals(exc.getY(), res.getY());

    }
}
測試結果

測試結果