测试实战【用例设计】自己写的项目+功能测试(1)

目录

一、项目介绍

本章节将对抽奖系统进行测试!下面启动!(项目当中的所有脑图都是以本章节为最终版)

1. 需求描述

  1. 包含管理员的注册与登录。
  2. 人员管理:管理员支持创建普通用户,查看用户列表
  3. 管理端支持创建奖品、奖品列表展示功能。
  4. 管理端支持创建活动、活动列表展示功能。
  5. 抽奖页面:
  6. 通知部分:抽奖完成需以邮件方式通知中奖者。
  7. 管理端涉及的所有页面,包括抽奖页,需强制管理员登录后方可访问。

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

五、总结

主要进行了功能测试,以及部分的接口测试,以及测试用例编写。

相关推荐
\光辉岁月/17 分钟前
3.包装类
java·开发语言·包装类
BeiGuTing_code18 分钟前
Java动态数组(一)
java·数据结构·windows
lazy H20 分钟前
【计算机网络】第 2 篇:一条数据如何穿过网络?彻底理解数据封装与解封装
网络·经验分享·后端·学习·计算机网络
刚入门的大一新生22 分钟前
Linux-进程间通信1
linux·运维·服务器
我命由我1234528 分钟前
软件工程概念 - 可插拔性
java·后端·学习·java-ee·系统架构·软件工程·学习方法
Bazingga33 分钟前
RAG路由全景:一个问题走到岔路口,谁来指路
后端
云边有个稻草人35 分钟前
从日志到落库:数据集成产品 KFS 如何打通异构数据库实时同步链路
后端
努力小陈141 分钟前
从 Java 到 Go:后端工程师的 30 分钟语法速查
后端
Thneonl42 分钟前
一个 502,十种病因:nginx 反代排障分诊树
后端·架构
花间相见43 分钟前
【计算基础|MySQL09】索引(下):失效与设计
数据库·后端·面试