1、某公司网站的后台管理有一个用户注册的功能需要测试,该测试为黑盒测试,请用表格的方式给出该功能的测试用例(参考课本P107页)。用户注册功能描述如下:
(1) 管理员必须先登录,方可进入网站后台管理,进入后台管理界面后可以进行用户注册(假设用户注册的URL地址为http://www.fengt.com/Admin/UserRegister.jsp)
(2) 用户注册要求输入用户名、密码、密码确认、邮箱,这4项内容均不能为空
(3) 用户名要求6-10个字符,由字母和数字构成,且只能以字母开头。用户名是唯一的。
(4) 密码至少6位,包含字母、数字和特殊符号(如: ! + ~ 等)
(5) 邮箱必须符合邮箱规则
(6) 违法以上任何一个要求都应该有相应的提示
注册成功需提示“注册成功,请您记住密码”,并跳转到用户登录页面进行登录(假设用户登录页面为http://www.fengt.com/Admin/Login.jsp)
用例ID |
| 用例名称 | 用户注册 | |||
用例描述 | 管理员必须先登录,方可进入网站后台管理,进入后台管理界面后可以进行用户注册;用户名、密码、密码确认、邮箱均不能为空;用户名要求6-10个字符,由字母和数字构成,且只能以字母开头,用户名是唯一的;密码至少6位,包含字母、数字和特殊符号(如: ! + ~ 等);邮箱必须符合邮箱规则;注册成功需提示“注册成功,请您记住密码”,并跳转到用户登录页面进行登录。 | |||||
用例入口 | 打开IE,登录进入网站后台管理总页面,点击“注册用户”进入注册页 | |||||
用例ID | 场景 | 测试步骤 | 预期结果 | 备注 | ||
TC1 | 未登录不可进入系统 | 未登录就访问UserRegister.jsp页 | 提示用户登录,并跳转到Login.jsp页 |
| ||
TC2 | 注册页面显示 | 输入正确的用户名和密码,进入后台管理总页面,点击“注册用户”进入注册页 | 正常链接到注册页,注册页显示正常,与设计一致 |
| ||
TC3 | 用户名验证——唯一性 | 录入已有用户名后 | 提示该用户已存在 |
| ||
TC4~TC7 | 用户名验证——不合法 | 不足6个字符; 超出10个字符; 非字母开头; 除了字母和数字有其他字符; | 提示用户名输入不合法 |
| ||
TC8 | 用户名验证——非空 | 未输入用户名,就提交 | 提示用户名不能为空 |
| ||
TC9 | 用户名验证——合法 | 输入符合要求的用户名 | 输入成功,不提示 |
| ||
TC10~T13 | 密码验证——不合法 | 输入少于6位; 密码中不包含字母; 密码中不包含数字; 密码中不包含特殊符号; | 提示密码输入不合法 |
| ||
TC14 | 密码验证——为空 | 不输入密码 | 提示密码不能为空 |
| ||
TC15 | 密码验证——合法 | 输入符合要求的密码 | 输入成功,不提示 |
| ||
TC16 | 密码确认——不同 | 两次密码不一样 | 提示两次密码输入不一致 |
| ||
TC17 | 密码确认——相同 | 两次密码一样 | 输入成功,不提示 |
| ||
TC18 | 邮箱验证——为空 | 不输入邮箱 | 提示邮箱不可为空 |
| ||
TC19 | 邮箱验证——不合法 | 输入不符合邮箱规则的Email | 提示邮箱格式不正确 |
| ||
TC20 | 邮箱验证——合法 | 输入符合规则的Email | 输入成功,不提示 |
| ||
TC21 | 注册成功 | 输入所有符合要求的信息 | 提示“注册成功,请您记住密码”; 成功跳转到Login.jsp页 |
|
2、利用Selenium2为Lab05项目中的登录功能实现功能自动化测试。
注意:
l 设计测试用例时需考虑登录成功和不成功两种情况;
Lab05项目为实验5用到的项目,在大家的班级QQ群中,数据库采用MySQL,数据库文件在项目根目录下CreateDataBase.txt
package com.chen.homework.jdbc; import java.sql.*; /** * 数据库连接类
package com.chen.homework.test; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.WebDriverWait; /** * 用于用户登录自动化测试的类 */ public class TestLogin { private WebDriver driver; private WebElement txtUserName; private WebElement txtPassword; private WebElement btnLogin; @Before public void setUp() throws Exception { //如果浏览器没有默认安装在C盘,需要指定其路径 System.setProperty("webdriver.ie.driver", "C:\\Program Files\\Internet Explorer\\iexplore.exe"); //打开IE浏览器 WebDriver driver = new InternetExplorerDriver(); //打开要测试的页面 driver.get("http://localhost:8080/jsp_jdbc/login.jsp"); //设置等待超出的时间(100秒) WebDriverWait wait = new WebDriverWait(driver, 100); //找到页面元素 txtUserName = driver.findElement(By.name("username")); txtPassword = driver.findElement(By.name("password")); btnLogin = driver.findElement(By.cssSelector("input[type=\"submit\"]")); } @Test public void testHello() throws Exception { txtUserName.sendKeys("cs"); txtPassword.sendKeys("cs"); btnLogin.click(); } }
*/ public class MySQLConnBean { private Statement stmt=null; private Connection conn=null; private ResultSet rs=null; /** * 打开数据库连接 * @throws Exception */ public boolean openConn() throws Exception { try{ Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/test"; String user="root"; String password="root"; conn=DriverManager.getConnection(url, user, password); return true; }catch(SQLException e){ System.err.println("连接数据库出错:"+e.getMessage()); return false; } } /** * 执行SQL语句并返回结果集 * @param sql SQL语句 * @return 返回ResultSet结果集 */ public ResultSet execQuery(String sql){ rs=null; try{ //createStatement对象封装SQL语句,并发给数据库执行 //第一个参数:返回的结果集类型,TYPE_SCROLL_SENSITIVE表示可滚动结果集,当数据库发生变化,当前结果集同步改变 //第二个参数:并发类型,CONCUR_READ_ONLY表示不可以用结果集更新数据库中的表 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs=stmt.executeQuery(sql); }catch (SQLException e) { System.err.println("Data.executeQuery:"+e.getMessage()); } return rs; } /** * 关闭createStatement对象 */ public void closeStmt(){ try{ stmt.close(); }catch(SQLException e){ System.err.println("Data.executeQuery:"+e.getMessage()); } } /** * 关闭连接 */ public void closeConn(){ try{ conn.close(); }catch(SQLException e){ System.err.println("Data.executeQuery:"+e.getMessage()); } } }