软件测试单元测试例题
时间: 2024-10-15 11:03:25 浏览: 7
软件测试中的单元测试是指针对程序的最小可测试单元——通常是函数或方法,设计并执行测试案例的过程。它的目的是验证单个模块的功能是否按照预期工作,独立于其他部分。下面是一个简单的单元测试实例:
假设我们有一个名为`calculateTotal`的函数,用于计算购物车中商品的总价。单元测试示例如下:
```python
def test_calculate_total():
# 正确的输入
total = calculateTotal([{"name": "苹果", "price": 5, "quantity": 2},
{"name": "香蕉", "price": 3, "quantity": 3}])
assert total == 19
# 错误的输入检查边界条件
with pytest.raises(ValueError):
calculateTotal([])
# 验证异常处理
try:
calculateTotal({"name": "草莓", "price": None})
except TypeError as e:
assert str(e) == "价格不能为空"
相关问题
软件工程白盒测试例题
当谈到软件工程中的白盒测试时,我们通常指的是对软件内部结构和代码的测试。下面是一个白盒测试的例题:
假设有一个函数 `calculateSum`,用于计算两个整数的和。以下是函数的代码:
```python
def calculateSum(a, b):
if a > 0 and b > 0:
return a + b
elif a < 0 and b < 0:
return a - b
else:
return 0
```
现在我们需要设计一组测试用例来验证这个函数的正确性。请问,你有什么问题或者需要我解释哪些方面的内容呢?
软件测试sql注入例题
假设有一个用户登录的功能,用户需要输入用户名和密码,然后系统会查询数据库验证用户是否存在。以下是一个可能存在 SQL 注入漏洞的示例:
```sql
SELECT * FROM users WHERE username = '$username' AND password = '$password'
```
攻击者可以通过在用户名或密码字段中插入恶意代码来绕过身份验证,例如:
```sql
$username = "' or 1=1 -- "
$password = "anything"
```
在这种情况下,SQL 查询将变成:
```sql
SELECT * FROM users WHERE username = '' or 1=1 -- ' AND password = 'anything'
```
其中 `--` 表示注释,所以查询会忽略后面的所有内容,直接返回所有用户的信息。因此,攻击者可以轻松地绕过身份验证,并访问系统中所有用户的信息。
为了防止 SQL 注入攻击,可以使用参数化查询,例如:
```sql
SELECT * FROM users WHERE username = ? AND password = ?
```
然后将用户名和密码作为参数传递给查询,而不是将它们拼接到查询字符串中。这样可以防止恶意代码被插入查询中。
阅读全文