测试实战【用例设计】自己写的项目+功能测试(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

五、总结

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

相关推荐
努力的小郑几秒前
Canal 不难,难的是用好:从接入到治理
后端·mysql·性能优化
赫瑞20 分钟前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构
Victor35644 分钟前
MongoDB(87)如何使用GridFS?
后端
Victor3561 小时前
MongoDB(88)如何进行数据迁移?
后端
安审若无1 小时前
运维知识框架
运维·服务器
小红的布丁1 小时前
单线程 Redis 的高性能之道
redis·后端
GetcharZp1 小时前
Go 语言只能写后端?这款 2D 游戏引擎刷新你的认知!
后端
周末也要写八哥2 小时前
多进程和多线程的特点和区别
java·开发语言·jvm
惜茶2 小时前
vue+SpringBoot(前后端交互)
java·vue.js·spring boot
宁瑶琴3 小时前
COBOL语言的云计算
开发语言·后端·golang