试编写代码实现一个登录模块,设计要求: 1.用户名:由字母、数字组成,区分大 小写,长度限制为3-12,且不能为空; 2.密码:由字母和数字组成,不能是单 独的字母或数字,要求以字母开头,长度为6-18 位,区分大小写; 题目:用等价类和边界值方法编写登录模块的测试 用例。
时间: 2023-12-10 16:04:31 浏览: 32
等价类和边界值测试是一种黑盒测试方法,它将输入数据划分为等价类和边界值,以此来设计测试用例。
对于用户名和密码的格式验证,我们可以将输入数据划分为以下等价类:
- 用户名:
- 合法的用户名:由字母和数字组成,区分大小写,长度在3-12之间,不为空。
- 非法的用户名:不符合合法的用户名规则,包括:长度小于3或大于12,包含非字母或数字的字符,为空。
- 密码:
- 合法的密码:由字母和数字组成,不能是单独的字母或数字,要求以字母开头,长度为6-18位,区分大小写。
- 非法的密码:不符合合法的密码规则,包括:长度小于6或大于18,不以字母开头,只包含字母或数字,为空。
根据上述等价类,我们可以设计以下测试用例:
```python
import unittest
from login import login
class TestLogin(unittest.TestCase):
def test_valid_username_password(self):
# 合法的用户名和密码
self.assertEqual(login("abc123", "Abc123"), "登录成功!")
def test_invalid_username(self):
# 非法的用户名
self.assertEqual(login("", "Abc123"), "用户名不能为空!")
self.assertEqual(login("abc", "Abc123"), "用户名长度不足!")
self.assertEqual(login("abcdefghijklmnopqrstuvwxyz", "Abc123"), "用户名长度超限!")
self.assertEqual(login("abc!@#", "Abc123"), "用户名包含非法字符!")
def test_invalid_password(self):
# 非法的密码
self.assertEqual(login("abc123", ""), "密码不能为空!")
self.assertEqual(login("abc123", "a1"), "密码长度不足!")
self.assertEqual(login("abc123", "abcdefghijklmnopqrstuvwxyz"), "密码长度超限!")
self.assertEqual(login("abc123", "123456"), "密码不以字母开头!")
self.assertEqual(login("abc123", "abcdef"), "密码只包含字母!")
self.assertEqual(login("abc123", "1234567"), "密码只包含数字!")
if __name__ == '__main__':
unittest.main()
```
在这个测试用例中,我们分别测试了合法的用户名和密码、非法的用户名、非法的密码。每个测试用例都包含了等价类中的一个情况,以及边界值的一些情况。如果测试用例执行通过,则说明登录模块的代码实现是正确的。