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

一、项目背景

被测对象是一个抽奖管理系统,部署在 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. 奖品价格为负数未校验,可成功入库
相关推荐
qq_158895411116 小时前
AI 音乐生成完成后,音频 URL 为什么会过期?一套可恢复的交付方案
python·api·ai音乐
Warson_L8 小时前
高性能架构设计
python·go
databook9 小时前
新数据到手,先跑哪几步检查
python·数据分析
czq_26867194879 小时前
Python打卡第46天
开发语言·python
Flynt11 小时前
日涨4000星的OSINT工具,我拿Linus的用户名和一个随机字符串实测了一遍
python·安全
曲径海盗13 小时前
【Python 学习第 53 天】列表基础
python·学习笔记·编程入门
Dumbness13 小时前
群里 @ 机器人发"查订单",指令一条都没命中:微信群机器人在路由前漏掉的几步归一化
python·微信
用户16148409554514 小时前
用 M4 Pro 跑羽毛球视频 AI 分析(二):TrackNet MPS 加速 3.2 倍、卡尔曼滤波补漏与自动回合剪辑
python
用户40199255686114 小时前
基于对话树回溯的社媒评论流买方意图识别与噪音过滤实践
python
用户03321266636714 小时前
使用 Python 加密或解密 PDF 文档
python