(1)实验目的
本次作业是,第一次初步白盒测试后的,对自己代码的第一轮修改。
(2)实验内容
1.测试帖链接: http://www.cnblogs.com/wxy-2017/p/6592407.html
2.测试人员提出的问题、发现的缺陷
未通过测试的用例:
缺陷:未对非闰年的二月进行判断,导致二月只有29天确被当成了30天来计算
3.修正后的代码清单
package exam1;
import java.util.Scanner;
public class test02 {
static String NextDate(int year,int month,int day){
if(((year%4==0&&year%100!=0)||year%400==0)&&month==2)
{
if(day==29){day=1;month++;}
else day++;
}
else if(month==12)
{
if(day==31){
day=1;
month=1;
year++;
}
else day++;
}
else if(month==1||month==3||month==5||month==7||month==8||month==10)
{
if(day==31)
{
day=1;
month++;
}
else day++;
}
else if(month==2||month==4||month==6||month==11||month==12&&day==30)
{
if(month==2&&day==28){
day=1;
month++;
}
else if(day==30)
{
day=1;
month++;
}
else day++;
}
else day++;
String date="后一天的日期是:"+year+"年"+month+"月"+day+"日";
return date;
}
public static boolean check(int y,int m,int d){
if(y<1915||y>2050){
System.out.println("年份超出范围");
return false;
}
else if(d<1||d>31||(m==2&&d>29)){
System.out.println("日期超出范围");
return false;
}
else if(m<1||m>12){
System.out.println("月份超出范围");
return false;
}
else {
return true;
}
}
//main方法
public static void main(String[] args) {
while(true){
System.out.println("----请输入日期---");
Scanner scanner=new Scanner(System.in);
System.out.print("请输入年份:");
int year=scanner.nextInt();
System.out.print("请输入月份:");
int month=scanner.nextInt();
System.out.print("请输入日期:");
int day=scanner.nextInt();
if(check(year, month, day)){
System.out.println(NextDate(year, month, day));
}
}
}
}
(4)实验总结
(1)代码变更:代码增加了对非闰年的二月进行判断的条件
(2)缺陷原因:条件覆盖用例没有设计完整导致预期结果出错
(3)学习心得:学习使用白盒测试技术,先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法,下面是一些方法的总结:
语句覆盖:为了暴露程序中的错误,程序中的每条语句至少应该执行一次
判定覆盖:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”(全True或全False)
条件覆盖:使得每一判定语句中每个逻辑条件的可能值至少满足一次。