有函数f(x,y,z)=x+y2-z,其中x∈[2000,3000],y∈[1,9],z∈[10,30]的。请写出该函数采用边界值分析法、健壮性分析法、最坏情况测试分析法设计的测试用例。并编写程序
时间: 2024-02-09 07:08:14 浏览: 153
边界值分析法:
1. 最小值测试用例:(2000, 1, 10),期望结果:1991
2. 最大值测试用例:(3000, 9, 30),期望结果:8191
3. 边界值测试用例:
a. x最小值测试用例:(2000, 5, 20),期望结果:4005
b. x最大值测试用例:(3000, 5, 20),期望结果:9005
c. y最小值测试用例:(2500, 1, 20),期望结果:2501
d. y最大值测试用例:(2500, 9, 20),期望结果:7201
e. z最小值测试用例:(2500, 5, 10),期望结果:625
f. z最大值测试用例:(2500, 5, 30),期望结果:7425
健壮性分析法:
1. 零值测试用例:(2500, 0, 20),期望结果:-20
2. 负数测试用例:(2500, 5, -20),期望结果:-3995
3. 非整数测试用例:(2750, 5.5, 20.5),期望结果:3095.25
最坏情况测试分析法:
1. x为非法值,期望结果:抛出异常
2. y为非法值,期望结果:抛出异常
3. z为非法值,期望结果:抛出异常
编写的Python程序如下:
```python
def f(x, y, z):
if not (2000 <= x <= 3000):
raise ValueError("x must be within the range of [2000, 3000]")
if not (1 <= y <= 9):
raise ValueError("y must be within the range of [1, 9]")
if not (10 <= z <= 30):
raise ValueError("z must be within the range of [10, 30]")
return x + y ** 2 - z
# 最小值测试用例
assert f(2000, 1, 10) == 1991
# 最大值测试用例
assert f(3000, 9, 30) == 8191
# 边界值测试用例
assert f(2000, 5, 20) == 4005
assert f(3000, 5, 20) == 9005
assert f(2500, 1, 20) == 2501
assert f(2500, 9, 20) == 7201
assert f(2500, 5, 10) == 625
assert f(2500, 5, 30) == 7425
# 健壮性分析法测试用例
assert f(2500, 0, 20) == -20
assert f(2500, 5, -20) == -3995
assert f(2750, 5.5, 20.5) == 3095.25
# 最坏情况测试分析法测试用例
try:
f(5000, 5, 20)
except ValueError as e:
assert str(e) == "x must be within the range of [2000, 3000]"
try:
f(2500, 10, 20)
except ValueError as e:
assert str(e) == "y must be within the range of [1, 9]"
try:
f(2500, 5, 5)
except ValueError as e:
assert str(e) == "z must be within the range of [10, 30]"
```
需要注意的是,当输入不符合要求时,我们会抛出`ValueError`异常。
阅读全文