1. 已知公元 1 年 1 月 1 日是星期一。编写一个程序,只要输入年月日,就能回答那天是星期几,并用等价类及边界值法设计测试用例
时间: 2024-10-11 19:08:14 浏览: 152
keil_STM32F1系列芯片支持包.rar
为了编写这样一个程序并应用等价类划分和边界值分析来进行测试用例设计,我们可以使用一些基础的日期计算逻辑和编程语言(比如Python)。首先,我们需要确定一周有7天这个事实,然后通过模运算来获取给定日期对应的星期数。
这里是一个简单的 Python 示例:
```python
import calendar
def day_of_week(year, month, day):
# 确保输入合法
if not (1 <= year <= 9999 and 1 <= month <= 12 and 1 <= day <= 31):
return "无效日期"
# 使用 calendar 模块的 weekday 函数,0 表示 Monday
dow = calendar.weekday(year, month, day)
# 星期转换,如返回 '星期一'、'星期二'等
days = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
return days[dow]
# 等价类划分(边界值分析)
# 类别1:正常年份和月份(1 <= year <= 9999, 1 <= month <= 12)
normal_equivalence_class = [(x, y, z) for x in range(1, 10000) for y in range(1, 13) for z in range(1, 32)]
# 类别2:边缘情况(如0表示闰年,12表示12月有31天,31表示超出范围)
edge_cases = [
(0, 1, 1), # 闰年的1月1日
(9999, 12, 31), # 最后的平年12月31日
(1, 13, 1), # 非存在的月份
(2000, 2, 30), # 超过28天的非闰年2月
(2004, 2, 29), # 超过28天的闰年2月
(9999, 1, -1), # 负数日期
]
# 测试用例
test_cases = normal_equivalence_class + edge_cases
for case in test_cases:
print(f"Year: {case[0]}, Month: {case[1]}, Day: {case[2]} -> Result: {day_of_week(*case)}")
#
阅读全文