Files
danyang-match/测试体系、验收标准与上线质量保障方案.md
T

45 KiB
Raw Permalink Blame History

丹阳公益婚恋服务平台

V1.0 测试体系、验收标准与上线质量保障方案

版本:V1.0
适用范围:微信小程序用户端、公益红娘工作台、运营管理后台、后端服务、数据库、实时消息、对象存储、风控与统计模块
核心目标:保证V1.0上线前“功能可用、状态正确、权限不越界、数据不重复、敏感信息不泄露、核心链路可恢复、上线后可快速定位问题”


第一章 测试总体目标

本项目测试不是简单确认:

页面能不能打开。

真正需要验证的是:

  1. 核心婚恋闭环是否完整
  2. 状态变化是否正确
  3. 并发情况下是否产生重复数据
  4. 用户隐私是否被严格隔离
  5. 后台工作人员是否会越权
  6. 拉黑、封禁、审核等状态是否即时生效
  7. 弱网和异常情况下数据是否仍一致
  8. 活动现场是否真正可执行
  9. 红娘工作流是否能连续使用
  10. 数据统计是否与业务真实数据一致

最终标准:

不是“没有明显Bug就上线”,而是核心业务链路在正常、异常、并发和越权场景下都可控。


第二章 测试体系总结构

V1.0测试体系分为:

01 单元测试
02 Service业务规则测试
03 API接口测试
04 数据库约束测试
05 状态机测试
06 并发与幂等测试
07 前端功能测试
08 实时聊天测试
09 权限与越权测试
10 隐私与敏感数据测试
11 安全测试
12 活动现场测试
13 红娘SOP测试
14 风控流程测试
15 数据统计口径测试
16 性能测试
17 兼容性测试
18 灾备与恢复测试
19 上线前回归测试
20 上线Go/No-Go验收

第三章 测试环境划分

建议至少:

development
test
staging
production

第四章 Development

用途:

开发人员本地开发。

可以使用:

  • 模拟微信用户
  • 模拟实名认证
  • 测试对象存储
  • 测试数据库

禁止使用真实生产身份证等敏感数据。


第五章 Test环境

用途:

  • 自动化测试
  • QA测试
  • 接口测试
  • 并发测试

必须允许:

数据随时重置。


第六章 Staging预发布

必须尽可能接近Production:

同版本数据库
同Redis结构
同对象存储策略
同Nginx
同Docker部署
同权限配置

第三方实名、微信能力可以使用:

官方测试环境或受控测试账号。


第七章 Production

生产数据:

不用于普通开发测试。

线上故障复现:

优先使用:

  • 日志
  • RequestId
  • Audit
  • 脱敏数据

第八章 测试账号体系

必须提前准备标准测试账号。

例如:

U001 新用户
U002 已绑定手机号未实名
U003 已实名资料未完成
U004 审核中
U005 审核通过正常用户
U006 paused用户
U007 getting_to_know用户
U008 successful用户
U009 limited用户
U010 banned用户

第九章 关系测试用户

至少:

A neutral B
C liked D
D liked C
E blocked F
G active match H
I unmatched J
K successful L

方便快速测试状态。


第十章 后台测试账号

必须分别准备:

super_admin
platform_admin
organization_admin_A
organization_admin_B
reviewer
matchmaker_A
matchmaker_B
activity_manager
risk_operator
volunteer
data_viewer

不能只拿超级管理员测所有后台。


第十一章 测试数据生成

建议开发:

seed:test

或对应脚本。

自动生成:

  • 不同年龄
  • 不同性别
  • 不同婚姻状态
  • 不同择偶条件
  • 不同审核状态
  • Match
  • Conversation
  • Activity
  • Report
  • MatchmakerService

第十二章 核心端到端测试链路

V1最重要的第一条E2E:

微信登录
↓
手机号
↓
实名认证
↓
填写资料
↓
设置择偶条件
↓
提交审核
↓
后台审核通过
↓
首页推荐
↓
用户详情
↓
Like
↓
另一方Like
↓
Mutual Match
↓
聊天

此链路必须:

100%可通过。


第十三章 第二核心E2E:红娘

用户申请红娘
↓
后台分配
↓
红娘查看服务
↓
系统生成候选
↓
红娘推荐
↓
用户查看
↓
Like
↓
Mutual
↓
服务跟进
↓
完成服务

第十四章 第三核心E2E:活动

后台创建活动
↓
发布
↓
用户报名
↓
人工审核
↓
报名通过
↓
签到
↓
活动结束
↓
提交反馈
↓
活动互选
↓
双向互选
↓
创建Match
↓
聊天

第十五章 第四核心E2E:风控

用户举报
↓
Report创建
↓
风控处理
↓
RiskAction
↓
账号受限
↓
聊天即时禁止
↓
推荐即时排除
↓
用户申诉
↓
人工复核
↓
撤销/维持

第十六章 单元测试范围

重点Service:

MatchEligibilityService
RequiredConditionService
DirectionalScoringService
MutualScoringService
MessagePermissionService
ActivityEligibilityService
RiskStatusService
PermissionService
DataScopeService

第十七章 匹配算法单元测试

必须覆盖:

年龄边界
身高边界
地区
婚姻状态
子女情况
学历
吸烟
饮酒
婚姻计划
定居意愿
兴趣
Null
Required
Preferred

第十八章 Required测试

例如:

A:

年龄30~35 required

B=35:

通过。

B=36:

Reject。

不能进入后续评分。


第十九章 双向Required测试

A接受B
B不接受A

最终:

Reject。


第二十章 MutualScore测试

输入:

AB = 92
BA = 78

验证:

0.6×78 + 0.4×85

结果符合公式。


第二十一章 推荐理由测试

输入条件真实匹配:

生成对应理由。

不能生成资料中不存在的:

“双方都喜欢旅行”。


第二十二章 Service测试原则

业务Service测试重点:

状态变化和副作用。

例如Like:

不仅检查:

like插入成功

还要检查:

reverse like存在时创建Match
Conversation创建
Members创建

第二十三章 API测试

所有API至少覆盖:

正常请求
缺少Token
Token过期
参数缺失
参数越界
业务状态错误
资源不存在
权限不足
重复请求

第二十四章 API响应格式测试

所有API错误必须符合:

{
  "success": false,
  "code": "...",
  "message": "...",
  "data": null
}

不能某接口返回:

500 Internal Error

另一个返回:

{"msg":"error"}

第二十五章 RequestId测试

每个请求:

必须能够获得RequestId。

错误日志能通过RequestId追踪。


第二十六章 登录测试

覆盖:

  • 正常微信登录
  • 无效code
  • code重复
  • 微信接口失败
  • banned账号
  • closed账号
  • Token refresh
  • logout
  • Session撤销

第二十七章 手机绑定测试

覆盖:

  • 正常手机号
  • 已绑定手机号
  • 同手机号重复绑定
  • 无效手机号
  • 短信验证码错误(若启用)
  • 微信phoneCode失效

第二十八章 实名认证测试

覆盖:

合法身份
姓名不一致
身份证格式错误
未成年
重复身份证
第三方超时
重复提交

第二十九章 实名测试特别要求

必须确认:

实名失败日志中没有完整身份证。

数据库中:

没有明文身份证。


第三十章 资料填写测试

覆盖:

  • 每个字段正常值
  • 最大/最小值
  • 字典非法值
  • selfIntro为空
  • selfIntro超长
  • 联系方式
  • 特殊字符
  • Emoji
  • XSS文本

第三十一章 图片测试

覆盖:

正常JPEG
PNG
伪装EXE.jpg
超大文件
异常MIME
损坏图片
带EXIF GPS图片
重复上传

必须确认:

EXIF按设计处理。


第三十二章 审核状态机测试

覆盖:

not_submitted → pending
pending → processing
processing → approved
processing → need_edit
processing → rejected
need_edit → pending

第三十三章 非法审核迁移测试

例如:

approved → processing

由普通审核接口请求。

必须:

拒绝。


第三十四章 审核并发领取

模拟:

10个审核员同时领取同一任务。

最终:

1人成功
9人失败

不能出现多个assigned_operator。


第三十五章 审核处理中修改资料

用户尝试修改正在审核字段。

必须按既定规则:

禁止或进入明确版本机制。

不能造成审核内容变化却仍然批准旧任务。


第三十六章 推荐资格测试

以下用户绝不能进入推荐:

未实名
审核中
审核拒绝
paused
successful
banned
closed
blocked

第三十七章 推荐冷却测试

A Pass B。

下一次推荐:

B被排除。

冷却到期后的行为:

根据配置恢复。


第三十八章 推荐缓存失效测试

缓存已有B。

B随后:

paused

A再次获取推荐:

不得返回B。


第三十九章 Like正常测试

A Like B:

liked = true
mutual = false

第四十章 双向Like测试

B先Like A。

A再Like B。

最终:

1 Match
1 Conversation
2 ConversationMembers

第四十一章 同时Like并发测试

A与B同时发送。

循环至少:

100~1000次并发场景。

每轮必须:

只产生1个Match

第四十二章 重复Like幂等

同一个:

Idempotency-Key

重复10次。

最终:

一个Like结果。


第四十三章 取消Like测试

未Mutual:

可取消。

已Mutual:

必须拒绝,要求Unmatch。


第四十四章 Block测试

A Block B后:

必须同时验证:

  • B不能Chat A
  • A/B推荐互相排除
  • Search排除
  • 红娘候选排除
  • Conversation不可发送

第四十五章 Unblock测试

解除后:

  • 不自动恢复Like
  • 不自动恢复Match
  • Conversation仍不可自动恢复

第四十六章 Unmatch测试

任一方解除:

match → unmatched
conversation.canSend = false

另一方下一条消息:

必须失败。


第四十七章 Success测试

A发起。

B确认。

最终:

match successful
双方relationship_status更新
停止新推荐

第四十八章 Success拒绝测试

A发起。

B拒绝。

不能:

成功状态生效。


第四十九章 Success与Unmatch并发

A发Success。

同时B Unmatch。

最终必须只有一个合法业务状态。

不可出现:

match = successful
conversation = unmatched

互相矛盾。


第五十章 聊天权限测试

必须覆盖:

neutral
single like
active match
unmatched
blocked
banned
paused
successful

确认每种状态canSend正确。


第五十一章 Paused聊天测试

用户暂停寻找:

已有active Match聊天仍正常。

这是明确业务规则。


第五十二章 Successful聊天测试

成功牵手:

已有双方Conversation仍可保留。

不能因为成功就突然断聊。


第五十三章 消息幂等测试

服务端已经保存。

客户端超时重试相同:

clientMessageId

最终:

数据库仅一条。


第五十四章 消息顺序测试

高频连续发送:

M1 M2 M3 M4

客户端最终顺序稳定。


第五十五章 弱网测试

模拟:

3G
高延迟
30%丢包
临时断网
网络切换

确认:

  • 草稿不丢
  • 重试不重复
  • 历史最终一致

第五十六章 WebSocket断线重连测试

场景:

WS断开
↓
对方发送5条
↓
重新连接

客户端最终:

5条全部可恢复。


第五十七章 后台切换测试

微信小程序:

进入后台5分钟
↓
重新打开

需要:

  • WS恢复
  • 未读恢复
  • 状态刷新

第五十八章 实时封禁测试

A正在聊天。

后台封禁A。

A不刷新页面直接发送。

必须:

发送失败。

不能等重新登录。


第五十九章 实时Block测试

A/B都在线。

B Block A。

A立即发送:

必须失败。


第六十章 消息限频测试

模拟:

1秒100条

必须触发:

Rate Limit。

同时普通连续发送:

5~10条短消息

不能明显误伤。


第六十一章 重复群发测试

同一用户向多个Match发完全相同广告话术。

系统:

生成Spam风险。


第六十二章 Risk关键词测试

普通:

“我在银行工作。”

不能直接封禁。

明显:

“转钱给我投资”

应触发:

风险提醒/事件。


第六十三章 图片消息测试

覆盖:

  • 上传成功发送
  • 上传失败
  • 上传成功但消息失败
  • 图片权限失效
  • 被Block后发送图片
  • 恶意文件

第六十四章 系统通知测试

必须测试:

审核通过
审核退回
Mutual Match
红娘推荐
活动批准
活动取消
账号受限

每个通知:

  • 正确用户
  • 正确业务ID
  • 不重复

第六十五章 Notification幂等

同一个业务事件重复消费:

用户只收到一个正式通知。


第六十六章 活动创建测试

覆盖:

  • 合法时间
  • 开始>结束
  • 报名结束>活动开始
  • 空标题
  • 无组织
  • 无人数限制
  • 无规则

第六十七章 活动状态测试

draft → open
open → closed
closed → ongoing
ongoing → ended

非法逆转:

拒绝。


第六十八章 活动报名测试

覆盖:

正常用户
未实名
未审核
年龄不符
活动关闭
重复报名
名额已满

第六十九章 Pending名额测试

假设:

总名额10
pending 100
approved 9

仍只能再批准:

1人。


第七十章 活动最后名额并发

模拟:

50个审核请求同时批准最后1个名额。

最终:

1 approved
49 ACTIVITY_FULL

第七十一章 性别名额测试

如果开启:

male_limit = 10

第11名男性:

GENDER_QUOTA_FULL。

同时女性名额不受错误影响。


第七十二章 用户取消与审核并发

用户正在取消pending。

审核员同时approve。

最终只能出现:

一个确定状态。

不能既approved又cancelled逻辑冲突。


第七十三章 活动取消并发

活动管理员取消活动时:

用户同时提交报名。

报名必须:

失败。


第七十四章 签到测试

覆盖:

正常Token
Token过期
Token篡改
错误activity
非approved
重复签到

第七十五章 重复签到

返回:

已签到。

而不是500。


第七十六章 手工签到测试

检查:

  • 操作人记录
  • Audit
  • 重复防护

第七十七章 活动互选测试

A选B:

B看不到。

B选A:

生成Match。


第七十八章 多人互选限制

如果配置:

maxSelections = 3

提交4人:

拒绝。


第七十九章 互选对象越权测试

用户修改targetId:

指向未参加该活动用户。

必须拒绝。


第八十章 Block与互选

A Block B。

即使旧页面存在B:

提交:

拒绝。


第八十一章 活动已有Match测试

A/B已有Match。

活动再次互选:

不创建重复Match。


第八十二章 活动Unmatch后重新互选

按照最终实现的“重新激活原Match/创建历史事件”逻辑测试。

要求:

历史不丢,关系不重复。


第八十三章 红娘申请测试

覆盖:

正常申请
重复同类型active服务
paused用户
banned用户
successful用户

第八十四章 红娘接单并发

10位红娘同时Claim。

最终:

1位成功。


第八十五章 红娘候选测试

候选必须排除:

  • Required冲突
  • Block
  • paused
  • banned
  • successful
  • 当前不可推荐

第八十六章 红娘越权候选测试

红娘不能:

手工绕过系统提交任意targetUserId。

服务端仍校验。


第八十七章 红娘推荐重复测试

已推荐且用户已Pass的候选:

系统应提示历史。

按规则禁止/提示重复。


第八十八章 红娘查看聊天测试

Matchmaker角色请求聊天正文:

403。

必须验证。


第八十九章 红娘查看身份证测试

403。


第九十章 红娘替用户Like测试

不存在此权限/API。

如果构造调用:

拒绝。


第九十一章 红娘联系意向对象测试

V1保守方案:

A明确申请。

系统向B发中性通知。

必须确认:

  • 不泄露B联系方式
  • B可拒绝
  • B拒绝后不重复骚扰

第九十二章 红娘风险转交测试

红娘创建风险转交后:

  • 产生RiskEvent
  • 红娘不能自行Ban
  • 风控可继续处理

第九十三章 举报正常测试

覆盖类型:

虚假资料
婚姻状态疑似虚假
骚扰
诈骗
金钱诱导
广告
冒充他人
其他

第九十四章 举报隐私测试

被举报用户:

不得知道举报人身份。


第九十五章 举报证据权限测试

仅:

risk.evidence.view

可查看。

红娘、活动管理员:

403。


第九十六章 举报处理测试

结果:

confirmed
rejected
insufficient_evidence

分别验证。


第九十七章 Report与RiskAction分离测试

举报成立:

不代表必然ban。

例如:

confirmed + warning

应合法。


第九十八章 多RiskAction测试

用户同时有:

message_limit
temporary_suspend

撤销一个以后:

不能简单恢复normal。

必须根据剩余Action重新计算。


第九十九章 申诉测试

覆盖:

pending
processing
approved
rejected

approved:

正确撤销对应Action。


第一百章 权限测试总体要求

权限测试必须以:

“默认拒绝”

为原则。

测试不仅看菜单隐藏。

必须直接构造HTTP请求。


第一百零一章 RBAC测试

每个角色访问每类资源。

形成正式:

Permission Test Matrix。


第一百零二章 组织越权测试

机构A管理员:

请求机构B:

activity
matchmaker service
operator

必须:

403。


第一百零三章 Assigned Scope测试

红娘A:

尝试访问红娘B服务。

没有授权:

拒绝。


第一百零四章 Activity Scope测试

志愿者只分配活动X。

访问活动Y签到名单:

403。


第一百零五章 敏感权限测试

没有:

user.sensitive.identity.full

不能通过:

  • API
  • 下载
  • URL参数

获得完整身份证。


第一百零六章 权限修改实时测试

管理员撤销权限。

旧Token继续请求:

应立即/短时内失效。

不能必须退出重登才生效。


第一百零七章 Operator Disabled测试

账号已登录。

后台管理员Disable。

下一API:

拒绝。


第一百零八章 角色自提权测试

organization_admin请求给自己:

super_admin

必须:

拒绝并Audit。


第一百零九章 IDOR专项测试

必须重点覆盖:

/users/{userId}
/conversations/{id}
/reports/{id}
/activities/{id}/registration
/matchmaker/services/{id}
/admin/users/{id}

手工替换ID。


第一百一十章 用户资料IDOR

A通过修改ID尝试看:

被B Block后的B详情。

必须:

TARGET_UNAVAILABLE/403。


第一百一十一章 Conversation IDOR

A不属于Conversation。

访问:

403。


第一百一十二章 Checkin Token IDOR

Token不可通过:

修改userId

伪造其他签到。

签名必须验证。


第一百一十三章 隐私测试总目标

必须保证:

“知道某个资源ID”不等于“拥有访问权”。


第一百一十四章 隐私字段测试

PublicProfile不得返回:

real_name
id_number
phone
exact_address

第一百一十五章 SelfProfile测试

允许:

phoneMasked

但仍不返回完整身份证。


第一百一十六章 Matchmaker DTO测试

不得包含:

idNumber
chatContent
riskEvidence

第一百一十七章 活动签到DTO测试

只返回签到必要信息。


第一百一十八章 日志泄露测试

主动触发:

  • 实名错误
  • Token错误
  • SQL错误
  • 上传错误

然后检查日志。

不得出现:

  • 完整身份证
  • 密码
  • Token
  • 聊天正文

第一百一十九章 对象存储测试

测试用户图片:

直接访问Bucket URL。

必须:

不能Public Read。


第一百二十章 Signed URL测试

过期后:

无法继续访问。


第一百二十一章 文件越权测试

A拿到B fileId。

调用access-url。

若当前业务无权限:

拒绝。


第一百二十二章 安全测试范围

上线前至少进行:

认证绕过
授权越权
SQL注入
XSS
CSRF(Web)
CORS
文件上传
Token重放
暴力登录
接口限流
ID枚举
敏感数据泄露
对象存储权限

第一百二十三章 SQL注入测试

所有:

  • 搜索
  • Filter
  • 用户输入
  • 后台Query

尝试经典注入Payload。

必须:

参数化安全。


第一百二十四章 XSS测试

向:

selfIntro
activityDescription
feedback
reportDescription
matchmakerFollowup

写入恶意HTML/Script。

前端:

必须转义。


第一百二十五章 CORS测试

管理后台API:

只允许正式授权Origin。

不能:

*

配合敏感凭证。


第一百二十六章 暴力登录测试

后台连续错误密码。

必须:

限频/锁定。


第一百二十七章 Rate Limit测试

重点接口:

login
real-name
like
message
report
upload

第一百二十八章 CSRF测试

如后台采用Cookie认证:

必须验证CSRF。

如采用Bearer:

重点验证:

  • Token存储
  • XSS
  • CORS

第一百二十九章 前端兼容性测试

微信小程序至少测试:

  • iOS微信主流版本
  • Android微信主流版本

尤其:

  • 登录
  • 手机号
  • 图片上传
  • WebSocket
  • 二维码

第一百三十章 屏幕适配

至少:

320px
375px
390px
430px

重点检查:

  • BottomTab
  • Dialog
  • 长文字
  • 表单
  • 聊天Input

第一百三十一章 大字体测试

用户系统字体放大后:

  • 文字不能被严重截断
  • 关键按钮仍可操作

第一百三十二章 后台浏览器

建议支持:

  • Chrome
  • Edge

近期主流版本。

V1不需要兼容IE。


第一百三十三章 后台分辨率

重点:

1366×768
1920×1080

响应式支持更宽屏。


第一百三十四章 空状态测试

每个列表必须测试:

0数据。

例如:

  • 无推荐
  • 无消息
  • 无活动
  • 无红娘服务
  • 无举报
  • 无审核

不能显示空白页。


第一百三十五章 加载状态测试

网络慢时:

Skeleton/Loading正确。

不能用户连续重复点击造成重复业务动作。


第一百三十六章 网络错误测试

API 500/Timeout:

页面应:

  • 提示
  • 可重试
  • 不破坏已有数据

第一百三十七章 表单防重复提交

按钮提交后:

Loading + 防双击。

但最终仍需服务端幂等。


第一百三十八章 草稿恢复测试

Onboarding填写一半退出。

重新进入:

能恢复安全草稿。

敏感身份证:

不应长期保存在本地草稿。


第一百三十九章 前端路由状态测试

必须覆盖启动时:

未登录
未绑定
未实名
资料未完成
审核中
need_edit
approved
banned
paused
successful

进入正确页面。


第一百四十章 Deep Link/分享访问测试

如果用户通过活动分享链接进入:

未登录时:

登录
↓
恢复到活动

不能登录后丢失原目标。


第一百四十一章 redirectAfterLogin安全测试

传恶意外部URL:

必须被白名单拒绝。


第一百四十二章 数据统计测试

每个正式指标:

必须有测试数据集和预期数字。


第一百四十三章 注册漏斗测试

构造:

注册10
实名7
提交5
通过4

验证全部页面一致。


第一百四十四章 Match统计测试

2个Like:

1个Mutual Match。

不能统计成2。


第一百四十五章 Chat Started测试

仅SystemMessage:

0。

真实用户消息:

+1。


第一百四十六章 Two-Way Chat测试

A发1条:

0。

B回复:

+1。


第一百四十七章 Activity统计测试

申请100
通过90
签到80

Attendance:

80 / 90

第一百四十八章 Activity双向意向

10对Mutual:

Mutual Pair=10。

不是:

20对。


第一百四十九章 Red Matchmaker统计

红娘看20候选。

正式推3人。

Recommendation:

3。


第一百五十章 举报统计

10条举报:

6 confirmed
2 rejected
2 insufficient

Confirmed Rate:

6/10

如果全部已完成。


第一百五十一章 Dashboard一致性

同日期条件:

Overview
Matches Analytics
Activity Analytics

引用同指标时必须相同。


第一百五十二章 Summary重算测试

先生成昨日汇总。

修改测试数据后运行:

rebuildMetrics

结果:

与业务表重新一致。

不能累加重复。


第一百五十三章 时区测试

23:59与00:01产生的事件:

必须正确归属:

Asia/Shanghai自然日。


第一百五十四章 性能测试目标

前面定义的性能数值属于建议目标。

V1建议验证:

普通核心API P95 < 500ms
Recommendation P95 < 1.5s
Dashboard P95 < 2s

具体最终SLA可在上线前根据基础设施确认。


第一百五十五章 性能测试用户规模建议

早期可模拟:

1万用户
5万用户

数据库数据量。

并模拟:

100~300并发

核心API。

不需要一开始测试百万并发。


第一百五十六章 推荐性能测试

候选池:

100
500
1000
5000

分别测试。

确保SQL先过滤。


第一百五十七章 Message性能测试

至少模拟:

数十至数百同时在线连接。

验证:

  • Send
  • Push
  • Reconnect

V1不需要做超级IM压力测试。


第一百五十八章 Activity并发重点

真正需要高并发保证的是:

最后名额。

即使整体QPS不高:

事务一致性必须正确。


第一百五十九章 数据库性能测试

重点SQL必须执行:

EXPLAIN ANALYZE

检查:

  • 推荐初筛
  • 消息分页
  • 审核待办
  • 举报待办
  • 活动报名
  • Dashboard聚合

第一百六十章 N+1测试

例如推荐列表6人:

不能产生:

几十/上百条SQL。


第一百六十一章 数据库约束测试

手工绕过Service插入:

  • 重复Match
  • 重复ActivityRegistration
  • 重复clientMessageId
  • self relation

数据库应尽量拒绝。


第一百六十二章 Redis故障测试

停Redis。

必须判断:

哪些功能可降级。

例如:

核心数据库业务仍应尽量工作。

不能Redis一挂:

数据全部丢失。


第一百六十三章 Recommendation Cache Redis故障

可以:

回数据库实时计算/返回暂时不可用。

不能把Redis当正式推荐关系数据源。


第一百六十四章 WebSocket Redis故障

如果单实例:

可能仍可工作。

如果多实例:

实时跨实例受影响。

消息仍然:

已落PostgreSQL。

用户重新拉取应恢复。


第一百六十五章 对象存储故障测试

图片暂时无法上传。

文字资料:

不应全部瘫痪。

页面提示:

图片服务暂时不可用。


第一百六十六章 第三方实名认证故障

第三方超时:

用户看到:

认证服务暂时不可用,请稍后重试。

不能:

把用户标记为认证失败欺诈。


第一百六十七章 微信API故障

外部服务失败:

  • 记录
  • 合理提示
  • 不泄露技术错误

第一百六十八章 灾备测试

至少验证:

数据库备份
恢复
对象存储恢复/版本
配置恢复

第一百六十九章 数据库恢复测试

不是只确认:

有备份文件。

必须定期:

在测试环境实际恢复。


第一百七十章 备份恢复验收

恢复后检查:

users
matches
messages
activities
reports
audit

关键关联完整。


第一百七十一章 部署回滚测试

必须提前验证:

新版本部署
↓
发现问题
↓
回滚上一版本

数据库migration也要考虑兼容。


第一百七十二章 Migration测试

所有Migration:

在空数据库跑一遍。

同时:

从上一版本数据库升级一遍。


第一百七十三章 Migration不可破坏性原则

正式上线前:

避免直接:

DROP COLUMN

导致旧版本无法运行。

采用:

先新增
双版本兼容
后续再清理

第一百七十四章 Staging上线演练

正式生产前至少完整跑一次:

部署
↓
Migration
↓
Seed必要配置
↓
健康检查
↓
核心E2E
↓
回滚演练

第一百七十五章 健康检查

建议:

/health/live
/health/ready

检查:

  • App
  • PostgreSQL
  • Redis
  • Object Storage关键连通状态(可适度)

第一百七十六章 Smoke Test

每次发布后立即执行:

登录
查看首页
用户详情
Like测试账号
聊天
后台登录
审核列表
活动列表

控制在几分钟内完成。


第一百七十七章 自动化测试优先级

必须自动化:

Match算法
状态机
API权限
幂等
关键数据库约束

第一百七十八章 不要求所有UI自动化

微信小程序完整UI自动化维护成本高。

V1可以:

核心E2E少量自动化 + QA人工回归。


第一百七十九章 推荐自动化测试比例

核心后端:

尽量高覆盖。

尤其:

  • Match
  • Relationship
  • Risk
  • Permission

不是单纯追求代码覆盖百分比。


第一百八十章 测试覆盖率原则

不要:

为80%覆盖率写无意义测试。

更重要:

高风险业务路径全部覆盖。


第一百八十一章 Bug严重级别

建议:

P0 Blocker
P1 Critical
P2 Major
P3 Minor
P4 Suggestion

第一百八十二章 P0 Blocker

例如:

  • 无法登录
  • 无法实名认证
  • Match核心链路断裂
  • 数据库严重损坏
  • 大规模敏感数据泄露
  • 权限系统完全失效

结论:

禁止上线。


第一百八十三章 P1 Critical

例如:

  • 未Mutual可以聊天
  • Block后仍可聊天
  • 红娘能看到身份证
  • 普通用户可读他人Conversation
  • 活动严重超卖
  • 重复生成Match
  • 封禁用户仍可推荐

结论:

必须修复后上线。


第一百八十四章 P2 Major

例如:

  • 某筛选条件失效
  • 某统计数字错误
  • 图片重试异常
  • 活动通知漏发但报名成功

一般:

核心影响较大,应上线前尽量清零。


第一百八十五章 P3 Minor

例如:

  • 局部UI错位
  • 非关键文案
  • 少量动画问题

可评估是否延后。


第一百八十六章 Bug修复要求

修复:

必须有Regression Test。

不能:

修完手点一下就关闭Bug。


第一百八十七章 缺陷模板

建议记录:

标题
环境
账号
前置条件
操作步骤
实际结果
预期结果
截图/RequestId
严重级别

第一百八十八章 UAT用户验收

除了技术测试,还需要:

实际运营人员验收。

包括:

  • 审核员
  • 红娘
  • 活动人员
  • 管理员

第一百八十九章 审核员UAT

给审核员:

20~50条测试审核任务。

确认:

  • 是否知道哪里处理
  • 原因是否好选
  • 能否快速完成
  • 是否容易误操作

第一百九十章 红娘UAT

给红娘一批模拟用户。

任务:

接单
查看需求
看候选
推荐
跟进
完成服务

观察:

是否需要额外Excel/纸笔才能完成。

如果需要:

工作台还不完整。


第一百九十一章 活动管理员UAT

完整演练:

创建活动
报名
审核
最后名额
签到
现场异常
反馈
互选

第一百九十二章 志愿者UAT

找一个不了解系统的志愿者。

只给简单培训。

验证:

是否能完成签到。

如果签到必须专业IT人员操作:

设计失败。


第一百九十三章 风控员UAT

模拟:

  • 骚扰举报
  • 诈骗举报
  • 无证据举报
  • 申诉

确认:

处理链路清晰。


第一百九十四章 普通用户UAT

至少覆盖不同年龄和数字化能力用户。

重点测试:

注册
资料
择偶条件
推荐
Like
聊天
活动
红娘

第一百九十五章 用户UAT核心判断

不只是问:

“喜欢吗?”

更应该观察:

  • 会不会用
  • 会不会迷路
  • 是否知道下一步
  • 是否理解必须/最好
  • 是否误解推荐等级
  • 是否知道怎么拉黑举报

第一百九十六章 易用性验收

核心操作:

尽量不超过3步。

例如Like:

推荐 → 详情 → 喜欢

第一百九十七章 文案验收

重点检查:

是否存在商业婚恋套路。

禁止:

  • 桃花爆棚
  • 优质男神
  • 高价值女性
  • VIP
  • 成功率92%

第一百九十八章 合规文案验收

不能出现:

100%真人
100%单身
婚姻状态已官方验证
绝对安全

第一百九十九章 实名标识验收

只能表达:

已实名。

不能让用户理解为:

全部婚恋资料官方真实。


第二百章 数据删除/注销验收

测试账号注销。

必须确认:

  • 不再推荐
  • 不再搜索显示
  • 不能新聊天
  • 红娘服务停止
  • 未开始活动按规则取消
  • 历史业务关系不崩溃

第二百零一章 隐私设置验收

关闭:

visibleInSearch

必须不再Find。

关闭:

visibleInRecommendations

必须不被推荐。


第二百零二章 隐私状态缓存测试

修改隐私后:

旧缓存立即不再暴露。


第二百零三章 Audit验收

随机执行:

审核
Ban
活动取消
权限修改
敏感查看

后台必须可以查到:

谁、什么时候、做了什么。


第二百零四章 SensitiveAccess验收

查看实名敏感信息。

必须产生:

operator
user
reason
time

第二百零五章 安全事件演练

上线前建议至少桌面演练一次:

“如果用户身份证数据疑似泄露怎么办?”

团队必须知道:

谁负责
怎么停服务
怎么查影响
怎么保留证据
怎么修复
怎么通知/报告

第二百零六章 生产监控

上线后至少监控:

API 5xx
API P95
数据库连接
CPU
内存
磁盘
Redis
WebSocket
登录失败
第三方实名认证失败率
对象存储错误

第二百零七章 业务监控

重点:

登录成功率
实名认证成功率
审核积压
推荐失败率
Match创建异常
消息失败
活动报名异常
举报积压

第二百零八章 告警分级

建议:

SEV1
SEV2
SEV3

第二百零九章 SEV1

例如:

  • 大面积无法登录
  • 数据库不可用
  • 敏感数据泄露
  • 权限绕过
  • 大量Match重复

立即处理。


第二百一十章 SEV2

例如:

  • 推荐模块大面积异常
  • 聊天大面积失败
  • 活动报名不可用

第二百一十一章 SEV3

例如:

  • 单个非核心统计异常
  • 局部UI问题

第二百一十二章 上线方式

建议V1采用:

小范围灰度 → 扩大。

不要第一天就:

全丹阳大规模宣传。


第二百一十三章 第一阶段灰度

建议:

内部工作人员
+
少量受邀真实用户

例如:

数十人。

验证:

  • 真实资料填写
  • 审核
  • 推荐
  • Like
  • Chat

第二百一十四章 第二阶段灰度

扩大:

数百人。

加入:

  • 公益红娘
  • 第一场小规模活动

第二百一十五章 第三阶段

确认:

  • 核心错误稳定
  • 用户池可用
  • 风控流程可运行

再正式推广。


第二百一十六章 灰度期间重点观察

不是只看注册数。

重点:

实名失败
审核问题
无候选比例
用户是否理解Like
Mutual后是否聊天
举报
红娘工作量

第二百一十七章 Feature Flag

建议关键模块支持:

activityEnabled
matchmakerEnabled
imageChatEnabled

出现严重问题:

可以单独关闭。

不需要整个平台下线。


第二百一十八章 Kill Switch

高风险模块建议能够快速关闭:

用户推荐
聊天图片
活动报名

由高权限配置。


第二百一十九章 上线前配置核对

必须确认:

微信AppID
实名认证Provider
对象存储Bucket
数据库
Redis
域名
HTTPS证书
隐私政策版本
用户协议版本
运营组织
角色权限
风控规则

第二百二十章 Secret核对

确认:

Secret没有进入Git。


第二百二十一章 数据库上线检查

确认:

Migration全部成功
Indexes存在
Foreign Keys正确
Unique约束存在
备份已完成

第二百二十二章 权限上线检查

必须使用不同角色逐个登录验证。

不能只看配置表。


第二百二十三章 对象存储上线检查

测试:

未授权公网不能下载用户照片。


第二百二十四章 日志上线检查

制造测试异常。

确认日志:

无敏感信息。


第二百二十五章 Backup检查

生产第一次正式开放前:

完成一次基线备份。


第二百二十六章 Rollback检查

确认:

当前版本对应上一稳定镜像/构建包仍可获取。


第二百二十七章 Go/No-Go总体标准

正式开放前必须开上线评审。

结果:

GO
CONDITIONAL GO
NO-GO

第二百二十八章 NO-GO硬条件

以下任何一项存在:

不得正式上线。

存在P0 Bug
存在未接受风险的P1 Bug
核心E2E无法通过
实名认证不可用
资料审核不可用
Mutual Match逻辑错误
聊天权限错误
Block无效
后台严重越权
敏感数据明文泄露
活动名额可严重超卖
数据库无可用备份
无法回滚

第二百二十九章 Conditional GO

例如:

  • 少量P2 Bug
  • 非核心统计延迟
  • 某个P1模块通过Feature Flag暂时关闭

可以由负责人明确接受风险后:

有条件上线。

必须记录:

  • 问题
  • 影响
  • 临时措施
  • 修复计划

第二百三十章 GO条件

至少:

核心E2E全部通过
P0=0
P1=0或全部正式接受
核心权限测试通过
隐私测试通过
并发测试通过
数据库备份通过
恢复验证通过
Smoke通过
运营UAT通过

第二百三十一章 V1上线验收清单——用户核心

□ 微信登录
□ 手机绑定
□ 实名
□ 未成年人拦截
□ 资料填写
□ 照片
□ 择偶条件
□ 提交审核
□ 审核状态
□ 首页推荐
□ 找对象
□ 用户详情
□ Like
□ Pass
□ Mutual Match
□ Unmatch
□ Block
□ 举报
□ 隐私设置
□ 注销

第二百三十二章 上线验收清单——聊天

□ 无Match不能聊
□ 有Match能聊
□ Text
□ Image
□ 消息幂等
□ 未读
□ WS重连
□ Block即时禁止
□ Ban即时禁止
□ 历史分页
□ 举报入口
□ RiskNotice

第二百三十三章 上线验收清单——活动

□ 创建
□ 发布
□ 报名
□ 审核
□ 名额
□ 并发最后名额
□ 取消报名
□ 签到
□ 重复签到
□ 反馈
□ 活动互选
□ 双向生成Match
□ 活动取消

第二百三十四章 上线验收清单——红娘

□ 服务申请
□ 分配/接单
□ 用户必要资料
□ 候选
□ Required规则
□ 推荐
□ 跟进
□ Waiting User
□ 活动推荐
□ 风险转交
□ 完成服务
□ 不能看聊天
□ 不能看身份证

第二百三十五章 上线验收清单——后台

□ 统一登录
□ 不同角色菜单
□ Data Scope
□ 用户管理
□ 审核
□ 红娘
□ 活动
□ 风控
□ Organization
□ Operators
□ Roles
□ Permissions
□ Audit
□ Sensitive Access

第二百三十六章 上线验收清单——统计

□ 注册
□ 实名
□ 审核
□ 推荐
□ Like
□ Mutual
□ Chat Started
□ Successful
□ 红娘
□ 活动
□ 举报
□ Dashboard一致性
□ 时区正确

第二百三十七章 上线验收清单——安全

□ IDOR
□ SQL Injection
□ XSS
□ CORS
□ 文件上传
□ Rate Limit
□ 暴力登录
□ Token失效
□ Secret管理
□ 日志脱敏
□ 图片私有
□ 敏感权限

第二百三十八章 上线验收签字角色

建议至少由:

产品负责人
技术负责人
测试负责人
运营负责人
数据/隐私安全负责人

确认。

一人团队可以兼任。

但检查项不能因此消失。


第二百三十九章 上线后24小时

重点观察:

  • 登录
  • 实名
  • API错误
  • 数据库
  • 推荐
  • 消息
  • 权限错误
  • 用户反馈

第二百四十章 上线后首周

每天查看:

新增用户
实名异常
审核积压
无候选率
消息失败
举报

并快速修复真实用户遇到的问题。


第二百四十一章 首场线下活动必须现场演练

活动前一天:

用测试账号完整模拟。

活动当天提前:

管理员登录
签到设备
二维码
名单
网络
应急方案

全部确认。


第二百四十二章 活动现场技术应急

至少准备:

备用网络
备用手机
手工签到方式
脱敏应急名单
工作人员联系方式

避免现场网络问题导致活动无法执行。


第二百四十三章 数据库生产事故原则

如果发现数据异常:

优先停止写入相关模块。

不要为了保持页面可用:

继续写错数据。


第二百四十四章 Match事故原则

如果发现Match重复:

立即考虑关闭:

Like/Matching Feature Flag。

先保护数据。


第二百四十五章 权限事故原则

发现越权漏洞:

最高优先级。

立即:

  • 封闭接口
  • 撤销Session
  • 检查日志
  • 评估访问范围

第二百四十六章 敏感信息事件

发现身份证/聊天等泄露:

必须进入:

安全事件响应流程。

不能当普通Bug处理。


第二百四十七章 线上Bug修复流程

发现
↓
定级
↓
复现
↓
修复
↓
自动/人工测试
↓
Staging验证
↓
发布
↓
监控

第二百四十八章 不允许直接生产库手改核心数据

紧急情况下如果必须:

经过审批/记录。

优先通过:

  • 正式管理接口
  • 修复脚本
  • Migration

第二百四十九章 修复脚本要求

必须:

  • 可重复安全执行
  • 有日志
  • 先Dry Run
  • 备份
  • 可验证结果

第二百五十章 测试文档交付物

建议项目最终维护:

docs/testing/test-strategy.md
docs/testing/test-cases/
docs/testing/permission-matrix.md
docs/testing/go-live-checklist.md
docs/testing/incident-playbook.md

第二百五十一章 自动化测试目录建议

tests/
├── unit/
├── integration/
├── api/
├── permission/
├── concurrency/
├── security/
└── e2e/

第二百五十二章 CI必须执行

每次合并:

Lint
Unit Test
Service Test
API Integration Test
Migration Validation
Build

第二百五十三章 主分支保护

建议:

测试未通过不得合并。

如果团队小:

仍然至少:

CI失败不能直接发布生产。


第二百五十四章 Release Candidate

正式版本:

v1.0.0-rc.1

在Staging完成最终回归。

通过后:

v1.0.0

第二百五十五章 版本号原则

推荐Semantic Versioning:

MAJOR.MINOR.PATCH

例如:

1.0.0
1.0.1
1.1.0

第二百五十六章 Hotfix

生产紧急修复:

1.0.1

不能随意覆盖:

1.0.0原构建物。

保证可追溯。


第二百五十七章 最重要的测试优先级

如果时间有限,优先级必须是:

安全与越权
↓
数据一致性
↓
核心Match关系
↓
聊天权限
↓
实名认证/审核
↓
活动名额
↓
红娘权限
↓
统计
↓
普通UI细节

第二百五十八章 不允许为了赶上线牺牲的项目

绝不能因为时间紧而跳过:

Block测试
权限越权测试
敏感数据测试
Mutual并发测试
活动名额并发测试
数据库备份
Rollback

第二百五十九章 V1质量目标

平台正式上线至少应该达到:

核心链路无阻断。

关键关系无重复。

高风险权限无越权。

敏感数据无明显泄露。

弱网情况下关键业务最终一致。

工作人员能够按照系统完成服务。

发生异常时能够定位、回滚、恢复。


第二百六十章 最终质量原则

V1.0必须坚持:

能打开页面,不等于功能正确。

功能正确,不等于状态一致。

状态一致,不等于安全。

安全,不等于用户真正会用。

用户会用,不等于线下工作人员能执行。

因此完整的上线质量标准应该同时包含:

功能正确
+
业务状态正确
+
数据一致
+
并发安全
+
权限正确
+
隐私安全
+
用户易用
+
工作人员可执行
+
异常可恢复
+
数据可追溯

最终上线标准不是:

“开发说完成了。”

而是:

用户能顺利完成婚恋服务闭环,工作人员能稳定提供公益服务,系统在异常和风险情况下仍然知道该拒绝什么、保护什么、保留什么、恢复什么。