Project

General

Profile

QA验收 #1 » final-report.md

Redmine Admin, 09/22/2026 11:53 AM

 

NDB 会议小程序全功能回归报告

  • 测试时间:2026-09-22,Asia/Shanghai
  • 环境:本地开发环境;微信开发者工具 iPhone 12/13 Pro 模拟器,SDK 3.16.3
  • 小程序:projects/mp/mp-conference,feat/meeting-v2-integration / 065a20b
  • BFF:projects/mp/mp-conference-api-v2,feature/migrate-legacy-mini-api / 0223ab5
  • Backend:projects/ndb/backend,feat/meeting-management / 3e60c89
  • 约束:未修改源码或配置,未提交、推送、部署或上传预览版;仅操作并收尾本地 QA 数据(含时间边界调整、临时绑定与恢复、偏好删除、取消及软删除)
  • 汇总:Pass 29 / Fail 0 / Blocked 2 / Skipped 1,共 32 条

关系与数据流

flowchart LR
  WX[微信用户] --> CU[BFF 渠道用户]
  CU -->|手机号匹配| CC[NDB 客户联系人]
  CC --> CO[客户公司]
  CO --> CT[有效合同]
  CO --> PJ[进行中项目]
  CC --> MR[会议报名]
  MT[会议] --> MR
  MR --> PT[客户应收 Task]
  CU --> FV[会议收藏]
  CU --> MS[纪要预约]
  MT --> FV
  MT --> MS
  MT --> ME[会议专家]
  TP[话题] --> TE[话题专家]
  TP --> TC[话题内容/会议纪要/报告]
  EP[公开专家资料] --> TE
  EP --> IR[专家访谈申请]
  CC --> IR

报名是生成客户应收 Task 的业务入口;收藏与纪要预约仅保存在 BFF 偏好数据中,不会创建或修改 Task。未进入结算时,成功取消只把报名置为 cancelled,不会删除或改写已创建 Task 的财务生命周期;已进入结算时,取消会被 SETTLEMENT_LOCKED 拒绝,需联系工作人员处理。

用例结果

编号 用例 层级 预期 实际 状态 证据
MP-AUTH-001 登录隐私同意门禁 小程序模拟器 未同意隐私政策不能登录 点击登录后出现隐私门禁;同意后才可继续 Pass 06-login-before.jpg、07-login-privacy-gate.jpg
MP-AUTH-002 微信登录与会话建立 小程序模拟器/接口 wx.login 后建立有效会话 登录成功,身份认证页可访问;敏感票据未落报告 Pass 08-login-result.jpg
MP-AUTH-003 联系人未匹配提示 小程序模拟器/接口 手机号无匹配联系人时给出明确错误 返回 404 CONTACT_NOT_FOUND,页面提示联系客户经理核对档案 Pass 09-auth-before-binding.jpg、10-auth-binding-result.jpg
MP-AUTH-004 真实手机号绑定联系人 9 微信能力/数据 微信手机号匹配后绑定联系人 9 当前真实微信手机号与本地测试联系人手机号不一致,不能真实完成绑定;仅为后续功能临时注入本地绑定,收尾已恢复 Blocked 环境数据限制;11-auth-bound-contact9.jpg 仅证明注入后的下游页面状态
MP-AUTH-005 退出登录 小程序模拟器 确认后清空客户端身份并回到未登录态 确认弹窗正常;退出后显示“登录后查看会议与收藏” Pass 34-logout-confirm.jpg、35-my-after-logout.jpg
MP-AUTH-006 未登录访问保护 小程序模拟器/接口 私有接口返回 401,页面引导登录 /users/me、会议报名接口均返回 401;详情显示“请先登录后报名参会” Pass 37-meeting74-logged-out.jpg
MP-NAV-001 首页与主导航 小程序模拟器 首页、敏思汇、敏思谈、我的可切换并加载 首页显示当天会议和最新内容,主页面均正常打开 Pass 19-home-authenticated.jpg、20-gather.jpg、21-talk-topics.jpg、28-my-authenticated.jpg
MP-CAL-001 日期与月份会议统计 接口 日/月筛选返回对应会议 date=2026-09-22 返回 1 条;month=2026-09 返回 3 条 Pass 接口响应摘要
MP-MTG-001 会议列表与详情 小程序模拟器/接口 可打开会议并显示状态、时间、专家和内容 会议 ID 4 正常显示;已结束会议关闭报名与参会入口 Pass 01-meeting-list.jpg、02-meeting-detail.jpg
MP-MTG-002 开放报名会议状态 小程序模拟器 未来会议显示未报名和报名入口,开始前隐藏参会链接 测试会议 74 显示“开放报名/未报名/报名参会”,参会链接不可见 Pass 12-meeting74-before-register.jpg
MP-REG-001 报名参会 小程序模拟器/接口 点击报名后状态变为已确认 页面显示“报名已确认”,后端生成报名 1 和 Task 124 Pass 13-meeting74-after-register.jpg
MP-REG-002 重复报名幂等 接口/数据库 重复请求不重复生成报名或 Task 重复请求返回同一报名 1;报名数仍为 1,Task 仍为 124 Pass 接口与数据库核对摘要
MP-REG-003 报名数据一致性 数据库 联系人、项目、合同和应收 Task 关联一致 联系人 9、项目 9、有效合同 3;Task 124 为 ongoing/unbilled/not_required Pass 数据库核对摘要
MP-REG-004 取消报名与重复报名规则 小程序模拟器/接口/数据库 未进入结算时可取消且不删除 Task;再次报名不新建 Task 且保持取消态 测试报名未进入结算,确认弹窗正常,取消接口返回 cancelled,页面显示“报名已取消”;Task 124 未变。服务层自动化覆盖再次报名仍保持 cancelled,并覆盖结算锁拒绝取消 Pass 17-meeting74-after-cancel.jpg;Backend 95 项测试
MP-REG-005 参会链接时间边界与复制 小程序模拟器/接口 开始前隐藏;进行中、报名确认、Task 有效、已配置链接且服务端授权后可见并可复制 测试数据满足全部授权条件,两个时间边界均符合;复制到剪贴板的 URL 与服务端一致 Pass 12-meeting74-before-register.jpg、18-meeting74-join-link.jpg
MP-PREF-001 收藏会议 小程序模拟器/数据库 收藏后按钮与收藏列表同步 页面显示“已收藏”,BFF 收藏记录存在 Pass 14-meeting74-favorite-subscribe.jpg、16-my-favorites.jpg
MP-PREF-002 预约会议纪要 小程序模拟器/接口 预约后按钮和订阅记录同步 页面显示“取消纪要预约”,订阅列表返回会议 74 Pass 14-meeting74-favorite-subscribe.jpg
MP-MY-001 我的会议 小程序模拟器/接口 已报名会议及状态可查询 列表显示会议 74 和已确认状态 Pass 15-my-meetings.jpg
MP-MY-002 我的收藏 小程序模拟器/接口 已收藏会议可查询 收藏列表显示会议 74 Pass 16-my-favorites.jpg
MP-TPC-001 话题列表与详情安全渲染 小程序模拟器/接口 Markdown/安全富文本按结构显示,不暴露标签源码 话题 ID 5 的段落、粗体、列表正常,未见 HTML/脚本源码 Pass 02-topic-detail.jpg、21-talk-topics.jpg
MP-TPC-002 历史危险 HTML 样本 数据条件 对真实 script/style/事件属性/javascript: 样本验证剥离 本地已发布话题无此类真实样本;按约束未修改存量数据造数 Skipped 数据分类摘要
MP-EXP-001 专家列表与详情 小程序模拟器/接口 专家页签、档案和可分享话题正常加载 专家页签加载 49 条;专家 49 详情正常 Pass 22-talk-experts.jpg、23-expert49-detail.jpg
MP-EXP-002 申请专家访谈 小程序模拟器/数据库 提交后产生待处理申请并反馈成功 成功弹窗出现,生成申请 1;收尾已置为 cancelled Pass 24-expert49-booking-result.jpg
MP-CONT-001 内容详情与不存在记录 小程序模拟器/接口 已发布内容可读,不存在 ID 显示稳定错误态 内容 1 正常显示;无效 ID 显示“内容不存在或尚未发布” Pass 25-content1-detail.jpg
MP-SRCH-001 会议/纪要/话题搜索与空结果 小程序模拟器/接口 三类搜索正确,空结果稳定 会议唯一命中、纪要和话题多项命中;不存在关键词显示“暂无数据” Pass 26-search-meeting.jpg、27-search-topic.jpg
MP-PROFILE-001 个人资料展示 小程序模拟器 显示认证、手机号、邮箱及合同校验状态 已认证状态正确;手机号已绑定,邮箱未提供,合同由服务端校验 Pass 29-my-profile.jpg
MP-PROFILE-002 昵称与头像暂不支持提示 小程序模拟器 不支持的编辑不能静默成功,应给出明确提示 昵称保存和头像选择均提示当前服务不支持,原资料未变 Pass 30-profile-edit-unsupported.jpg、31-profile-avatar-unsupported.jpg
MP-MSG-001 消息空状态 小程序模拟器/接口 无消息时显示明确空状态 页面显示“暂无消息”,接口总数为 0 Pass 32-message-empty.jpg
MP-PRIV-001 隐私政策 小程序模拟器 隐私页可进入且正文完整 页面正常加载,正文可滚动查看 Pass 33-privacy.jpg
MP-WEB-001 Web 容器 URL 绑定 小程序模拟器 编码 URL 正确传给 web-view https://example.com 正确写入 web-view src;开发工具域名限制下未把公网渲染结果作为通过依据 Pass 运行态 WXML 属性核对
MP-ERR-001 404 与断网恢复态 小程序模拟器/接口 不存在记录和网络超时均提供稳定错误页与重试入口 无效会议/话题显示记录不存在;暂停 BFF 后新版会议显示“请求超时,请稍后重试”,恢复后健康检查正常 Pass 03-topic-not-found.jpg、04-meeting-not-found-v2.jpg、36-network-error.jpg
MP-SHARE-001 微信分享面板 微信原生能力 首页、会议、话题、内容可拉起真实分享面板 分享 hooks 与参数有自动化/源码覆盖,但本轮自动化无法操作微信原生分享面板 Blocked Mini 自动化 61 项;原生能力限制

自动化与构建补充证据

  • Mini:node --test tests/*.test.cjs,61/61 通过。
  • BFF:npm test,5/5 suites、72/72 tests 通过。
  • Backend:python manage.py test api.meetings,95/95 通过,system check 0 issues。
  • 构建:yarn build:weapp:local 成功。仅有既有非阻断提示:caniuse-lite 过期、vendors.js 363 KiB 超出推荐值、无异步 chunk。
  • 本轮模拟器 console 的 error|warn|fail|deprecated 最终检索为空。

本地测试数据收尾

  • 会议 74 初建时间为 2026-10-22 17:46,截图 12、13 记录的是未来会议报名阶段;为验证“会议进行中才开放参会链接”,随后把开始时间调整为 2026-09-22 17:46 左右。因此截图与收尾数据库月份不同是明确的边界测试步骤,不是日期偏移缺陷。
  • 会议 74 QA-MP-FULL-20260922:已置 cancelled 且软删除。
  • 报名 1:已置 cancelled;关联 Task 124 按业务规则保留,状态仍为 ongoing/unbilled/not_required,金额 1000.00。
  • 专家访谈申请 1:已置 cancelled。
  • BFF 当前测试用户:临时联系人 9 绑定已恢复为 NULL;会议 74 的收藏和纪要订阅均已删除。
  • 联系人 9 是既有授权本地测试联系人,本轮未删除。

风险与结论

  • 无实际产品失败,因此未创建缺陷。
  • 真实微信手机号绑定联系人 9、微信原生分享面板仍受账号/自动化能力阻塞,不能以本地注入或源码检查冒充通过。
  • 其余计划内功能在当前本地候选版本上通过;自动化测试补充覆盖取消后再次报名不恢复、Task 不重复创建等领域规则。
(29-29/78)