ShopXO 商城系统测试报告:功能、后台管理、异常状态与 JMeter 性能验证
| 项目名称 | ShopXO 商城系统 | 版本/页面标识 | ShopXO v6.6.0 |
|---|---|---|---|
| 用户端地址 | http://49.235.61.184/ |
管理端地址 | http://49.235.61.184/adminkpeyv4.php?s=index/index.html |
| 测试日期 | 2026-07-16 | 测试方式 | 功能测试、异常状态测试、权限重定向测试、后台管理测试、JMeter 性能测试 |
| 用户端测试账号 | 123456789 |
管理端测试账号 | admin |
| 测试工具 | Playwright、System Chrome、Apache JMeter 5.5、Matplotlib 重绘图表 | 证据目录 | screenshots/、*.json、jmeter-results/ |
| 报告说明 | 密码不写入正文,不记录 Cookie、Token | 测试结论 | 管理端核心页面通过;用户端主要页面通过,异常搜索与用户端登录闭环存在限制;JMeter 低负载出现 3.33% 错误率 |
文章目录
- 项目背景
- 测试安排
- 测试分类
- [(1) 功能测试](#(1) 功能测试)
- [(2) 异常与权限测试](#(2) 异常与权限测试)
- [(3) 自动化测试](#(3) 自动化测试)
- [(4) 性能测试](#(4) 性能测试)
- [(5) 接口与连通性测试](#(5) 接口与连通性测试)
- [(6) 安全测试](#(6) 安全测试)
- [(7) 缺陷统计与分析](#(7) 缺陷统计与分析)
- [总结测试 tips](#总结测试 tips)
- 截图文件清单
项目背景
项目背景与意义
本次测试对象是公网部署的 ShopXO 商城系统。用户端覆盖首页、商品分类、搜索、注册、登录、购物车、订单、个人中心等典型电商链路;管理端覆盖后台登录、用户、商品、商品分类、订单等运营页面。
本轮修订重点补齐两类证据:第一,用户端不再只截"相似登录页",而是补充注册/登录不同 tab、错误验证码拒绝、协议未勾选拒绝、未登录访问重定向等状态,并在截图顶部加入证据栏显示用例编号、HTTP 状态、请求 URL、最终 URL 和结论;第二,JMeter 不只放原生 Dashboard 截图,而是按参考报告样式重绘响应时间、吞吐量、活动线程数、聚合报告和组合图。
图 1 用户端商城首页截图

项目概述
| 子系统 | 地址 | 本轮验证内容 | 结论 |
|---|---|---|---|
| 用户端 | http://49.235.61.184/ |
首页、注册三方式、登录两方式、登录拒绝、注册拒绝、分类、搜索、购物车/订单/个人中心重定向 | 部分通过 |
| 管理端 | http://49.235.61.184/adminkpeyv4.php?s=index/index.html |
登录、首页、用户列表、商品列表、商品分类、订单列表 | 通过 |
| 性能测试 | 用户端/管理端公开 GET 页面 | JMeter 3 线程、5 循环、60 请求低负载测试 | 部分通过,错误率 3.33% |
已验证的主要功能
用户端
- 首页可访问,商品分类、搜索入口、推荐商品和价格信息正常。
- 注册支持账号注册、手机注册、邮箱注册三种 tab。
- 注册异常校验生效:未勾选协议时停留注册页并提示"请勾选同意协议"。
- 登录支持账号密码、手机验证码、邮箱验证码入口;错误验证码会被拒绝并提示"验证码错误"。
- 未登录访问个人中心、订单中心、购物车会重定向到登录页。
- 商品分类页可访问并展示分类与商品列表。
- 搜索
iPhone可返回商品结果;特定中文编码搜索触发 500,记录为缺陷。
管理端
- 使用给定管理端账号登录成功,进入后台首页。
- 后台首页显示系统、站点、权限、用户、商品、订单、网站、品牌、仓库、数据等菜单。
- 用户列表、商品列表、商品分类、订单管理均可访问并正常截图。
当前系统存在的不足
| 编号 | 不足项 | 影响 | 证据 |
|---|---|---|---|
| RISK-001 | 用户端登录需要图形验证码 | 自动化无法完全替代人工验证码输入;错误验证码拒绝已验证 | PIC-024 |
| RISK-002 | 注册页未提交新账号 | 避免污染公网演示环境;只验证入口、tab 和异常拒绝 | PIC-019 至 PIC-021、PIC-025 |
| RISK-003 | 特定中文编码搜索触发 500 | 搜索异常处理不稳定 | PIC-030 |
| RISK-004 | 低负载 JMeter 出现 2 个错误和一次 50s 级长响应 | 公网页面在轻量并发下存在波动 | PIC-032、PIC-035、PIC-036 |
项目的系统功能说明
1. 用户端注册功能
用户注册登录测试思维导图

测试关注点:注册入口是否可用,账号/手机/邮箱注册 tab 是否可切换,异常输入是否被拒绝。
账号注册状态截图

手机注册状态截图

邮箱注册状态截图

注册异常拒绝截图
未勾选协议/错误验证码提交后停留注册页,页面提示"请勾选同意协议"。

结论:注册入口和三种注册方式通过;注册异常拦截通过。未进行真实注册入库,避免污染公网演示数据。
2. 用户端登录功能
测试关注点:登录方式是否完整,账号密码/手机验证码/邮箱验证码入口是否可切换,错误验证码是否拒绝。
账号密码登录状态截图

手机验证码登录状态截图

错误验证码登录拒绝截图
使用账号密码和错误验证码提交后,仍停留登录页并提示"验证码错误"。

结论:登录入口和异常拒绝通过;由于真实验证码不可无人值守识别,本轮不伪造用户端登录成功。
3. 商品搜索、分类与商品入口
用户端业务与权限测试思维导图

商品搜索结果截图

商品卡片/商品入口截图

商品分类页截图

搜索异常截图

结论:常规商品搜索和分类页通过;特定编码搜索触发 500,记录为缺陷。
4. 未登录访问控制
个人中心未登录重定向截图

订单中心未登录重定向截图
请求订单中心,最终 URL 为登录页。

购物车未登录重定向截图
请求购物车,最终 URL 为登录页。

结论:个人中心、订单中心、购物车均存在未登录保护。
5. 管理端后台功能
管理端后台测试思维导图

管理端登录页截图

管理端后台首页截图

管理端用户列表截图

管理端商品列表截图

管理端商品分类截图

管理端订单列表截图

结论:管理端登录成功,后台首页、用户、商品、分类和订单页面均通过。
测试目标
| 编号 | 测试目标 | 完成情况 |
|---|---|---|
| OBJ-001 | 验证用户端首页可访问 | 已完成,通过 |
| OBJ-002 | 验证用户端注册三种方式 | 已完成,通过 |
| OBJ-003 | 验证用户端注册异常拒绝 | 已完成,通过 |
| OBJ-004 | 验证用户端登录方式和错误验证码拒绝 | 已完成,通过异常拒绝;未证明真实登录成功 |
| OBJ-005 | 验证商品搜索、分类、商品列表 | 常规通过;异常搜索发现 500 |
| OBJ-006 | 验证未登录访问控制 | 已完成,通过 |
| OBJ-007 | 验证管理端登录和后台页面 | 已完成,通过 |
| OBJ-008 | 使用 JMeter 形成性能测试和重绘图 | 已完成,发现 3.33% 错误率 |
测试项目相关信息
测试总览思维导图

| 项目 | 内容 |
|---|---|
| 用户端基础测试时间 | 2026-07-19 14:08:57 |
| 管理端复测时间 | 2026-07-19 14:30:00 |
| 用户端多状态补测时间 | 2026-07-19 14:40:51 |
| JMeter 执行时间 | 2026-07-19 14:42:25 至 14:43:35 |
| JMeter 测试计划 | shopxo-jmeter-test-plan.jmx,3 线程,5 循环,4 个 GET 页面 |
| 自动化脚本 | capture_shop_tests.py、capture_shop_admin_v2.py、capture_user_states_v2.py、generate_jmeter_visuals.py |
测试安排
| 测试阶段 | 测试内容 | 测试方法 | 状态 |
|---|---|---|---|
| 用户端基础功能 | 首页、搜索、商品、购物车 | Playwright 截图 | 已完成 |
| 用户端状态补测 | 注册 tab、登录 tab、异常拒绝、未登录重定向 | Playwright + 证据栏截图 | 已完成 |
| 管理端功能 | 登录、首页、用户、商品、分类、订单 | Playwright 登录后访问 | 已完成 |
| 性能测试 | 首页、搜索、用户登录页、管理端登录页 | JMeter 3 线程 5 循环 | 已完成 |
| 图表生成 | Dashboard、响应时间、吞吐量、线程数、聚合报告、组合图 | Matplotlib 重绘 | 已完成 |
测试分类
(1) 功能测试
| 模块 | 用例数 | 通过 | 限制/缺陷 | 说明 |
|---|---|---|---|---|
| 用户端首页 | 1 | 1 | 0 | 首页主体正常 |
| 注册入口与 tab | 3 | 3 | 0 | 账号、手机、邮箱注册入口均可见 |
| 注册异常 | 1 | 1 | 0 | 未勾选协议被拒绝 |
| 登录入口与 tab | 2 | 2 | 0 | 账号密码、手机验证码入口可见 |
| 登录异常 | 1 | 1 | 0 | 错误验证码被拒绝 |
| 商品/分类/搜索 | 4 | 3 | 1 | 中文编码搜索触发 500 |
| 未登录访问控制 | 3 | 3 | 0 | 个人中心、订单、购物车均重定向登录 |
| 管理端 | 6 | 6 | 0 | 登录、首页、用户、商品、分类、订单通过 |
| 合计 | 21 | 20 | 1 | 功能通过率 95.24% |
(2) 异常与权限测试
| 用例编号 | 用例名称 | 请求 | 预期 | 实际 | 状态 |
|---|---|---|---|---|---|
| USER-LOGIN-REJECT-001 | 错误验证码登录拒绝 | 用户端登录 | 拒绝并停留登录页 | 提示"验证码错误",停留登录页 | 通过 |
| USER-REGISTER-REJECT-001 | 注册协议未勾选拒绝 | 用户端注册 | 拒绝提交 | 提示"请勾选同意协议",停留注册页 | 通过 |
| USER-AUTH-REDIRECT-001 | 个人中心未登录重定向 | /user/index.html |
跳转登录页 | 最终 URL 为登录页 | 通过 |
| USER-AUTH-REDIRECT-002 | 订单中心未登录重定向 | /order/index.html |
跳转登录页 | 最终 URL 为登录页 | 通过 |
| USER-AUTH-REDIRECT-003 | 购物车未登录重定向 | /cart/index.html |
跳转登录页 | 最终 URL 为登录页 | 通过 |
| USER-SEARCH-EMPTY-001 | 特定编码搜索异常 | search URL | 空结果页或友好提示 | HTTP 500 系统错误 | 缺陷 |
(3) 自动化测试
本轮自动化脚本:
powershell
python "my_docs\商城系统测试报告\capture_shop_tests.py"
python "my_docs\商城系统测试报告\capture_shop_admin_v2.py"
python "my_docs\商城系统测试报告\capture_user_states_v2.py"
python "my_docs\商城系统测试报告\generate_jmeter_visuals.py"
证据文件:
test-evidence.json:用户端基础功能证据。admin-evidence.json:管理端登录与后台页面证据。user-state-evidence-v2.json:用户端多状态、异常拒绝、重定向证据。jmeter-results/shopxo-performance.jtl:JMeter 原始结果。jmeter-results/html-report/statistics.json:JMeter 聚合统计。
(4) 性能测试
JMeter 测试设计
JMeter 性能测试思维导图

| 配置项 | 值 |
|---|---|
| 线程数 | 3 |
| 循环次数 | 5 |
| 请求页面 | 用户端首页、搜索结果页、用户登录页、管理端登录页 |
| 总请求数 | 60 |
| 执行方式 | 非 GUI 模式,生成 JTL 和 HTML 报告 |
执行命令:
powershell
jmeter.bat -n -t "my_docs\商城系统测试报告\shopxo-jmeter-test-plan.jmx" -l "my_docs\商城系统测试报告\jmeter-results\shopxo-performance.jtl" -e -o "my_docs\商城系统测试报告\jmeter-results\html-report"
JMeter 执行结果
| 指标 | 结果 |
|---|---|
| 总请求数 | 60 |
| 错误数 | 2 |
| 错误率 | 3.33% |
| 平均响应时间 | 2314.12ms |
| 中位数响应时间 | 1256.5ms |
| 最小响应时间 | 1ms |
| 最大响应时间 | 50375ms |
| 吞吐量 | 0.87 req/s |
| 请求 | Samples | Error % | Avg(ms) | Median(ms) | Max(ms) |
|---|---|---|---|---|---|
| GET user home | 15 | 0.00% | 7049.07 | 1863.0 | 50375 |
| GET search iphone | 15 | 6.67% | 1718.47 | 1776.0 | 2598 |
| GET user login | 15 | 6.67% | 304.73 | 236.0 | 1391 |
| GET admin login | 15 | 0.00% | 184.20 | 116.0 | 1122 |
JMeter 原生页面截图
JMeter 原生 Dashboard 页面截图

JMeter 原生响应时间页面截图

JMeter 吞吐量页面截图

JMeter 重绘分析图
JMeter Dashboard

JMeter 响应时间趋势图

JMeter 吞吐量趋势图

JMeter 活动线程数变化图

JMeter 聚合报告图

结论:低负载性能测试未完全通过。管理端登录页响应稳定,用户端首页出现 50s 级长响应;搜索页和用户登录页各出现 1 次错误。该结果应作为性能风险记录,不应写成全通过。
(5) 接口与连通性测试
| 检查项 | 地址 | 结果 | 说明 |
|---|---|---|---|
| 用户端首页 | / |
200 | 页面主体正常 |
| 用户注册页 | /?s=user/reginfo.html |
200 | 三种注册 tab 正常 |
| 用户登录页 | /?s=user/logininfo.html |
200 | 登录 tab 正常 |
| 商品搜索 iPhone | /?s=search/index/wd/960586F6E656.html |
200 | 返回 1 条商品 |
| 特定编码搜索 | /?s=search/index/wd/5LiN5a2Y5Zyo.html |
500 | 系统错误 |
| 商品分类页 | /?s=category/index.html |
200 | 分类页可访问 |
| 管理端首页 | /adminkpeyv4.php?s=index/index.html |
200 | 登录后可访问 |
| 管理端用户列表 | /adminkpeyv4.php?s=user/index.html |
200 | 表格正常 |
| 管理端商品列表 | /adminkpeyv4.php?s=goods/index.html |
200 | 表格正常 |
| 管理端订单列表 | /adminkpeyv4.php?s=order/index.html |
200 | 页面正常 |
(6) 安全测试
| 安全项 | 测试方法 | 实际结果 | 结论 |
|---|---|---|---|
| 密码框隐藏 | 截图检查登录表单 | 用户端、管理端密码均隐藏 | 通过 |
| 错误验证码拒绝 | 用户端输入错误验证码提交 | 提示验证码错误,停留登录页 | 通过 |
| 注册协议校验 | 不勾选协议提交 | 提示请勾选同意协议 | 通过 |
| 未登录访问控制 | 访问个人中心、订单、购物车 | 均重定向登录页 | 通过 |
| 管理端访问控制 | 未登录访问后台后再登录 | 登录后才能进入后台 | 通过 |
| 敏感信息处理 | 报告与截图检查 | 不写明文密码、Cookie、Token | 通过 |
(7) 缺陷统计与分析
| 级别 | 数量 | 说明 |
|---|---|---|
| P1 | 0 | 未发现核心后台不可访问问题 |
| P2 | 2 | JMeter 低负载错误率 3.33%;用户端首页一次 50s 级长响应 |
| P3 | 2 | 特定搜索触发 500;商品详情跳转仍需补充专门选择器 |
| 合计 | 4 | 均有截图或 JMeter 数据证据 |
| 编号 | 级别 | 模块 | 问题描述 | 影响 | 证据 |
|---|---|---|---|---|---|
| BUG-001 | P2 | 性能 | 3 线程低负载 JMeter 出现 2 个错误 | 轻并发下稳定性不足 | PIC-035 |
| BUG-002 | P2 | 用户端首页 | GET user home 最大响应时间 50375ms |
首页偶发长响应 | PIC-032、PIC-036 |
| BUG-003 | P3 | 搜索 | 特定中文编码搜索返回 500 | 搜索异常处理不友好 | PIC-030 |
| BUG-004 | P3 | 商品详情 | 商品列表展示已验证,详情页跳转未形成独立成功截图 | 详情链路证据不足 | PIC-007 |
总结测试 tips
- 截图要能表达状态变化:本轮新增证据栏后,重定向、拒绝、HTTP 500 和最终 URL 都能直接从图片中看出来。
- 登录/注册截图不能只放相似表单页,要补充 tab 切换、错误输入、拒绝提示和权限拦截。
- JMeter 不应只截原生 HTML 页面,还应把 JTL/statistics.json 转为便于报告展示的趋势图、聚合表和组合图。
- 性能结果要按真实数据写:本轮 JMeter 出现 3.33% 错误率和 50s 长响应,因此不能写成性能全通过。
- 公网演示环境不做高压测试,本轮 3 线程 5 循环属于低负载烟测。
感谢阅读,记得点赞、关注、收藏,欢迎各位评论区交流!!!