#include <iostream> #include <string> #include <regex> using namespace std; bool check_username(string username) { // 检查用户名是否符合要求 if (username.empty()){ cout << "用户名不能为空" << endl; return false; } if (username.length() < 3 || username.length() > 12) { cout << "用户名长度需在3-12之间" << endl; return false; } regex pattern("^[a-zA-Z0-9]*$"); if (!regex_match(username, pattern)) { cout << "用户名只能由字母和数字组成" << endl; return false; } return true; } bool check_password(string password) { // 检查密码是否符合要求 if (password.empty()) { cout << "密码不能为空" << endl; return false; } if (password.length() < 6 || password.length() > 18) { cout << "密码长度需在6-18之间" << endl; return false; } regex pattern("^[a-zA-Z]+[a-zA-Z0-9]*$"); if (!regex_match(password, pattern)) { cout << "密码需由字母和数字组成,且以字母开头" << endl; return false; } return true; } int main() { string username, password; cout << "请输入用户名:" << endl; cin >> username; cout << "请输入密码:" << endl; cin >> password; if (check_username(username) && check_password(password)) { cout << "登录成功" << endl; return 0; } cout << "登录失败" << endl; return 1; }用等价类和边界值方法编写登录模块的测试 用例
时间: 2024-05-04 19:17:36 浏览: 57
使用include <iostream>时一定要加using namespace std
等价类划分:
1. 用户名为空字符串
2. 用户名长度小于3
3. 用户名长度大于12
4. 用户名由非字母和数字字符组成
5. 用户名符合要求
6. 密码为空字符串
7. 密码长度小于6
8. 密码长度大于18
9. 密码以数字开头
10. 密码由非字母和数字字符组成
11. 密码符合要求
边界值:
12. 用户名长度为3
13. 用户名长度为12
14. 密码长度为6
15. 密码长度为18
测试用例:
等价类测试用例:
1. check_username("") -> false
2. check_username("ab") -> false
3. check_username("abcdefghijklmnopqrstuvwxyz") -> false
4. check_username("test@123") -> false
5. check_username("test123") -> true
6. check_password("") -> false
7. check_password("abc12") -> false
8. check_password("1234567890123456789a") -> false
9. check_password("1abcdef") -> false
10. check_password("test123") -> true
边界值测试用例:
12. check_username("abc") -> true
13. check_username("abcdefghijk") -> true
14. check_password("abcdef") -> true
15. check_password("123456789012345678") -> true
阅读全文