操作系统:Windows 10家庭版
项目运行:IDEA2022.2.3、maven、JDK1.8
浏览器:Chorme、Edge、FireFox
自动化脚本环境:IDEA2022.2.3
网络:127.0.0.1:8080
测试技术: 主要采用自动化测试以及手工测试
测试人员: 我
场景1:输入账号和密码可以正常登录,进行页面的跳转
预期结果:页面实现正常跳转
实际结果:页面正常跳转,与预期结果相符
@Order(1)
@ParameterizedTest
@CsvSource(value = "admin, 123456")
void Login(String username, String password) {
// 打开登录页面
webDriver.get("http://47.115.221.152:8080/Management_System-1.0-SNAPSHOT/login.html");
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// 输入用户名
webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// 输入密码
webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("body > div.login-container > div > div:nth-child(4) > input[type=radio]:nth-child(2)")).click();
// 点击提交
webDriver.findElement(By.cssSelector("#submit")).click();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// 校验当前登录的用户是不是admin,如果是admin测试通过,否则测试不通过
String user_name = webDriver.findElement(By.cssSelector("body > div.content > div.content-right > div.new > div.one > table > tr:nth-child(2) > td:nth-child(2)")).getText();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
System.out.println(user_name);
Assertions.assertEquals(username, user_name);
}
场景2:输入错误的账号和密码,登录失败,提示请先输入正确的账号密码
预期结果:页面跳转,但不显示任何信息
实际结果:浏览器提示请先输入正确的账号密码,与预期结果相同
本场景与上面代码相似,不做展示
// 公司员工
@Order(2)
@Test
void ComEmp() throws InterruptedException {
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("body > div.content > div.content-left > div.nav > div > div:nth-child(2) > a")).click();
// 校验当前页面是否跳转到在职员工页面
String cur_url = webDriver.getCurrentUrl();
Assertions.assertEquals("http://47.115.221.152:8080/Management_System-1.0-SNAPSHOT/comEmpInfo.html", cur_url);
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
//查询
webDriver.findElement(By.cssSelector("body > div.content > div.content-right > div > div > input.serch")).sendKeys("龙云飞");
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#button")).click();
webDriver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div/input[2]")).click();
sleep(3000);
String name = webDriver.findElement(By.cssSelector("body > div.content > div.content-right > div > table > tbody > tr:nth-child(2) > td:nth-child(2)")).getText();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
Assertions.assertEquals("龙云飞",name);
//全部信息
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#allEmpInfo > a")).click();
// 添加
sleep(3000);
webDriver.findElement(By.cssSelector("#publish")).click();
webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#usrename")).sendKeys("张振中");
webDriver.findElement(By.cssSelector("#sex")).sendKeys("男");
webDriver.findElement(By.cssSelector("#age")).sendKeys("23");
webDriver.findElement(By.cssSelector("#position")).sendKeys("部门主管");
webDriver.findElement(By.cssSelector("#phone")).sendKeys("16545252652");
webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("body > div.modal > table > tbody > tr:nth-child(7) > td:nth-child(1) > input[type=button]")).click();
//删除
sleep(3000);
webDriver.findElement(By.cssSelector("body > div.content > div.content-right > div > table > tbody > tr:nth-child(6) > td:nth-child(8) > input")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.switchTo().alert().accept();
}
// 发布招聘
@Order(3)
@Test
void comPublish() throws InterruptedException {
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("body > div.content > div.content-left > div.nav > div > div:nth-child(4) > a")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
//查询
// bug
// webDriver.findElement(By.cssSelector("#institutionId")).sendKeys("前端开发工程师");
// webDriver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div/input[1]")).sendKeys("前端开发工程师");
// webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
// webDriver.findElement(By.cssSelector("#button")).click();
// webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
// String position = webDriver.findElement(By.cssSelector("body > div.content > div.content-right > div > table > tr:nth-child(2) > td:nth-child(3)")).getText();
// webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
// Assertions.assertEquals("前端开发工程师",position);
//全部信息
sleep(3000);
// webDriver.switchTo().alert().accept();
// webDriver.findElement(By.cssSelector("#allPulish > a")).click();
webDriver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div/button/a")).click();
sleep(3000);
//添加
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
// webDriver.findElement(By.cssSelector("#publish")).click();
webDriver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div/input[3]")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#position")).sendKeys("全栈开发");
webDriver.findElement(By.xpath("/html/body/div[2]/table/tbody/tr[2]/td[2]/input")).sendKeys("西安");
webDriver.findElement(By.xpath("/html/body/div[2]/table/tbody/tr[3]/td[2]/input")).sendKeys("本科");
webDriver.findElement(By.xpath("/html/body/div[2]/table/tbody/tr[4]/td[2]/input")).sendKeys("无");
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
// webDriver.findElement(By.cssSelector("body > div.modal > table > tbody > tr:nth-child(5) > td:nth-child(1) > input[type=submit]")).click();
webDriver.findElement(By.xpath("/html/body/div[2]/table/tbody/tr[5]/td[1]/input")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.switchTo().alert().accept();
//删除
sleep(3000);
webDriver.findElement(By.cssSelector("body > div.content > div.content-right > div > table > tbody > tr:nth-child(5) > td:nth-child(7) > input")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
// webDriver.switchTo().alert().accept();
}
// 发现人才
@Order(4)
@Test
void comFind() throws InterruptedException {
//查询
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("body > div.content > div.content-left > div.nav > div > div:nth-child(5) > a")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#institutionId")).sendKeys("后端开发工程师");
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#submit")).click();
//查看全部
sleep(3000);
webDriver.findElement(By.cssSelector("#allFind > a")).click();
//查看档案
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("body > div > div.content-right > div > table > tbody:nth-child(2) > tr > td:nth-child(8) > button > a")).click();
sleep(3000);
webDriver.findElement(By.cssSelector("#ret > a")).click();
//审核通过
webDriver.findElement(By.cssSelector("body > div > div.content-right > div > table > tbody:nth-child(2) > tr > td:nth-child(10) > input[type=radio]:nth-child(2)")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("body > div > div.content-right > div > table > tbody:nth-child(2) > tr > td:nth-child(10) > button")).click();
sleep(1000);
webDriver.switchTo().alert().accept();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
String flag = webDriver.findElement(By.cssSelector("body > div > div.content-right > div > table > tbody:nth-child(2) > tr > td:nth-child(9)")).getText();
Assertions.assertEquals("审核通过",flag);
}
//评价记录
@Order(5)
@Test
void comEva() throws InterruptedException {
//查询
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("body > div > div.content-left > div.nav > div > div:nth-child(3) > a")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#institutionId")).sendKeys("龙云飞");
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#button")).click();
sleep(3000);
//全部信息
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#all")).click();
//添加
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#publish")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#userName")).sendKeys("王武");
// webDriver.findElement(By.xpath("/html/body/div[2]/div/table/tbody/tr[1]/td[2]/input")).sendKeys("王武");
webDriver.findElement(By.cssSelector("#section")).sendKeys("普通员工");
webDriver.findElement(By.cssSelector("#attitude")).sendKeys("良好");
webDriver.findElement(By.cssSelector("#ability")).sendKeys("能力强");
webDriver.findElement(By.cssSelector("#work_result")).sendKeys("成果突出");
webDriver.findElement(By.cssSelector("#evaluate")).sendKeys("态度认真");
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("body > div.modal > div > table > tbody > tr:nth-child(8) > td:nth-child(1) > input[type=button]")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
//删除
sleep(3000);
webDriver.findElement(By.cssSelector("body > div.content > div.content-right > div > table > tbody > tr:nth-child(3) > td:nth-child(8) > input")).click();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
webDriver.switchTo().alert().accept();
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
}
管理员端(未测试)
只实现了查询功能
个人端
查看档案功能未实现
发布求职:查询城市时,查询到不属于自己发布的求职信息
新注册员工无法使用(员工信息,员工信息修改,新增求职信息)
企业端
发布招聘查询只能查询到测试工程师的招聘信息
查看人才搜索意向岗位只能搜索出一条求职信息
每个模块集中到一起之后,部分功能无法实现,比如企业端添加一个新员工时,点击确定按钮无法提交数据。
原因:使用了form表单,可能是电脑性能好的后端能收到数据,我的电脑测试时就没能添加成功;
正确:使用div
企业端删除一条员工评价时,会删除当天所有关于这个员工的评价,
原因:前端定位使用了name和date去定位,导致所有同一个员工的同一天的评价记录都会被删除
正确:使用id去定位具体的一条信息
当企业端添加一名员工时,个人端仍能正常发布求职
原因:没有修改个人状态信息,只是简单的在表里添加了一条记录
正确:不仅要在员工表添加员工,同时也要将这个员工标记为在职员工。
最后做测试时,添加一条员工记录,无法提交成功,控制台报500错误,后端number为空的错误
原因:开发人员最后发过来的sql文件中的id没有设置为自增,写JDBC编程时又没有将id写上,因此添加一条记录没有成功。
正确:将数据库中的id设置为自增。
(1)计划经验不足,无类似的项目参考
(2)前期开发进度延迟,导致测试时间被压缩
(3)测试前期投入不够积极,BUG在后期呈现更多,导致测试后期测试任务堆积
(4)开发质量不理想,导致后期修复过程中不断引入新的问题,甚至更严重的问题
(5)测试计划做的不够充分合理,导致预估的测试时间不够充足
(6)开发新的模块(开发觉得简单,但是做的过程越做越复杂且涉及到多个表之间集合,交互给测试时间又很延时),导致测试过程很仓促
具体:
驱动器与浏览器版本不对应
解决:重新安装对应版本的驱动或者浏览器(我的选择)
使用css选择器无法定位到某些具体元素。
解决:使用xpath。
响应时间过长,导致页面还没渲染出来就往下执行了
解决:
sleep(3000);
webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
confirm窗口无法点击确认
网上说使用webDriver.switchTo().alert().accept();
但是我的测试中使用没用。
功能测试代码:
https://gitee.com/dragon-yushuang/Management_System_Test.git
每个模块集中到一起之后,部分功能无法实现,比如企业端添加一个新员工时,点击确定按钮无法提交数据。
原因:使用了form表单,可能是电脑性能好的后端能收到数据,我的电脑测试时就没能添加成功;
正确:使用div
企业端删除一条员工评价时,会删除当天所有关于这个员工的评价,
原因:前端定位使用了name和date去定位,导致所有同一个员工的同一天的评价记录都会被删除
正确:使用id去定位具体的一条信息
当企业端添加一名员工时,个人端仍能正常发布求职
原因:没有修改个人状态信息,只是简单的在表里添加了一条记录
正确:不仅要在员工表添加员工,同时也要将这个员工标记为在职员工。
最后做测试时,添加一条员工记录,无法提交成功,控制台报500错误,后端number为空的错误
原因:开发人员最后发过来的sql文件中的id没有设置为自增,写JDBC编程时又没有将id写上,因此添加一条记录没有成功。
正确:将数据库中的id设置为自增。