衣目了然项目测试报告
2026/8/14 17:46:50 网站建设 项目流程

衣目了然项目测试报告

项目名称:衣目了然(AIWEAR)
测试类型:接口测试(Apifox)+ 功能测试(手工)+ UI 自动化(Selenium)+ 性能测试(JMeter)
测试环境:

  • 接口 / 功能:前端 http://localhost:5173;后端 http://localhost:8081/api
  • UI 自动化 / 性能:http://8.134.217.89
    测试日期:2026-08-08 ~ 2026-08-13
    测试人员:Jonkin
    用例总数:36 条(接口 20 + 功能 10 + UI 自动化 3 + 性能场景 3)

一、测试结论摘要

1.1 总体

测试类型执行数通过不通过功能通过*通过率
接口测试20133275%(15/20)
功能测试101000100%(10/10)
UI 自动化3300100%(3/3)
性能测试3300100%(3/3)
合计36293286%(31/36)

*功能通过:接口层功能正确,但响应体非统一 Result 格式。

1.2 接口测试结论

核心业务流程符合预期。受缺少全局异常处理类影响的接口用例共 5 条:t002、t003、t005、t011、t013。上述用例在 Java 后端已能输出正确错误消息,问题在于未通过统一Result返回给 Apifox/前端。

1.3 功能测试结论

10 条核心功能用例全部通过。登录、路由守卫、编辑主流程、图片列表、退出登录、历史记录均正常。编辑页对「未选图」「未填指令」采用提交按钮禁用(disabled)的前置校验,与「提交后文字提示」等效,视为通过。

1.4 UI 自动化结论

3 条 Selenium 用例全部通过。覆盖密码登录成功、未登录访问受保护页拦截(含redirect)、退出登录后再次拦截,与手工用例 UI-01 / UI-02 / UI-09 对应。

1.5 性能测试结论

3 个 JMeter 场景均通过(数据以桌面性能测试/*/index.html为准)。覆盖登录鉴权尖峰、图片列表高并发读取、图片上传写路径。登录/上传错误率0%;列表错误率0.2%(500 样本中 1 条失败,整体仍达标)。上传平均约15.7s,为写路径性能关注点。


二、功能测试明细(浏览器手工)

用例编号模块用例标题优先级是否通过实际结果摘要
UI-01登录/路由未登录访问受保护页P0通过访问/edit正常跳转登录页
UI-02登录密码登录成功P0通过登录后进入编辑页,页面正常
UI-03登录密码登录失败提示P0通过密码错误有明确提示,无法进入系统
UI-04登录态刷新保持登录P0通过F5 刷新后仍保持登录状态
UI-05编辑未选图时不可提交P1通过未选图时提交按钮为 disabled,无法点击
UI-06编辑未填指令时不可提交P1通过未填指令时提交按钮为 disabled,无法点击
UI-07编辑正常编辑流程P0通过选图+指令后 loading → 正常展示结果图
UI-08我的图片列表展示P0通过已上传图片在列表中正常显示
UI-09登录/退出退出登录P0通过退出后回到登录页,无法再访问受保护页
UI-10历史记录编辑后有记录P1通过编辑成功后历史记录页有对应数据

说明:UI-05、UI-06 预期原为「提交后提示错误」;实测为「按钮前置禁用」,属合理交互设计,记通过


三、接口测试 — 缺陷汇总

BUG-001 缺少全局异常类,错误未统一封装为 Result(影响 t002、t003、t005)

用例Apifox 响应后端 Java 表现
t002 密码错误HTTP 500,Spring 默认 JSON控制台有「用户名或密码错误」
t003 账号为空HTTP 500,Spring 默认 JSON控制台有「账号不能为空」
t005 邮箱格式错HTTP 400,Spring 校验 JSON校验已触发,未返回 Result

BUG-002 必填 Authorization 缺失时 Spring 直接拦截(影响 t011、t013)

  • 现象:Apifox 收到 Spring 默认 400 Bad Request
  • 功能:未授权请求已拒绝(记通过(功能)

四、接口测试 — 受全局异常类影响用例(5 条)

用例编号用例标题是否通过
t002密码登录-密码错误不通过
t003密码登录-账号为空不通过
t005发送验证码-邮箱格式错误不通过
t011上传图片-无Token通过(功能)
t013我的图片列表-无Token通过(功能)

五、接口测试用例明细

用例编号所属模块用例标题优先级是否通过
t001用户模块密码登录-成功P0通过
t002用户模块密码登录-密码错误P0不通过
t003用户模块密码登录-账号为空P1不通过
t004用户模块发送验证码-成功P1通过
t005用户模块发送验证码-邮箱格式错误P1不通过
t006用户模块发送验证码-重复发送P1通过
t007用户模块退出登录-成功P0通过
t008文件模块上传图片-成功P0通过
t009文件模块上传图片-空文件P1通过
t010文件模块上传图片-非图片文件P1通过
t011文件模块上传图片-无TokenP0通过(功能)
t012文件模块我的图片列表-成功P0通过
t013文件模块我的图片列表-无TokenP0通过(功能)
t014文件模块图片编辑-成功P0通过
t015文件模块图片编辑-缺少指令P1通过
t016文件模块图片编辑-越权P0通过
t017文件模块图片合并-越权P0通过
t018文件模块文搜图-成功P1通过
t019记录模块历史记录-查询P1通过
t020鉴权模块Token失效-退出后访问P0通过

六、UI 自动化测试(Java + Selenium)

6.1 环境与工具

说明
被测地址http://8.134.217.89
技术栈Java、JUnit 5、Selenium、WebDriverManager、Chrome
测试账号testa / 123456
脚本auto001(密码登录)、auto002(未登录拦截)、auto003(退出后再拦截)

6.2 用例明细

用例编号模块用例标题优先级是否通过实际结果摘要
AUTO-01登录密码登录成功P0通过切换密码登录 Tab → 提交正确账号密码 → URL 含/edit,用户菜单可见
AUTO-02登录/路由未登录访问受保护页P0通过清空登录态后访问/edit→ 跳转/login,且 URL 带redirect
AUTO-03登录/退出退出后再次拦截P0通过登录 → 退出 → 再访/edit→ 再次跳转/login

6.3 用例步骤与预期

AUTO-01 密码登录成功(auto001)
步骤操作预期
1打开 http://8.134.217.89进入登录页
2点击「密码登录」Tab出现用户名、密码输入框
3输入 testa / 123456 并提交登录成功
4断言URL 包含/edit;右上角用户按钮存在
AUTO-02 未登录路由守卫(auto002)
步骤操作预期
1打开站点并清空 cookie / localStorage / sessionStorage处于未登录状态
2直接访问/edit被路由守卫拦截
3断言URL 包含/login,且包含redirect参数(如?redirect=/edit

说明:前端路由在未登录访问需鉴权页时执行next({ name: 'login', query: { redirect: to.fullPath } }),用于登录成功后回跳原页面,故 AUTO-02 断言redirect

AUTO-03 退出登录后未登录拦截(auto003)
步骤操作预期
1密码登录成功进入/edit登录态有效
2点击用户菜单 →「退出登录」回到/login
3再次访问/edit再次被拦截到/login
4断言当前 URL 包含/login(会话已失效)

6.4 与手工功能测试对应关系

UI 自动化对应手工用例说明
AUTO-01UI-02密码登录成功
AUTO-02UI-01未登录访问受保护页(自动化额外校验redirect
AUTO-03UI-09退出后无法再访问受保护页

七、性能测试(JMeter)

7.1 环境与工具

说明
被测地址http://8.134.217.89
工具Apache JMeter 5.5
压测机本地 Windows(约 16 逻辑处理器)
测试账号登录尖峰:loadtest01loadtest10(CSV 参数化);列表/上传(testa):登录取 JWT 后复用
通过标准错误率 ≤ 1%;核心读接口 P95 < 500ms;写接口以稳定性(低错误率)为主
结果来源桌面/性能测试/login-reportlist-reportupload-report的 HTML / statistics.json(2026-08-13 生成)

7.2 场景设计说明

从业务关键路径选取 3 类接口,避免只压单一 GET:

场景接口类型设计意图
PERF-01POST /api/user/auth鉴权入口模拟多人同时登录尖峰
PERF-02GET /api/file/my-images高频读编辑页/我的图片常调用;使用有图片数据账号
PERF-03POST /api/file/upload/image写路径验证 multipart 上传 + OSS/存储并发稳定性

7.3 场景明细与结果(以 HTML 报告为准)

PERF-01 登录鉴权尖峰
配置 / 结果
方法10 账号 CSV 参数化;多线程并发登录(含同步定时器尖峰)
HeaderContent-Type: application/json(无需 Token)
Body{"account":"${username}","password":"${password}"}
样本数500
平均 / 中位702.5 ms / 701 ms
最小 / 最大125 ms / 1312 ms
P90 / P95 / P991105.9 / 1145.8 / 1253.9 ms
错误率0.00%(0/500)
吞吐量43.5/sec
HTML性能测试/login-report/index.html
结论通过— 鉴权入口稳定无错误;P90 约 1.1s
PERF-02 图片列表高并发读取(有图数据)
配置 / 结果
方法前置登录提取 JWT → 全局属性传递 → 并发压列表
HeaderAuthorization: Bearer ${__P(token)}
样本数登录 1 + 列表500(合计 501)
登录耗时163 ms(错误率 0%)
列表平均 / 中位125.9 ms / 83 ms
列表最小 / 最大29 ms / 21029 ms(存在个别长尾)
列表 P90 / P95 / P99111 / 113 / 123 ms
列表错误率0.20%(1/500)
列表吞吐量22.7/sec
HTML性能测试/list-report/index.html
结论通过— P95 远低于 500ms;错误率 0.2% ≤ 1%,读接口表现良好
PERF-03 图片上传写路径
配置 / 结果
方法前置登录取 Token;multipart 上传test.jpg;参数名file
HeaderAuthorization: Bearer ${__P(token)}(Content-Type 由 JMeter 自动带 boundary)
样本数上传50
平均 / 中位15711 ms / 15690 ms(≈15.7 s)
最小 / 最大11005 ms / 21128 ms
P90 / P95 / P9919401 / 20391 / 21128 ms
错误率0.00%(0/50)
吞吐量0.26/sec
HTML性能测试/upload-report/index.html
结论通过(稳定性)— 全部成功;耗时长符合写 OSS/存储特征,为后续优化重点

7.4 结果对比摘要

场景样本(主接口)平均 RTP95错误率吞吐量结论
PERF-01 登录500702.5 ms1145.8 ms0%43.5/s通过
PERF-02 列表500125.9 ms113 ms0.2%22.7/s通过
PERF-03 上传5015711 ms20391 ms0%0.26/s通过(稳定性)

解读:列表读最快且 P95 很低;登录中等;上传最慢但零错误。三者形态差异符合「读轻、鉴权中、写重」预期。

7.5 与功能 / 接口测试对应关系

性能场景对应已有验证说明
PERF-01t001 / UI-02功能正确后,验证登录并发能力
PERF-02t012 / UI-08功能正确后,验证列表高并发读取
PERF-03t008功能正确后,验证上传写并发

八、改进建议

  1. 实现全局异常类,修复 t002、t003、t005、t011、t013 的响应封装
  2. 接口修复后对上述 5 条执行回归
  3. 功能 / UI 自动化 / 性能三类基线已建立,后续迭代可做对比回归
  4. 性能方面可选增强:排查列表 0.2% 失败与超长尾(max≈21s);优化上传耗时(P95≈20s);AI 编辑/合并仅做低并发基线

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询