好运buff机 ------ 测试报告

测试目标

项目背景

这是一款可供企业使用的抽奖平台,支持活动创建、人员管理、奖品分配、多轮抽奖流程及实时通知。系统可以承载大量的抽奖请求,保障数据一致性与高并发性能,满足企业营销活动需求。

项目结构

  1. 管理员模块:登录、注册
  2. 普通用户模块:用户列表、普通用户注册
  3. 奖品模块:奖品列表、奖品创建
  4. 活动模块:活动列表、创建活动
  5. 抽奖模块:抽奖活动、中奖者页面展示

测试环境

  • 操作系统:Windows11
  • 浏览器:Chrome
  • 测试工具:Selenium、JMeter、postman

测试用例

功能测试

手动测试

登录页面测试

测试场景一:手机号和密码都不填

预期结果:系统提示手机号、密码为空

测试场景二:手机号格式不正确和密码填写正确

预期结果:弹窗提示"登陆失败登录方式不存在"

测试场景三:手机号填写错误和密码填写正确

预期结果:弹窗提醒"登录失败!用户信息为空"

测试场景四:手机号正确,密码错误(密码格式错误)

预期结果:系统提醒"密码长度至少为6个字符"

测试场景五:手机号正确,密码错误(密码格式正确)

预期结果:弹窗提醒"登录失败密码错误"

测试场景六:手机号正确,密码正确

预期结果:跳转到活动中心页

注册管理员用户页面测试

测试场景一:所有都为空

预测场景:系统提示为空

测试场景二:邮箱格式错误,其他正确

预测场景:系统提示请输入有效的邮箱地址

测试场景三:手机号格式错误,其他正确

预期场景:弹窗提醒"注册失败手机号错误"

测试场景四:密码格式错误,其他正确

预测场景:系统提示密码长度至少为6个字符

测试场景五:邮箱被使用过

预测场景:系统提示邮箱被使用

测试场景六:手机号被使用过

预测场景:系统提示手机号被使用

测试场景七:全部正确

预测场景:弹窗"注册成功,点击确定",成功跳转登录页

用户列表页面测试

测试场景一:点击人员列表

预测场景:正常显示人员列表

注册普通用户页面测试

测试场景一:姓名、邮箱和手机号都为空

预期结果:系统提示姓名、邮箱、手机号为空

测试场景二:邮箱格式错误,手机号正确填写

预期结果:系统提示"请输入有效的邮箱地址"

测试场景三:邮箱格式正确、手机号格式不正确

预期结果:弹窗提示"手机号格式问题"

测试场景四:邮箱被使用过

预期结果:系统提示邮箱被使用过

测试场景五:手机号被使用过

预期结果:系统提示手机号被使用过

测试场景六:全部填写正确

预期结果:跳转到人员列表页

奖品列表页测试

测试场景一:点击奖品列表

预测场景:正常显示奖品列表

创建奖品页面测试

测试场景一:全部空着提交

预测场景:弹窗"创建失败"

测试场景二:只填写奖品名称、其他不填

预测场景:弹窗"创建失败"

测试场景三:填写奖品名称、奖品图片,其他不填

预测场景:弹窗"创建失败"

测试场景四:只填写奖品名称、奖品图片、奖品价格,其他不填

预测场景:弹窗"创建失败"

测试场景五:全部正常填写

预测场景:弹窗"创建成功"

活动页面测试

测试场景一:点击活动列表

预测场景:正常显示活动列表

创建活动页面测试

测试场景一:都空着

预测场景:系统提示为空

测试场景二:填写活动名称和奖品描述,未圈选奖品和人员

预测场景:弹窗提醒"请至少选择一个奖品"

测试场景三:填写活动名称和奖品描述,圈选奖品,未圈选人员

预测场景:弹窗提醒"请至少选择一个人员"

测试场景四:填写活动名称和奖品描述,圈选奖品,圈选人员(圈选人员人数比奖品少)

预测场景:弹窗提醒"创建失败!活动关联奖品及人员数量设置异常"

测试场景五:填写活动名称和奖品描述,圈选奖品,圈选人员(圈选人员人数比奖品多)

预测场景:弹窗提示创建成功,跳转活动列表

抽奖页面测试

测试场景一:正常抽奖流程

预期结果:展示中奖者名单

中奖者展示页面测试

测试用例一:查看抽奖结束后的名单

预期结果:展示名单

自动化测试

驱动类
java 复制代码
package common;

import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;

public class Utils {
    public static WebDriver driver;

    public static WebDriver createDriver(){
        if(driver == null){
            WebDriverManager.chromedriver().setup();
            ChromeOptions options = new ChromeOptions();
//            允许访问所有的链接
            options.addArguments("--remote-allow-orgins=*");
            driver = new ChromeDriver(options);
//            等待
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));
        }
        return  driver;
    }
    public Utils(String url){
//        调用driver对象
        driver = createDriver();
//        访问url
        driver.get(url);
    }

    public void getScreenShot(String str) throws IOException {

        //        屏幕截图
        SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sim2 = new SimpleDateFormat("HHmmssSS");

        String dirTime = sim1.format(System.currentTimeMillis());
        String fileTime = sim2.format(System.currentTimeMillis());

        //./src/test/image/2024-07-17/test01-17453020.png
        String filename = "./src/test/image/"+ dirTime +"/"+ str + "-" +fileTime +fileTime+".png";
        File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//        srcFile放到指定位置
        FileUtils.copyFile(srcFile,new File(filename));
    }
}
注册测试类
java 复制代码
package tests;

import common.Utils;
import org.openqa.selenium.By;

public class RegisterPageTest extends Utils {
    private static String url = "http://106.52.188.165:8081/register.html?admin=true";
    public RegisterPageTest() {
        super(url);
    }
//    正常注册
    public  void checkRegisterPage(){
        driver.findElement(By.cssSelector("#name")).sendKeys("张三");
        driver.findElement(By.cssSelector("#mail")).sendKeys("125@qq.com");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("18111111112");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        driver.switchTo().alert().accept();
        driver.quit();
    }
}
异常注册测试类
java 复制代码
package tests;

import common.Utils;
import org.openqa.selenium.By;

public class ErrorRegisterPageTest extends Utils {
    private static String url = "http://106.52.188.165:8081/register.html?admin=true";
    public ErrorRegisterPageTest() {
        super(url);
    }

    public  void checkErrorRegisterPage(){
//        姓名为空
        driver.findElement(By.cssSelector("#name")).sendKeys("");
        driver.findElement(By.cssSelector("#mail")).sendKeys("126@qq.com");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("1311111131111");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearElement();
//        邮箱为空
        driver.findElement(By.cssSelector("#name")).sendKeys("张三");
        driver.findElement(By.cssSelector("#mail")).sendKeys("");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("1311111113111");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearElement();
//        电话为空
        driver.findElement(By.cssSelector("#name")).sendKeys("张三");
        driver.findElement(By.cssSelector("#mail")).sendKeys("126@qq.com");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearElement();
//        密码为空
        driver.findElement(By.cssSelector("#name")).sendKeys("张三");
        driver.findElement(By.cssSelector("#mail")).sendKeys("126@qq.com");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("1311111113111");
        driver.findElement(By.cssSelector("#password")).sendKeys("");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearElement();
    //邮箱被使用过
        driver.findElement(By.cssSelector("#name")).sendKeys("张三");
        driver.findElement(By.cssSelector("#mail")).sendKeys("123@qq.com");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("1311111113111");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearElement();
//        邮箱格式错误
        driver.findElement(By.cssSelector("#name")).sendKeys("张三");
        driver.findElement(By.cssSelector("#mail")).sendKeys("123");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("1311111113111");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearElement();
//        电话被使用过
        driver.findElement(By.cssSelector("#name")).sendKeys("张三");
        driver.findElement(By.cssSelector("#mail")).sendKeys("123");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("1311111111111");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearElement();
//        电话格式不正确
        driver.findElement(By.cssSelector("#name")).sendKeys("张三");
        driver.findElement(By.cssSelector("#mail")).sendKeys("123");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("1211111111111");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        driver.quit();
    }
//    清空输入的方法
    public static void clearElement(){
        driver.findElement(By.cssSelector("#name")).clear();
        driver.findElement(By.cssSelector("#mail")).clear();
        driver.findElement(By.cssSelector("#phoneNumber")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
    }
}
登录测试
java 复制代码
package tests;

import common.Utils;
import jdk.jshell.execution.Util;
import org.openqa.selenium.By;

public class LoginPageTest extends Utils {
private static String url = "http://106.52.188.165:8081/blogin.html";
    public LoginPageTest() {
        super(url);
    }

    //正常登录
    public void checkLogin(){
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("18111111112");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#loginForm > button")).click();
    }
}
异常登录测试
java 复制代码
package tests;

import common.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.TimeoutException;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class ErrorLoginPageTest extends Utils {
    private static String url = "http://106.52.188.165:8081/blogin.html";
    public ErrorLoginPageTest() {
        super(url);
    }

    public void checkErrorLoginPage(){

        //手机号为空
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#loginForm > button")).click();
        clearElement();

        //密码为空
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("18111111112");
        driver.findElement(By.cssSelector("#password")).sendKeys("");
        driver.findElement(By.cssSelector("#loginForm > button")).click();
        clearElement();

        //        手机号格式错误
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("1811111111");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#loginForm > button")).click();
        try {
            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());

            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
        clearElement();

        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("12111111112");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456789");
        driver.findElement(By.cssSelector("#loginForm > button")).click();
        try {
            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());

            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
        clearElement();


        //        密码错误
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("18111111112");
        driver.findElement(By.cssSelector("#password")).sendKeys("12345678");
        driver.findElement(By.cssSelector("#loginForm > button")).click();
        try {
            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());

            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
        clearElement();
        driver.quit();
    }

    public void  clearElement(){
        driver.findElement(By.cssSelector("#phoneNumber")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
    }
}
活动中心测试
java 复制代码
package tests;

import common.Utils;
import jdk.jshell.execution.Util;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.TimeoutException;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class ActivityCenterPageTest extends Utils {
    private static String url = "http://106.52.188.165:8081/admin.html";
    public ActivityCenterPageTest() {
        super(url);
    }

    //    正常添加工作人员
    public void checkPersonnelManagement(){
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
        driver.findElement(By.cssSelector("#register")).click();
        wait.until(webDriver ->{
            JavascriptExecutor js = (JavascriptExecutor) webDriver;
            return "complete".equals(js.executeScript("return document.readyState"));
        });
        driver.switchTo().frame("contentFrame");
        driver.findElement(By.xpath("//*[@id=\"name\"]")).sendKeys("黄蓉");
        driver.findElement(By.xpath("//*[@id=\"mail\"]")).sendKeys("234@qq.com");
        driver.findElement(By.xpath("//*[@id=\"phoneNumber\"]")).sendKeys("13141111111");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        System.out.println(driver.getTitle());
        driver.quit();
    }


    //    正常添加奖品
    public void checkPrizeManagement(){
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
        driver.findElement(By.cssSelector("body > div.cont-box > div.sidebar > ul > li:nth-child(2) > ul > li:nth-child(2) > a")).click();
        wait.until(webDriver ->{
            JavascriptExecutor js = (JavascriptExecutor) webDriver;
            return "complete".equals(js.executeScript("return document.readyState"));
        });

        driver.switchTo().frame("contentFrame");
        driver.findElement(By.cssSelector("#prizeName")).sendKeys("相机");
        driver.findElement(By.cssSelector("#prizeImageUrl")).sendKeys("D:/PIC/prize.jpg");
        driver.findElement(By.cssSelector("#price")).sendKeys("2200");
        driver.findElement(By.cssSelector("#description")).sendKeys("索尼相机");
        driver.findElement(By.cssSelector("body > div > button")).click();
        driver.switchTo().alert().accept();
        System.out.println(driver.getTitle());
    }

    //    活动管理测试
    public void checkActivityManagement(){
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
        driver.findElement(By.cssSelector("#createActivity")).click();
        wait.until(webDriver ->{
            JavascriptExecutor js = (JavascriptExecutor) webDriver;
            return "complete".equals(js.executeScript("return document.readyState"));
        });

        //活动名称和描述
        driver.switchTo().frame("contentFrame");
        driver.findElement(By.cssSelector("#activityName")).sendKeys("测试");
        driver.findElement(By.cssSelector("#description")).sendKeys("测试测试");

        //圈选奖品
        driver.findElement(By.cssSelector("#buttonPrizes")).click();
        driver.findElement(By.cssSelector("#prize-20")).click();
        driver.findElement(By.cssSelector("#prize-21")).click();
        driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > select")).click();
        driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > input.form-control")).clear();
        driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > input.form-control")).sendKeys("2");
        driver.findElement(By.cssSelector("#prizesModal > div > div.form-btn-box > button.btn.btn-primary")).click();

        //圈选人员
        driver.findElement(By.cssSelector("#buttonUsers")).click();
        driver.findElement(By.cssSelector("#user-44")).click();
        driver.findElement(By.cssSelector("#user-42")).click();
        driver.findElement(By.cssSelector("#user-41")).click();
        driver.findElement(By.cssSelector("#usersModal > div > div.form-btn-box > button.btn.btn-primary")).click();

        //创建活动
        driver.findElement(By.cssSelector("#createActivity")).click();
        //处理弹窗
        try {
            wait = new WebDriverWait(driver, Duration.ofSeconds(10));
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());

            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
    }
}
异常活动中心测试
java 复制代码
package tests;

import common.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.TimeoutException;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class ErrorActivityCenterPageTest extends Utils {
    private static String url = "http://106.52.188.165:8081/admin.html";
    public ErrorActivityCenterPageTest() {
        super(url);
    }
    public void checkErrorPersonnelManagement(){
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
        driver.findElement(By.cssSelector("#register")).click();

        wait.until(webDriver ->{
            JavascriptExecutor js = (JavascriptExecutor) webDriver;
            return "complete".equals(js.executeScript("return document.readyState"));
        });
        driver.switchTo().frame("contentFrame");
        //        名字为空
        driver.findElement(By.cssSelector("#name")).sendKeys("");
        driver.findElement(By.cssSelector("#mail")).sendKeys("235@qq.com");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("13141111112");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearPersonalElement();
        //邮箱为空
        driver.findElement(By.cssSelector("#name")).sendKeys("李四");
        driver.findElement(By.cssSelector("#mail")).sendKeys("");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("13141111112");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearPersonalElement();
        //手机为空
        driver.findElement(By.cssSelector("#name")).sendKeys("李四");
        driver.findElement(By.cssSelector("#mail")).sendKeys("235@qq.com");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearPersonalElement();
        //邮箱格式不正确
        driver.findElement(By.cssSelector("#name")).sendKeys("李四");
        driver.findElement(By.cssSelector("#mail")).sendKeys("123");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("13141111112");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        clearPersonalElement();
        //手机格式不正确
        driver.findElement(By.cssSelector("#name")).sendKeys("李四");
        driver.findElement(By.cssSelector("#mail")).sendKeys("345@qq.com");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("1314111111");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        try {
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());
            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
        clearPersonalElement();
        //邮箱被使用过
        driver.findElement(By.cssSelector("#name")).sendKeys("李四");
        driver.findElement(By.cssSelector("#mail")).sendKeys("123@qq.com");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("13141111112");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        try {
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());
            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
        clearPersonalElement();
        //手机被使用过
        driver.findElement(By.cssSelector("#name")).sendKeys("李四");
        driver.findElement(By.cssSelector("#mail")).sendKeys("321@qq.com");
        driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("13111111111");
        driver.findElement(By.cssSelector("#registerForm > button")).click();
        try {
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());
            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
        clearPersonalElement();
    }


    //清空添加人员的方法
    public void clearPersonalElement(){
        driver.findElement(By.xpath("//*[@id=\"name\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"mail\"]")).clear();
        driver.findElement(By.xpath("//*[@id=\"phoneNumber\"]")).clear();
    }

    //    测试异常添加奖品的方法
    public void checkErrorPrizeManagement(){
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
        driver.findElement(By.cssSelector("body > div.cont-box > div.sidebar > ul > li:nth-child(2) > ul > li:nth-child(2) > a")).click();
        wait.until(webDriver ->{
            JavascriptExecutor js = (JavascriptExecutor) webDriver;
            return "complete".equals(js.executeScript("return document.readyState"));
        });

        driver.switchTo().frame("contentFrame");

//        没有奖品名称
        driver.findElement(By.cssSelector("#prizeName")).sendKeys("");
        driver.findElement(By.cssSelector("#prizeImageUrl")).sendKeys("D:/PIC/prize.jpg");
        driver.findElement(By.cssSelector("#price")).sendKeys("2200");
        driver.findElement(By.cssSelector("#description")).sendKeys("索尼相机");
        driver.findElement(By.cssSelector("body > div > button")).click();
        try {
             wait = new WebDriverWait(driver, Duration.ofSeconds(10));
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());

            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
        clearPrizeElement();

        //        没有照片
        driver.findElement(By.cssSelector("#prizeName")).sendKeys("相机");
        driver.findElement(By.cssSelector("#prizeImageUrl")).sendKeys("");
        driver.findElement(By.cssSelector("#price")).sendKeys("2200");
        driver.findElement(By.cssSelector("#description")).sendKeys("索尼相机");
        driver.findElement(By.cssSelector("body > div > button")).click();
        try {
            wait = new WebDriverWait(driver, Duration.ofSeconds(10));
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());

            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
        clearPrizeElement();
//        没有价格
        driver.findElement(By.cssSelector("#prizeName")).sendKeys("相机");
        driver.findElement(By.cssSelector("#prizeImageUrl")).sendKeys("D:/PIC/prize.jpg");
        driver.findElement(By.cssSelector("#price")).sendKeys("");
        driver.findElement(By.cssSelector("#description")).sendKeys("索尼相机");
        driver.findElement(By.cssSelector("body > div > button")).click();
        try {
            wait = new WebDriverWait(driver, Duration.ofSeconds(10));
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());

            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
        clearPrizeElement();

        //        没有奖品描述
        driver.findElement(By.cssSelector("#prizeName")).sendKeys("相机");
        driver.findElement(By.cssSelector("#prizeImageUrl")).sendKeys("D:/PIC/prize.jpg");
        driver.findElement(By.cssSelector("#price")).sendKeys("2200");
        driver.findElement(By.cssSelector("#description")).sendKeys("");
        driver.findElement(By.cssSelector("body > div > button")).click();
        try {
            wait = new WebDriverWait(driver, Duration.ofSeconds(10));
            Alert alert = wait.until(ExpectedConditions.alertIsPresent());

            // 处理弹窗
            System.out.println("弹窗文本: " + alert.getText());
            alert.accept(); // 或 alert.dismiss()

        } catch (TimeoutException e) {
            System.out.println("10秒内未检测到弹窗");
        }
        clearPrizeElement();

    }
    public void  clearPrizeElement(){
        driver.findElement(By.cssSelector("#prizeName")).clear();
        driver.findElement(By.cssSelector("#prizeImageUrl")).clear();
        driver.findElement(By.cssSelector("#price")).clear();
        driver.findElement(By.cssSelector("#description")).clear();
    }

//    异常活动管理测试
public void checkErrorActivityManagement(){

    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
    driver.findElement(By.cssSelector("#createActivity")).click();
    wait.until(webDriver ->{
        JavascriptExecutor js = (JavascriptExecutor) webDriver;
        return "complete".equals(js.executeScript("return document.readyState"));
    });

    //没有活动名称
    //活动名称和描述
    driver.switchTo().frame("contentFrame");
    driver.findElement(By.cssSelector("#description")).sendKeys("测试测试");

    //圈选奖品
    driver.findElement(By.cssSelector("#buttonPrizes")).click();
    driver.findElement(By.cssSelector("#prize-20")).click();
    driver.findElement(By.cssSelector("#prize-21")).click();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > select")).click();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > input.form-control")).clear();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > input.form-control")).sendKeys("2");
    driver.findElement(By.cssSelector("#prizesModal > div > div.form-btn-box > button.btn.btn-primary")).click();

    //圈选人员
    driver.findElement(By.cssSelector("#buttonUsers")).click();
    driver.findElement(By.cssSelector("#user-44")).click();
    driver.findElement(By.cssSelector("#user-42")).click();
    driver.findElement(By.cssSelector("#user-41")).click();
    driver.findElement(By.cssSelector("#usersModal > div > div.form-btn-box > button.btn.btn-primary")).click();

    //创建活动
    driver.findElement(By.cssSelector("#createActivity")).click();

    clearActivityElements();

    //没有活动描述
    //活动名称和描述

    driver.findElement(By.cssSelector("#activityName")).sendKeys("测试");
    driver.findElement(By.cssSelector("#description")).sendKeys("");

    //圈选奖品
    driver.findElement(By.cssSelector("#buttonPrizes")).click();
    driver.findElement(By.cssSelector("#prize-20")).click();
    driver.findElement(By.cssSelector("#prize-21")).click();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > select")).click();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > input.form-control")).clear();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > input.form-control")).sendKeys("2");
    driver.findElement(By.cssSelector("#prizesModal > div > div.form-btn-box > button.btn.btn-primary")).click();

    //圈选人员
    driver.findElement(By.cssSelector("#buttonUsers")).click();
    driver.findElement(By.cssSelector("#user-44")).click();
    driver.findElement(By.cssSelector("#user-42")).click();
    driver.findElement(By.cssSelector("#user-41")).click();
    driver.findElement(By.cssSelector("#usersModal > div > div.form-btn-box > button.btn.btn-primary")).click();

    //创建活动
    driver.findElement(By.cssSelector("#createActivity")).click();
    clearActivityElements();

    //没有圈选奖品
    driver.findElement(By.cssSelector("#activityName")).sendKeys("测试");
    driver.findElement(By.cssSelector("#description")).sendKeys("测试测试");

    //圈选奖品
    //圈选人员
    driver.findElement(By.cssSelector("#buttonUsers")).click();
    driver.findElement(By.cssSelector("#user-44")).click();
    driver.findElement(By.cssSelector("#user-42")).click();
    driver.findElement(By.cssSelector("#user-41")).click();
    driver.findElement(By.cssSelector("#usersModal > div > div.form-btn-box > button.btn.btn-primary")).click();

    //创建活动
    driver.findElement(By.cssSelector("#createActivity")).click();

    //处理弹窗
    try {
         wait = new WebDriverWait(driver, Duration.ofSeconds(10));
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());

        // 处理弹窗
        System.out.println("弹窗文本: " + alert.getText());
        alert.accept(); // 或 alert.dismiss()

    } catch (TimeoutException e) {
        System.out.println("10秒内未检测到弹窗");
    }

    clearActivityElements();

    //没有圈选人员
    driver.findElement(By.cssSelector("#activityName")).sendKeys("测试");
    driver.findElement(By.cssSelector("#description")).sendKeys("测试测试");

    //圈选奖品
    driver.findElement(By.cssSelector("#buttonPrizes")).click();
    driver.findElement(By.cssSelector("#prize-20")).click();
    driver.findElement(By.cssSelector("#prize-21")).click();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > select")).click();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > input.form-control")).clear();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > input.form-control")).sendKeys("2");
    driver.findElement(By.cssSelector("#prizesModal > div > div.form-btn-box > button.btn.btn-primary")).click();

    //圈选人员

    //创建活动
    driver.findElement(By.cssSelector("#createActivity")).click();

    //处理弹窗
    try {
        wait = new WebDriverWait(driver, Duration.ofSeconds(10));
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());

        // 处理弹窗
        System.out.println("弹窗文本: " + alert.getText());
        alert.accept(); // 或 alert.dismiss()

    } catch (TimeoutException e) {
        System.out.println("10秒内未检测到弹窗");
    }
    clearActivityElements();

    //奖品数量 > 人员数量
    driver.findElement(By.cssSelector("#activityName")).sendKeys("测试");
    driver.findElement(By.cssSelector("#description")).sendKeys("测试测试");

    //圈选奖品
    driver.findElement(By.cssSelector("#buttonPrizes")).click();
    driver.findElement(By.cssSelector("#prize-20")).click();
    driver.findElement(By.cssSelector("#prize-21")).click();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > select")).click();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > input.form-control")).clear();
    driver.findElement(By.cssSelector("#prizesContainer > div:nth-child(1) > input.form-control")).sendKeys("3");
    driver.findElement(By.cssSelector("#prizesModal > div > div.form-btn-box > button.btn.btn-primary")).click();

    //圈选人员
    driver.findElement(By.cssSelector("#buttonUsers")).click();
    driver.findElement(By.cssSelector("#user-44")).click();
    driver.findElement(By.cssSelector("#user-42")).click();
    driver.findElement(By.cssSelector("#user-41")).click();
    driver.findElement(By.cssSelector("#usersModal > div > div.form-btn-box > button.btn.btn-primary")).click();

    //创建活动
    driver.findElement(By.cssSelector("#createActivity")).click();

    //处理弹窗
    try {
        wait = new WebDriverWait(driver, Duration.ofSeconds(10));
        Alert alert = wait.until(ExpectedConditions.alertIsPresent());

        // 处理弹窗
        System.out.println("弹窗文本: " + alert.getText());
        alert.accept(); // 或 alert.dismiss()

    } catch (TimeoutException e) {
        System.out.println("10秒内未检测到弹窗");
    }
    clearActivityElements();

    driver.quit();
    }
    public void clearActivityElements(){
        driver.findElement(By.cssSelector("#activityName")).clear();
        driver.findElement(By.cssSelector("#description")).clear();
        driver.findElement(By.cssSelector("#buttonPrizes")).click();
        driver.findElement(By.cssSelector("#prize-20")).click();
        driver.findElement(By.cssSelector("#prize-21")).click();
        driver.findElement(By.cssSelector("#prizesModal > div > div.form-btn-box > button.btn.btn-primary")).click();
        driver.findElement(By.cssSelector("#buttonUsers")).click();
        driver.findElement(By.cssSelector("#user-44")).click();
        driver.findElement(By.cssSelector("#user-42")).click();
        driver.findElement(By.cssSelector("#user-41")).click();
        driver.findElement(By.cssSelector("#usersModal > div > div.form-btn-box > button.btn.btn-primary")).click();
    }
}
抽奖测试
java 复制代码
package tests;

import common.Utils;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;
import java.util.Set;

public class LotteryPageTest extends Utils {
    private static String url = "http://106.52.188.165:8081/admin.html";
    public LotteryPageTest() {
        super(url);
    }

    public void checkLotterySystem(){
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
        driver.findElement(By.cssSelector("#activitiesList")).click();
        wait.until(webDriver ->{
            JavascriptExecutor js = (JavascriptExecutor) webDriver;
            return "complete".equals(js.executeScript("return document.readyState"));
        });

        driver.switchTo().frame("contentFrame");
        String preHandle = driver.getWindowHandle();

        driver.findElement(By.cssSelector("#activities > div:nth-child(2) > div.active > p > a")).click();

        Set<String> windowHandles = driver.getWindowHandles();
        for (String curHandler:windowHandles){
            if(curHandler != preHandle){
                driver.switchTo().window(curHandler);
            }
        }

        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.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.quit();
    }
}
执行测试
java 复制代码
import tests.*;

public class RunTest {
    public static void main(String[] args) {

//        正常注册测试
//        RegisterPageTest registerPageTest = new RegisterPageTest();
//        registerPageTest.checkRegisterPage();

//        异常注册测试
//        ErrorRegisterPageTest errorRegisterPageTest = new ErrorRegisterPageTest();
//        errorRegisterPageTest.checkErrorRegisterPage();

//        正常登陆测试
        LoginPageTest loginPageTest = new LoginPageTest();
        loginPageTest.checkLogin();

//        异常登录测试
//        ErrorLoginPageTest errorLoginPageTest = new ErrorLoginPageTest();
//        errorLoginPageTest.checkErrorLoginPage();

//        活动中心测试
//        ActivityCenterPageTest activityCenterPageTest = new ActivityCenterPageTest();
//        人员管理测试
//        activityCenterPageTest.checkPersonnelManagement();
//        奖品管理测试
//        activityCenterPageTest.checkPrizeManagement();
//        活动管理测试
//        activityCenterPageTest.checkActivityManagement();

//        异常活动中心测试
//        ErrorActivityCenterPageTest errorActivityCenterPageTest = new ErrorActivityCenterPageTest();
//        异常人员管理测试
//        errorActivityCenterPageTest.checkErrorPersonnelManagement();
//        异常奖品管理测试
//        errorActivityCenterPageTest.checkErrorPrizeManagement();
//        异常活动管理测试
//        errorActivityCenterPageTest.checkErrorActivityManagement();

//        抽奖测试
        LotteryPageTest lotteryPageTest = new LotteryPageTest();
        lotteryPageTest.checkLotterySystem();
    }
}

性能测试

使用Jmeter对项目进行测试

接口测试

管理员注册接口测试
普通用户注册接口测试
密码登录接口测试
获取活动列表接口测试
获取奖品列表接口测试
获取人员列表接口测试
获取抽奖活动页列表
获取中奖信息
展示中奖信息

负载测试

聚合报告
TPS
响应时间
活跃线程
性能报告

兼容性测试

测试场景一:在Edge浏览器中打开好运buff机

预期场景:正常打开

测试场景二:在MAC(UNIX操作系统下)中打开好运buff机

预期场景:正常打开

安全测试

长时间未操作,要求用户重新登录

手机号、账号密码进行加密存储

易用性测试

错误有引导,反馈清晰

测试总结

问题点

有些错误提示直接把异常抛给用户
错误提示不统一(一种弹窗,一种系统提示)

总结

本次测试总体来说还是比较顺利的,但是程序还有一些次要等级的bug需要处理

相关推荐
qq_24218863321 小时前
使用 PyInstaller 打包 Python 脚本为 EXE(教程)
开发语言·python
汤姆yu1 小时前
基于springboot的智能民宿预定与游玩系统
java·spring boot·后端
黎雁·泠崖1 小时前
Java常用类核心精讲 · 七篇精华总结
java·开发语言
Zevalin爱灰灰1 小时前
针对汽车工业软件安全性的C语言编码规范——MISRA C
c语言·开发语言·汽车·嵌入式
JienDa1 小时前
HaiO安装与快速开始
开发语言·php
逆境不可逃1 小时前
【从零入门23种设计模式01】创建型之工厂模式(简单工厂+工厂方法+抽象工厂)
java·spring·设计模式·简单工厂模式·工厂方法模式·抽象工厂模式·工厂模式
lightqjx2 小时前
【C++】C++11 - Lambda表达式+包装器
开发语言·c++·c++11·lambda·包装器
BHXDML2 小时前
操作系统实验:(七)动态分区分配方式的模拟
开发语言·数据库·操作系统
重生之后端学习2 小时前
208. 实现 Trie (前缀树)
java·开发语言·数据结构·算法·职场和发展·深度优先