banner
NEWS LETTER

软工Lab6-黑盒测试

Scroll down

软工Lab6-黑盒测试

题目

现有一个判断判断身份证号是否合法的程序,请利用黑盒测试技术来找出里面若干 bug

中国居民身份证号码编码规则

1. 第一、二位表示省(自治区、直辖市、特别行政区)。

2. 第三、四位表示市(地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码)。

3. 第五、六位表示县(市辖区、县级市、旗)。

4. 第七到十四位表示出生年月日(单数字月日左侧用 0 补齐)。

5. 第十五到十七位表示顺序码。对同地区、同年、月、日出生的人员编定的顺序号。其中第十七位奇数

分给男性,偶数分给女性。

6. 第十八位表示校验码。

校验码计算规则:

1. 根据以下权重计算出 1-17 位的加权和:

2. 将加权和取模 11

3. 按照下表对应:

其中 X 既可以大写,也可以小写。

注意事项:

1. 任务不涉及省、市、县、顺序码,也就是说你不需要考虑到里面可能有 bug

2. 请使用 unittest 单元测试框架,代码结构已在 Testing/main.py 中写好,只需增加用例和运行即可。

3. 如果身份证号码合法, exec 函数会返回 1 ,否则会返回 0

任务目标:

设计等价类,并利用软件测试工具测试身份证号合法性判断程序。

评分标准:

找出 70% 以上的错误满分。

等价类划分

设计等价类划分表如下图所示:

测试用例

有效等价类:

无效等价类:

用例测试

有效等价类测试

结果:

根据此错误继续设计用例测试

结果:

结果:

测试得month ϵ {1,3,5,7,8,10,12}day <= 29的bug.(其实是闰年天数的限制限制在每一个月)

结果:

结果:

根据此错误继续设计用例测试

结果:

测试得month ϵ {4,6,9,11}day <= 29的bug.最终测试得闰年所有月份的日期范围为1 <= day <= 29,非闰年所有月份的日期范围为1 <= day <= 28

结果:

结果:

结果:

结果:

结果:

测试得存在400年的倍数年,系统无法将其判定为闰年的bug。

结果:

测试得18位只能存在大写X,不能存在小写x。

无效等价类测试

测试得month < 1的bug。

测试得month > 12的bug。

这里False说明年份存在下限,是一个bug。

年份超过已有年份,是一个bug。

位数超过18位,是bug。

bug总结

bug编号 bug内容
1 闰年时所有月的day范围为1 <= day <= 29,非闰年时所有月的day范围为1 <= day <= 28.
2 系统无法将400年的倍数年判定为闰年
3 18位只能存在大写X,不能存在小写x
4 month < 1
5 month > 12
6 年份存在下限
7 年份超过已有年份
8 位数超过18位
其他文章
cover
OS-Lab4
  • 23/04/13
  • 19:38
  • 2.1k
  • 8