一、实验目的与要求
1.1实验目的
通过编写Java程序,了解和掌握软件测试的基本概念和方法,加深对软件质量的理解,提高对软件测试的实际操作能力,增强软件开发质量意识。
1.2实验要求
- 1).采用适当的开发方法和测试技术,设计和实现一个能够计算输入日期的下一天日期的Java程序。
- 2).通过测试,验证程序的正确性、健壮性、可靠性和可维护性等质量特性,并且尽可能地发现和修复程序中的缺陷。
- 3).使用合适的测试工具和技术,编写测试用例,对程序进行黑盒测试和白盒测试。
- 4).评估测试结果,收集测试数据,分析和总结测试结果,提出改进措施。
- 5).撰写实验报告,包括实验目的、要求、过程和结果等,详细描述测试方法、测试用例设计、测试过程和测试结果,并且对测试结果进行分析和总结,提出改进意见和建议。
-
二、实验环境
- WINDOWS10 ;
- Pycharm;
- VSCODE
-
三、实验内容
3.1次日问题描述
3.2次日问题分析与设计(画流程图)
3.3次日问题实现
-
四、测试用例描述及实验步骤
-
4.1次日问题描述
次日问题指给定一个日期,计算该日期的下一天日期。假设日期由年、月、日三个整数表示,对于输入日期的月份、日、年份,程序需要输出该输入日期在日历上隔一天的日期。
例如,输入为2020年11月30日,则该程序的输出为2020年12月1日。需要考虑闰年的情况,如1900年、2100年等不是闰年。在这种情况下,2月份的天数应该为28天。
4.2 次日问题分析与设计(画流程图)
4.3次日问题实现
def is_leap_year(year):
# 判断是否为闰年
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
return True
return False
def get_next_day(year, month, day):
# 每个月的天数
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 处理闰年的2月份天数
if is_leap_year(year):
days_in_month[1] = 29
# 判断日期是否合法
if year < 1900 or year > 2050:
print("Invalid year")
return
if month < 1 or month > 12:
print("Invalid month")
return
if day < 1 or day > days_in_month[month - 1]:
print("Invalid day")
return
# 计算下一天日期
next_year = year
next_month = month
next_day = day + 1
if next_day > days_in_month[month - 1]:
next_day = 1
next_month += 1
if next_month > 12:
next_month = 1
next_year += 1
return next_year, next_month, next_day
# 测试示例日期
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
if month < 1 or month > 12:
print("月的值不在指定范围内")
elif day < 1 or day > 31:
print("日的值不在指定范围内")
else:
next_year, next_month, next_day = get_next_day(year, month, day)
print("下一天日期:{}年{}月{}日".format(next_year, next_month, next_day))
五、调试过程及实验结果
测试用例
序号 | 年 | 月 | 日 | 期望输出 |
1 | 1800 | 9 | 10 | 年的值不在指定范围内 |
2 | 1900 | 6 | 23 | 19000610 |
3 | 1909 | 6 | 23 | 19090623 |
4 | 2049 | 6 | 23 | 20490623 |
5 | 2050 | 6 | 23 | 20500623 |
6 | 2051 | 6 | 13 | 年的值不在指定范围内 |
7 | 2045 | 25 | 14 | 月的值不在指定范围内 |
8 | 2014 | 01 | 11 | 20140111 |
9 | 2020 | 11 | 10 | 20201110 |
10 | 2025 | 5 | 10 | 20250510 |
11 | 2012 | 11 | 50 | 日的值不在指定范围内 |
六、总结
在进行该实验的过程中,我遇到了一些问题,但也通过解决这些问题学到了很多。首先,我在编写程序的过程中遇到了一些语法错误和逻辑错误,但是通过对代码进行逐行调试和代码审查,我成功地解决了这些问题。
另外,我在测试程序的时候发现了一些边界情况,例如输入日期为2月29日(闰年的情况),程序没有正确处理。通过分析代码并进行修改,我成功地解决了这个问题,并增强了程序的健壮性。
在进行该实验的过程中,我也学到了一些关于软件测试的基本知识。例如,我了解了如何进行黑盒测试和白盒测试,以及如何编写测试用例和测试计划。这些知识将对我的未来工作和学习都有很大的帮助。
总的来说,通过进行该实验,我掌握了基本的软件测试技能,并对编写高质量的程序有了更深入的理解。我也意识到软件测试在软件开发过程中的重要性,并将在未来的工作和学习中继续深入学习和应用这些知识。