目录
1.项目背景
2.测试环境
3.测试计划
3.1功能测试
3.2自动化测试
1.项目背景
主要采用了前后端分离的方式来实现,把整个项目分成前端模块,索引模块,搜索模块,同时将其布置到云服务器中。该搜索引擎只是基于java API的站内搜索,根据用户输入的关键词按权重检索出对应的结果。
2.测试环境
软件:Google Chrome
开发工具:IDEA
测试工具:自动化测试工具Selenium
操作系统:Windows 11家庭版
浏览器版本:Google Chrome 133.0.6943.98(正式版本) (64 位)
3.测试计划
测试用例:
3.1功能测试
执行过程部分截图:
3.2自动化测试
import io.github.bonigarcia.wdm.WebDriverManager;
import org.junit.Test;
import org.junit.jupiter.api.Order;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import static java.lang.Thread.sleep;
public class docSearcher{
WebDriver webDriver=null;
//封装一个方法用来创建驱动对象
void createDriver(){
//打开浏览器 使用驱动打开
WebDriverManager.chromedriver().setup();
//增加浏览器配置:创建驱动对象要强制指定允许访问所有链接
ChromeOptions options=new ChromeOptions();
//允许访问所有链接
options.addArguments("--remote-allow-origins=*");
//打开浏览器
webDriver=new ChromeDriver(options);
}
@Order(1)
@Test
public void search() throws InterruptedException {
createDriver();
//2.输⼊网址
webDriver.get("http://81.70.35.150:8080/index.html");
sleep(3000);
//3.找到输入框并输入 array
webDriver.findElement(By.cssSelector("body > div > div.header > input[type=text]")).sendKeys("array");
sleep(3000);
//4、找到按钮并点击
webDriver.findElement(By.cssSelector("#search-btn")).click();
sleep(3000);
String s=webDriver.findElement(By.cssSelector("body > div > div.result > div.count")).getText();
StringBuilder ret=new StringBuilder();
for (char c:s.toCharArray()){
if(Character.isDigit(c)){
ret.append(c);
}
}
if(ret.equals("0")){
System.out.println("测试失败");
}else {
System.out.println("测试通过");
}
//5、关闭浏览器
webDriver.close();
}
@Order(2)
@Test
public void search2() throws InterruptedException {
createDriver();
webDriver.get("http://81.70.35.150:8080/index.html");
sleep(3000);
webDriver.findElement(By.cssSelector("body > div > div.header > input[type=text]")).clear();
webDriver.findElement(By.cssSelector("body > div > div.header > input[type=text]")).sendKeys(" ");
sleep(3000);
webDriver.findElement(By.cssSelector("#search-btn")).click();
sleep(3000);
String s=webDriver.findElement(By.cssSelector("body > div > div.result > div.count")).getText();
StringBuilder ret=new StringBuilder();
for (char c:s.toCharArray()){
if(Character.isDigit(c)){
ret.append(c);
}
}
System.out.println(ret);
String SS=ret.toString();
if(SS.equals("0")){
System.out.println("测试通过");
}
}
}
亮点:
使用Selenium与Junit结合来测试:
①使用了JUnit5中提供的注解:避免生成过多的对象,造成资源和时间的浪费,提高了自动化的执行效率。
②只创建一次驱动对象,避免每个用例重复创建驱动对象造成时间和资源的浪费。
③使用参数化:保持用例的简洁,提高代码的可读性
④使用测试套件:降低了测试人员的工作量,通过套件一次执行所有要运行的测试用例。
⑤使用了等待:提高了自动化的运行效率,提高了自动化的稳定性,减小误报的可能性。