软件测试——白盒测试实验报告,输入年月日算星期几

实验

1实验目的

练习 基于程序结构的测试用例设计、白盒测试技术

2 实验内容(选作或题目二)

题目:

已知公元1年1月1日是星期一。编写一个程序,只要输入年月日,就能回答那天是星期几。不能采用现有公式计算。

(1)画出你所编写程序的控制流图,并计算程序的圈复杂度。

(2)综合运用白盒测试方法为设计测试用例,预期输出可参考windows自带的日历程序。

(3)在测试过程中是否发现你所编写程序的缺陷?这些缺陷是由哪些测试用例发现的?

4 实验报告要求

  1. 实验代码:
# 公元1年1月1日为星期一
# 判断是否为闰年
def leap_year(year):
    leap = False
    if year % 4 == 0:
        if year % 100 != 0:
            leap = True
        else:
            if year % 400 == 0:
                leap = True
    return leap

def dayOfTheWeek(year, month, day):
    num = 0
    if leap_year(year):
        list_month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    else:
        list_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

    for i in range(1, year):
        if leap_year(i):
            num = num + 366
        else:
            num = num + 365

    for i in range(1, month):
        num = num + list_month[i - 1]

    num = num + day - 1
    return num


if __name__ == '__main__':
    # 输入日期
    # 默认输入的日期为合法日期
    year = int(input("请输入年份:"))
    month = int(input("请输入月份:"))
    day = int(input("请输入日份:"))

    # 公元1年1月1日为星期一
    list_day = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
    # 获取该日期与公元1年1月1日相差的天数
    num = dayOfTheWeek(year, month, day)
    num = num % 7
    data = list_day[num]

    print(year, "年", month, "月", day, "日", data)

2.根据题目要求编写程序并画出控制流图、给出圈复杂度。

控制流图:

圈复杂度:5

3. 设计测试用例,并指明采用了哪些白盒测试方法;

表1 测试用例

测试用例ID

采用测试方法

输入

预期输出

运行结果

与预期是否一致

1

基本路径覆盖

1 1 1

星期一

星期一

2

基本路径覆盖

2022 12 6

星期二

星期二

3

基本路径覆盖

2000 5 2

星期二

星期二

4

基本路径覆盖

2016 10 10

星期一

星期一

5

基本路径覆盖

-1 0 0

错误提醒

星期天

6

主路径覆盖

0 15 40

错误提示

报错

7

主路径覆盖

1 1 1

星期一

星期一

8

主路径覆盖

1996 2 16

星期五

星期五

9

主路径覆盖

2000 11 8

星期三

星期三

10

主路径覆盖

100 8 7

星期六

星期六

11

循环测试

2022 12 6

星期二

星期二

12

循环测试

2021 12 12

星期天

星期天

13

循环测试

1 1 1

星期一

星期一

14

循环测试

1 12 1

星期六

星期六

15

循环测试

0 0 0

错误提示

星期天

4. 记录测试结果(参照表1后两列),总结测试过程中发现的程序缺陷(参照表2格式);

表2 测试结果

缺陷ID

缺陷描述

发现该缺陷的用例

1

对于输入的错误负数年份,没有错误提示信息。

测试用例5

2

对于输入错误的月份,没有错误提示信息,程序直接报错。

测试用例6

3

对于输入的均为0的错误年月日,没有错误提示信息

测试用例15

5. 程序的不足

1、程序对于可能出现的错误输入没有任何处理,可能给出错误结果,也可能直接报错。

2、程序只能执行一次查询星期的工作,下一次查询需要重新启动程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值