奖池派对自动化测试方案与实践报告

一、项目背景

被测对象是一个抽奖管理系统,部署在 http://1.14.192.17:8080/。支持管理员登录、人员管理、活动管理、奖品管理、抽奖与中奖记录等功能。

1、 测试范围

本次测试涵盖了抽奖系统的核心生命周期,具体包括:

• 功能测试:验证注册、登录、奖品创建、活动创建及抽奖等业务逻辑。

• 界面测试 (UI):检查注册,登录,奖品列表页面的布局与交互。

• 接口测试:利用 Postman 针对活动创建等核心接口进行协议级校验。

• 自动化测试:基于 Pytest + Selenium 实现核心高频场景的自动化回归。

2、 需求分析

  1. 登录/认证模块
  • 密码登录:正常登录、错误密码、空字段、不存在的账号

  • 邮箱验证码登录:验证码为空、未获取验证码直接输入

  • 权限校验:未登录访问需认证接口(越权检测)

  1. 用户模块(管理员管理普通用户)
  • 注册:正常注册(管理员/普通用户)、空字段、重复手机号/邮箱

  • 安全边界:XSS 注入、超长名称、特殊字符

  • 人员列表:分页查询、无权限访问

  1. 奖品模块
  • 创建奖品:正常创建、名称为空、价格为负数(未校验 BUG)、图片上传

  • 奖品列表:分页查询、page=0 边界(SQL 泄露 BUG)

  1. 活动链路
  • 创建活动:正常创建、空字段、不存在的奖品/人员关联

  • 活动列表:分页组件浏览

  • 活动详情:正常查询、activityId=0/-1

  1. 抽奖核心链路
  • 执行抽奖:缺少参数拒绝、不存在的活动 ID

  • 中奖记录:正常查询、不存在的活动、越权访问

二、设计测试用例

1.功能测试---验证每个接口的请求/响应逻辑是否正确

2.界面测试---验证页面元素可见、表单填写、弹窗交互

  1. 兼容性--- 用 Selenium Grid 或不同 WebDriver 跑 Firefox/Edge,确认核心流程不因浏览器差异而失败

  2. 性能测试---抽奖活动场景下多人同时抽奖的并发情况,用 Locust 或 JMeter 压一下抽奖接口

  3. 安全性测试 ---隐私数据是否明文显示,参数未校验导致sql注入,越权操作等

接下来主要讲自动化测试项目基于 pytest 框架,采用接口自动化(API)+ 浏览器自动化(GUI) 双层覆盖策略。

1、功能测试

验证每个接口的请求/响应逻辑是否正确

1. 登录 /blogin.html

文件: test_blogin.py --- 2 个接口,15 条用例

2. 注册 /register

文件: test_register.py --- 1 个接口,10 条用例

3. 人员列表 /base-user/find-list

文件: test_list.py --- 1 个接口,2 条用例

4. 活动列表 /activity/find-list

文件: test_activity_list.py --- 1 个接口,3 条用例

5. 创建活动 /activity/create

文件: test_activity_create.py --- 1 个接口,10 条用例

6. 奖品列表 /prize/find-list

文件: test_prize_list.py --- 1 个接口,3 条用例

7. 创建奖品 /prize/create(multipart/form-data)

文件: test_prize_create.py --- 1 个接口,9 条用例

8. 抽奖相关(3 个接口)

文件: test_draw.py --- 3 个接口,11 条用例

/activity-detail/find GET 4个用例

复制代码
/winning-records/show POST  4个用例
复制代码
/winning-records/show POST  3个用例

2、界面测试

1. 登录页 blogin.html

文件: test_login.py --- 1 个页面,8 条用例

2. 活动管理

​​​​​activities-list.html / create-activity.html

复制代码
文件: test_activity.py — 2 个页面,5 条用例

3. 奖品管理 prizes-list.html / create-prizes.html

4. 抽奖页面 activities-list.html / user-list.html

三、测试统计

1.缺陷统计

复制代码
发现的 BUG 汇总

1. 注册接口 XSS 脚本未过滤(存储型 XSS)
2. 活动/奖品列表 currentPage=0 暴露 SQL 语法错误和表结构 
3. 活动详情 activityId=0/-1 暴露完整 SQL 异常堆栈 
4. 邮箱+未获取验证码+输入验证码错误暴露 NPE 空指针异常
5. Emoji 名称导致 SQL 字符集异常
6. 超长名称暴露 SQL Data truncation
7. 不存在的活动 ID 抽奖返回 200
8. 奖品价格为负数未校验,可成功入库
相关推荐
AC赳赳老秦14 小时前
OpenClaw多Agent分工协作:按工作模块拆分Agent,实现全流程自动化闭环
java·大数据·数据库·python·自动化·php·openclaw
十年伴树14 小时前
python --version返回空行
开发语言·python
meilindehuzi_a14 小时前
AI 时代的高效编程:从 Python 切片基础到魔塔社区大模型 Prompt 实战
python·prompt
kkoral14 小时前
视频二进制流RAW文件转图片完整教程
运维·python·ffmpeg·音视频
Hanniel14 小时前
Python 元类(中):拦截类的创建
开发语言·python
牧鸯人14 小时前
基于yolov8的课堂行为检测系统——主要功能检测睡觉、手机、人数
python·深度学习·yolo·学生行为统计
EntyIU14 小时前
langchain短期 + 长期记忆架构
python·ai
千寻girling14 小时前
机器学习 | 监督学习算法(了解) | 尚硅谷学习
开发语言·人工智能·后端·python·学习·算法·机器学习
ONE_SIX_MIX15 小时前
lightweight-charts-onesixth 发布 v2.4.0 ,修复更多bug,添加跨进程窗口功能
python·pyside6·k线图表