这是一个城市电话号码,由三部分组成。它们的名称和内容分别是: 地区码:空白或三位数字; 前缀:非'0'或'1'的三位数字; 后缀:4位数字。 假定被测试程序能接受任何符合条件的电话号码,拒绝所有不符合规定的电话号码,根据改程序的规格说明作等价类的划分,并设计测试方案和程序测试结果
时间: 2024-02-16 18:04:10 浏览: 501
根据该程序的规格说明,可以将电话号码的等价类划分如下:
1. 符合规定的电话号码,即地区码为三位数字、前缀为非'0'或'1'的三位数字、后缀为四位数字。
2. 地区码为空白。
3. 地区码不是三位数字。
4. 前缀不是非'0'或'1'的三位数字。
5. 后缀不是四位数字。
设计测试方案:
对于等价类1,可以设计以下测试用例:
- 010-1234
- 021-5678
- 031-2345
对于等价类2,可以设计以下测试用例:
- -1234
- -5678
- -2345
对于等价类3,可以设计以下测试用例:
- 1-2345
- 123456789
- 0123-5678
对于等价类4,可以设计以下测试用例:
- 021-0123
- 031-1567
- 041-2345
对于等价类5,可以设计以下测试用例:
- 021-123
- 031-12345
- 041-23456
程序测试结果:
```python
def test_phone_number(phone_number):
"""
测试城市电话号码是否符合规定
:param phone_number: 字符串类型的电话号码
:return: 如果电话号码符合规定,返回 True;否则返回 False
"""
# 电话号码由三部分组成:地区码、前缀和后缀
parts = phone_number.split('-')
if len(parts) != 3:
return False
# 地区码可以为空白或三位数字
area_code = parts[0]
if area_code != '' and (not area_code.isdigit() or len(area_code) != 3):
return False
# 前缀必须是非'0'或'1'的三位数字
prefix = parts[1]
if not prefix.isdigit() or len(prefix) != 3 or prefix.startswith('0') or prefix.startswith('1'):
return False
# 后缀必须是四位数字
suffix = parts[2]
if not suffix.isdigit() or len(suffix) != 4:
return False
# 如果所有条件都符合,返回 True
return True
# 等价类1测试用例
print(test_phone_number('021-1234')) # True
print(test_phone_number('010-5678')) # True
print(test_phone_number('031-2345')) # True
# 等价类2测试用例
print(test_phone_number('-1234')) # True
print(test_phone_number('-5678')) # True
print(test_phone_number('-2345')) # True
# 等价类3测试用例
print(test_phone_number('1-2345')) # False
print(test_phone_number('123456789')) # False
print(test_phone_number('0123-5678')) # False
# 等价类4测试用例
print(test_phone_number('021-0123')) # False
print(test_phone_number('031-1567')) # False
print(test_phone_number('041-2345')) # True
# 等价类5测试用例
print(test_phone_number('021-123')) # False
print(test_phone_number('031-12345')) # False
print(test_phone_number('041-23456')) # False
```
阅读全文