试编写JAVA实现一个登录模块,设计要求:1.用户名:由字母、数字组成,区分大小写,长度限制为3-12,且不能为空;2.密码:由字母和数字组成,不能是单独的字母或数字,要求以字母开头,长度为6-18位,区分大小写;题目:用等价类和边界值方法编写登录模块的测试用例。
时间: 2024-01-04 14:02:26 浏览: 80
好的,下面是一个简单的 Java 登录模块实现:
```java
import java.util.Scanner;
import java.util.regex.Pattern;
public class LoginModule {
public static boolean login() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入用户名(由字母、数字组成,区分大小写,长度限制为3-12,且不能为空):");
String username = scanner.nextLine();
System.out.print("请输入密码(由字母和数字组成,不能是单独的字母或数字,要求以字母开头,长度为6-18位,区分大小写):");
String password = scanner.nextLine();
// 检查用户名是否合法
if (!Pattern.matches("^[a-zA-Z0-9]{3,12}$", username)) {
System.out.println("用户名不合法,请重新输入!");
return false;
}
// 检查密码是否合法
if (!Pattern.matches("^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]{6,18}$", password)) {
System.out.println("密码不合法,请重新输入!");
return false;
}
// 用户名和密码均合法,登录成功
System.out.println("登录成功!");
return true;
}
}
```
下面是登录模块的测试用例,使用等价类和边界值方法进行设计:
```java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class LoginModuleTest {
@Test
public void testLogin() {
// 等价类测试
// 有效的用户名和密码
assertEquals(true, LoginModule.login());
// 无效的用户名
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
// 无效的密码
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
// 边界值测试
// 有效的用户名和密码
assertEquals(true, LoginModule.login());
// 无效的用户名
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
// 无效的密码
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
// 非法的用户名和密码
assertEquals(false, LoginModule.login());
assertEquals(false, LoginModule.login());
}
}
```
其中,等价类测试分为三组:有效的用户名和密码、无效的用户名、无效的密码;边界值测试分为四组:有效的用户名和密码、无效的用户名、无效的密码、非法的用户名和密码。
阅读全文