目录
- 一、项目介绍
-
- [1. 需求描述](#1. 需求描述)
- [2. 页面与接口](#2. 页面与接口)
-
- [http://localhost:8080/register.html 注册页面](#http://localhost:8080/register.html 注册页面)
- [http://localhost:8080/blogin.html 登录页面](#http://localhost:8080/blogin.html 登录页面)
- [http://localhost:8080/admin.html 后台显示页面](#http://localhost:8080/admin.html 后台显示页面)
- 二、功能测试
-
- [1. 脑图](#1. 脑图)
- [2. 测试结果](#2. 测试结果)
- 三、自动化测试
-
- [1. 抽奖功能测试](#1. 抽奖功能测试)
- 四、性能测试
- 五、总结
一、项目介绍
本章节将对抽奖系统进行测试!下面启动!(项目当中的所有脑图都是以本章节为最终版)
1. 需求描述
- 包含管理员的注册与登录。
- 人员管理:管理员支持创建普通用户,查看用户列表
- 管理端支持创建奖品、奖品列表展示功能。
- 管理端支持创建活动、活动列表展示功能。
- 抽奖页面:
- 通知部分:抽奖完成需以邮件方式通知中奖者。
- 管理端涉及的所有页面,包括抽奖页,需强制管理员登录后方可访问。
2. 页面与接口
创建项目结构:

http://localhost:8080/register.html 注册页面

调用的注册接口:http://localhost:8080/register
http://localhost:8080/blogin.html 登录页面

调用的登录接口:http://localhost:8080/password/login
http://localhost:8080/admin.html 后台显示页面

调用活动列表接口:http://localhost:8080/activity/find-list?currentPage=1\&pageSize=10
调用新建活动接口:http://localhost:8080/activity/create
调用奖品列表接口:http://localhost:8080/prize/find-list?currentPage=1\&pageSize=10
调用创建奖品接口:http://localhost:8080/prize/create
调用人员列表接口:http://localhost:8080/base-user/find-list
调用注册用户接口:http://localhost:8080/register
二、功能测试
针对需求与接口进行功能的测试:
1. 脑图

2. 测试结果
注册结果:

登录结果:

成功创建活动:

成功创建奖品:

成功创建人员:

其他人获取结果显示:

由于动态变化的图没有办法展示会在自动化进行结果处理。
三、自动化测试
具体的测试在我的这偏博客当中,在此处会将最核心的抽奖功能进行测试,其他功能界面测试都由
链接: link
这篇博客介绍
1. 抽奖功能测试

关于界面元素测试在另一博客当中有展示,以下是关于本系统的核心测试部分
java
package test;
import common.Util;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.time.Duration;
import java.util.List;
import java.util.Set;
public class WinnerPage extends Util {
public static String url = URL;
public WinnerPage() {
super(url);
}
/**
* 一篇博客抽奖
*/
public void winnerPage() {
System.out.println("一篇博客抽奖测试");
driver.findElement(By.cssSelector("#activitiesList")).click();
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("contentFrame")));
// 2. 找到所有活动项(每个活动是一个div.activity-item)
List<WebElement> activityItems = driver.findElements(By.cssSelector("#activities > div.activity-item"));
// 记录点击前的窗口句柄(主窗口)
String originalWindow = driver.getWindowHandle();
// 3. 遍历每个活动,判断状态并决定是否点击
for (WebElement item : activityItems) {
// 定位当前活动项里的a标签(抽奖链接)
WebElement link = item.findElement(By.cssSelector("div.active > p > a"));
String linkText = link.getText().trim();
System.out.println("活动状态:" + linkText);
// 只点击"活动进行中,去抽奖"的活动
if (linkText.contains("活动进行中,去抽奖")) {
System.out.println("点击进行中的活动...");
link.click();
// 3. 等待新窗口出现,并切换过去
wait.until(ExpectedConditions.numberOfWindowsToBe(2)); // 等待窗口总数变为2
Set<String> allWindows = driver.getWindowHandles();
for (String windowHandle : allWindows) {
if (!windowHandle.equals(originalWindow)) {
driver.switchTo().window(windowHandle); // 切换到新窗口
break;
}
}
// 这里可以加后续抽奖页面的测试逻辑
driver.findElement(By.cssSelector("#container > div.opt-box > span.btn.next-btn")).click();
// 比如:driver.getWindowHandles() 处理新窗口
driver.findElement(By.cssSelector("#container > div.opt-box > span.btn.next-btn")).click();
driver.findElement(By.cssSelector("#container > div.opt-box > span.btn.next-btn")).click();
driver.findElement(By.cssSelector("#container > div.opt-box > span.btn.next-btn")).click();
driver.close(); // 关闭当前的新窗口
driver.switchTo().window(originalWindow); // 切回主窗口
break; // 如果只需要点击第一个进行中的活动,就break;如果要遍历所有,就去掉break
} else if (linkText.contains("活动已完成")) {
System.out.println("活动已完成,跳过...");
}
}
// 4. 切回主页面
driver.switchTo().defaultContent();
}
}
四、性能测试
性能测试主要测试的是登录接口,人员列表显示,用户列表显示,奖品列表显示,具体信息在:
链接: link
五、总结
主要进行了功能测试,以及部分的接口测试,以及测试用例编写。