軟體測試 實驗(二) 測試用例的設計
阿新 • • 發佈:2019-01-29
一、實驗目的:
通過實驗,理解測試用例設計含義,掌握黑盒測試技術。
二、實驗要求和內容:
年、月、日分別以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());
}
}