Files
juzi/docs/线上闭环测试-2026-10-11.md

5.5 KiB
Raw Permalink Blame History

线上闭环测试(不含真实微信授权)

测试时间:2026-10-11;站点:https://1me.xajuzi.com/state/。

结论

真实线上测肤、完整报告存储与回看已跑通。测试使用项目自带的 C3 三视角示例照片和新建的独立浏览器身份,没有修改或删除既有用户报告。除明确标注的故障注入/演示测试外,真实闭环经过公网 HTTPS、nginx、生产 Node 服务和真实 Face++ 接口。

发现并修复

前端原先 45 秒取消测肤请求;后端两次 60 秒请求加 4 秒重试间隔,最长约 124 秒,导致网络慢或重试时前端提前失败。前端调整为 150 秒,与已部署的 nginx 150 秒超时配合,并新增请求成功、超时、过期响应丢弃及计时器清理回归测试。

线上已同步 h5/js/app.js,原文件备份为 /home/ubuntu/juzi-app-before-closedloop-20261011.js。静态 JS 响应 Cache-Control: no-cache。该超时修复已包含在提交 3dda4ec 中;本次将新增测试和记录同步纳入 Git,统一本地和线上版本。

话术及仓库同步

以线上提交 3dda4ec 中的最新 reference/AI测肤报告页话术修改.md 为准,其 SHA-256 与用户附件完全一致(c871de9ac3ddd40410653da904cb0b800e24bdf550df53d60602645bab2aafbb)。本地拉取时先备份并恢复了原有测试、文档及知识图谱改动,未丢弃未提交工作。

运行 python3 tools/build_report_copy.py 重新生成 h5/js/report-copy.js,将水分「改善」结论中的「水分分 {water_score}」同步到页面实际使用的话术。评分和推荐算法不变。部署后重启服务,让服务端新报告使用更新文案;已保存的历史报告继续读取原有快照。

已通过的检查

场景 验证方式与结果
核心评分 服务器运行 83 项引擎自测、86 项回归断言,全部通过
账号和报告 服务器隔离测试验证授权同意、CSRF、账号隔离、完整快照、最近 5 份、重启持久化、身份恢复及 OAuth 状态绑定/防重放
公网页面 Chromium 经真实 HTTPS 访问登录、首页、隐私协议、档案、报告列表和报告;320/390/480 宽度无横向溢出
三连拍与语音 模拟摄像头完整正脸→右脸→左脸流程;14 条音频可获取、引导顺序正确、三次完成播报、无语音截断
档案保护 未同意隐私协议不能继续;未填写档案不能启动拍摄
相机降级 注入相机拒绝及模型不可用,系统相机文件输入仍可完成三视角流程;坏图提示错误后可重新选择
真实测肤 三视角样例经页面压缩上传,真实 Face++ 返回成功,记录已完成,服务记录耗时 1281 ms,综合分 74
完整报告 七张检测图加载、七个标签切换、图片放大及浏览器返回通过;后端保存三张照片、完整可视化数据与文案
历史恢复 清除会话 Cookie 后由浏览器本地身份恢复;从服务端再次打开报告,七张图片与文案和首次展示逐项一致
历史异常 浏览器侧注入列表 503 错误,错误提示与刷新重试恢复正常
检测异常 浏览器侧分别注入业务失败、断网和超时,均关闭分析弹层、保留档案并允许重拍;不产生虚假报告
人脸模型 公网真实模型加载正常,示例图能实际识别人脸并输出 68 个关键点
权限隔离 匿名读报告 401,另一个已登录身份读测试报告 404;跨站检测请求 403;缺图请求 400
文件/后台保护 后台接口、后台页面需认证;数据、源码、编码斜杠访问被拒绝
服务状态 nginx 配置检查通过;nginx 和 juzi-h5 均 active;Node 仅监听 127.0.0.1:8080

真实调用记录:R20261011-193351-PD7P。本次只有一笔真实 Face++ 检测请求;故障测试不调用收费接口。测试报告保留在独立测试身份下,未清理或改写其他数据。

可复现命令

node h5/test/accounts.js
node h5/js/skin-score.js
node h5/test/regression.js
node h5/test/analyze-timeout.js
node h5/test/report-persistence.mjs
node h5/test/wechat-browser.mjs

BASE_URL=https://1me.xajuzi.com/state node h5/test/e2e-browser.mjs
H5_BASE_URL=https://1me.xajuzi.com/state/ H5_ARTIFACT_DIR=/tmp/juzi-production-ui-20261011 node h5/test/ui-20261009.mjs
H5_BASE_URL=https://1me.xajuzi.com/state/ node h5/test/browser-failures.mjs

# 显式开启:会新增独立测试身份和报告,并实际消耗一次 Face++ 调用。
RUN_LIVE_ANALYZE=1 H5_BASE_URL=https://1me.xajuzi.com/state/ node h5/test/production-loop.mjs

浏览器测试依赖全局 Playwright 和 Chromium。wechat-browser.mjs 使用隔离 HTTPS 及模拟微信响应,只验证我们的跳转、会话和身份流程,不代表真实微信授权通过。

本机截图/结果:/tmp/juzi-production-loop-LqVf32/、/tmp/juzi-production-ui-20261011/、/tmp/juzi-e2e-report.png。不记录身份凭证或密钥,不将报告快照/照片加入 Git。

验证边界

  • 真实微信授权尚未完成:后续用户提供 AppID/AppSecret 后已配置并启用;基础接口凭据校验受到 IP 白名单限制,网页授权换码负向测试正常,真实微信授权仍需客户端完成。详见微信部署记录。
  • 自动化不等同于真实手机相机验收。微信内置浏览器的权限、前后镜头、实际光线/姿态下自动抓拍和系统相机交互,需要最终真机验证。
  • 这次是功能闭环和异常恢复检查,不是高并发压力测试或完整安全审计。