一、实验目的:
通过实验,理解测试用例设计含义,掌握黑盒测试技术。
二、实验要求和内容:
年、月、日分别以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());
}
}