4015 lines
45 KiB
Markdown
4015 lines
45 KiB
Markdown
# 丹阳公益婚恋服务平台
|
||
# V1.0 测试体系、验收标准与上线质量保障方案
|
||
|
||
版本:V1.0
|
||
适用范围:微信小程序用户端、公益红娘工作台、运营管理后台、后端服务、数据库、实时消息、对象存储、风控与统计模块
|
||
核心目标:保证V1.0上线前“功能可用、状态正确、权限不越界、数据不重复、敏感信息不泄露、核心链路可恢复、上线后可快速定位问题”
|
||
|
||
---
|
||
|
||
# 第一章 测试总体目标
|
||
|
||
本项目测试不是简单确认:
|
||
|
||
> 页面能不能打开。
|
||
|
||
真正需要验证的是:
|
||
|
||
1. 核心婚恋闭环是否完整
|
||
2. 状态变化是否正确
|
||
3. 并发情况下是否产生重复数据
|
||
4. 用户隐私是否被严格隔离
|
||
5. 后台工作人员是否会越权
|
||
6. 拉黑、封禁、审核等状态是否即时生效
|
||
7. 弱网和异常情况下数据是否仍一致
|
||
8. 活动现场是否真正可执行
|
||
9. 红娘工作流是否能连续使用
|
||
10. 数据统计是否与业务真实数据一致
|
||
|
||
最终标准:
|
||
|
||
> **不是“没有明显Bug就上线”,而是核心业务链路在正常、异常、并发和越权场景下都可控。**
|
||
|
||
---
|
||
|
||
# 第二章 测试体系总结构
|
||
|
||
V1.0测试体系分为:
|
||
|
||
```text
|
||
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验收
|
||
```
|
||
|
||
---
|
||
|
||
# 第三章 测试环境划分
|
||
|
||
建议至少:
|
||
|
||
```text
|
||
development
|
||
test
|
||
staging
|
||
production
|
||
```
|
||
|
||
---
|
||
|
||
# 第四章 Development
|
||
|
||
用途:
|
||
|
||
> 开发人员本地开发。
|
||
|
||
可以使用:
|
||
|
||
- 模拟微信用户
|
||
- 模拟实名认证
|
||
- 测试对象存储
|
||
- 测试数据库
|
||
|
||
禁止使用真实生产身份证等敏感数据。
|
||
|
||
---
|
||
|
||
# 第五章 Test环境
|
||
|
||
用途:
|
||
|
||
- 自动化测试
|
||
- QA测试
|
||
- 接口测试
|
||
- 并发测试
|
||
|
||
必须允许:
|
||
|
||
> 数据随时重置。
|
||
|
||
---
|
||
|
||
# 第六章 Staging预发布
|
||
|
||
必须尽可能接近Production:
|
||
|
||
```text
|
||
同版本数据库
|
||
同Redis结构
|
||
同对象存储策略
|
||
同Nginx
|
||
同Docker部署
|
||
同权限配置
|
||
```
|
||
|
||
第三方实名、微信能力可以使用:
|
||
|
||
> 官方测试环境或受控测试账号。
|
||
|
||
---
|
||
|
||
# 第七章 Production
|
||
|
||
生产数据:
|
||
|
||
> 不用于普通开发测试。
|
||
|
||
线上故障复现:
|
||
|
||
优先使用:
|
||
|
||
- 日志
|
||
- RequestId
|
||
- Audit
|
||
- 脱敏数据
|
||
|
||
---
|
||
|
||
# 第八章 测试账号体系
|
||
|
||
必须提前准备标准测试账号。
|
||
|
||
例如:
|
||
|
||
```text
|
||
U001 新用户
|
||
U002 已绑定手机号未实名
|
||
U003 已实名资料未完成
|
||
U004 审核中
|
||
U005 审核通过正常用户
|
||
U006 paused用户
|
||
U007 getting_to_know用户
|
||
U008 successful用户
|
||
U009 limited用户
|
||
U010 banned用户
|
||
```
|
||
|
||
---
|
||
|
||
# 第九章 关系测试用户
|
||
|
||
至少:
|
||
|
||
```text
|
||
A neutral B
|
||
C liked D
|
||
D liked C
|
||
E blocked F
|
||
G active match H
|
||
I unmatched J
|
||
K successful L
|
||
```
|
||
|
||
方便快速测试状态。
|
||
|
||
---
|
||
|
||
# 第十章 后台测试账号
|
||
|
||
必须分别准备:
|
||
|
||
```text
|
||
super_admin
|
||
platform_admin
|
||
organization_admin_A
|
||
organization_admin_B
|
||
reviewer
|
||
matchmaker_A
|
||
matchmaker_B
|
||
activity_manager
|
||
risk_operator
|
||
volunteer
|
||
data_viewer
|
||
```
|
||
|
||
不能只拿超级管理员测所有后台。
|
||
|
||
---
|
||
|
||
# 第十一章 测试数据生成
|
||
|
||
建议开发:
|
||
|
||
```text
|
||
seed:test
|
||
```
|
||
|
||
或对应脚本。
|
||
|
||
自动生成:
|
||
|
||
- 不同年龄
|
||
- 不同性别
|
||
- 不同婚姻状态
|
||
- 不同择偶条件
|
||
- 不同审核状态
|
||
- Match
|
||
- Conversation
|
||
- Activity
|
||
- Report
|
||
- MatchmakerService
|
||
|
||
---
|
||
|
||
# 第十二章 核心端到端测试链路
|
||
|
||
V1最重要的第一条E2E:
|
||
|
||
```text
|
||
微信登录
|
||
↓
|
||
手机号
|
||
↓
|
||
实名认证
|
||
↓
|
||
填写资料
|
||
↓
|
||
设置择偶条件
|
||
↓
|
||
提交审核
|
||
↓
|
||
后台审核通过
|
||
↓
|
||
首页推荐
|
||
↓
|
||
用户详情
|
||
↓
|
||
Like
|
||
↓
|
||
另一方Like
|
||
↓
|
||
Mutual Match
|
||
↓
|
||
聊天
|
||
```
|
||
|
||
此链路必须:
|
||
|
||
> 100%可通过。
|
||
|
||
---
|
||
|
||
# 第十三章 第二核心E2E:红娘
|
||
|
||
```text
|
||
用户申请红娘
|
||
↓
|
||
后台分配
|
||
↓
|
||
红娘查看服务
|
||
↓
|
||
系统生成候选
|
||
↓
|
||
红娘推荐
|
||
↓
|
||
用户查看
|
||
↓
|
||
Like
|
||
↓
|
||
Mutual
|
||
↓
|
||
服务跟进
|
||
↓
|
||
完成服务
|
||
```
|
||
|
||
---
|
||
|
||
# 第十四章 第三核心E2E:活动
|
||
|
||
```text
|
||
后台创建活动
|
||
↓
|
||
发布
|
||
↓
|
||
用户报名
|
||
↓
|
||
人工审核
|
||
↓
|
||
报名通过
|
||
↓
|
||
签到
|
||
↓
|
||
活动结束
|
||
↓
|
||
提交反馈
|
||
↓
|
||
活动互选
|
||
↓
|
||
双向互选
|
||
↓
|
||
创建Match
|
||
↓
|
||
聊天
|
||
```
|
||
|
||
---
|
||
|
||
# 第十五章 第四核心E2E:风控
|
||
|
||
```text
|
||
用户举报
|
||
↓
|
||
Report创建
|
||
↓
|
||
风控处理
|
||
↓
|
||
RiskAction
|
||
↓
|
||
账号受限
|
||
↓
|
||
聊天即时禁止
|
||
↓
|
||
推荐即时排除
|
||
↓
|
||
用户申诉
|
||
↓
|
||
人工复核
|
||
↓
|
||
撤销/维持
|
||
```
|
||
|
||
---
|
||
|
||
# 第十六章 单元测试范围
|
||
|
||
重点Service:
|
||
|
||
```text
|
||
MatchEligibilityService
|
||
RequiredConditionService
|
||
DirectionalScoringService
|
||
MutualScoringService
|
||
MessagePermissionService
|
||
ActivityEligibilityService
|
||
RiskStatusService
|
||
PermissionService
|
||
DataScopeService
|
||
```
|
||
|
||
---
|
||
|
||
# 第十七章 匹配算法单元测试
|
||
|
||
必须覆盖:
|
||
|
||
```text
|
||
年龄边界
|
||
身高边界
|
||
地区
|
||
婚姻状态
|
||
子女情况
|
||
学历
|
||
吸烟
|
||
饮酒
|
||
婚姻计划
|
||
定居意愿
|
||
兴趣
|
||
Null
|
||
Required
|
||
Preferred
|
||
```
|
||
|
||
---
|
||
|
||
# 第十八章 Required测试
|
||
|
||
例如:
|
||
|
||
A:
|
||
|
||
```text
|
||
年龄30~35 required
|
||
```
|
||
|
||
B=35:
|
||
|
||
> 通过。
|
||
|
||
B=36:
|
||
|
||
> Reject。
|
||
|
||
不能进入后续评分。
|
||
|
||
---
|
||
|
||
# 第十九章 双向Required测试
|
||
|
||
```text
|
||
A接受B
|
||
B不接受A
|
||
```
|
||
|
||
最终:
|
||
|
||
> Reject。
|
||
|
||
---
|
||
|
||
# 第二十章 MutualScore测试
|
||
|
||
输入:
|
||
|
||
```text
|
||
AB = 92
|
||
BA = 78
|
||
```
|
||
|
||
验证:
|
||
|
||
```text
|
||
0.6×78 + 0.4×85
|
||
```
|
||
|
||
结果符合公式。
|
||
|
||
---
|
||
|
||
# 第二十一章 推荐理由测试
|
||
|
||
输入条件真实匹配:
|
||
|
||
> 生成对应理由。
|
||
|
||
不能生成资料中不存在的:
|
||
|
||
> “双方都喜欢旅行”。
|
||
|
||
---
|
||
|
||
# 第二十二章 Service测试原则
|
||
|
||
业务Service测试重点:
|
||
|
||
> 状态变化和副作用。
|
||
|
||
例如Like:
|
||
|
||
不仅检查:
|
||
|
||
```text
|
||
like插入成功
|
||
```
|
||
|
||
还要检查:
|
||
|
||
```text
|
||
reverse like存在时创建Match
|
||
Conversation创建
|
||
Members创建
|
||
```
|
||
|
||
---
|
||
|
||
# 第二十三章 API测试
|
||
|
||
所有API至少覆盖:
|
||
|
||
```text
|
||
正常请求
|
||
缺少Token
|
||
Token过期
|
||
参数缺失
|
||
参数越界
|
||
业务状态错误
|
||
资源不存在
|
||
权限不足
|
||
重复请求
|
||
```
|
||
|
||
---
|
||
|
||
# 第二十四章 API响应格式测试
|
||
|
||
所有API错误必须符合:
|
||
|
||
```json
|
||
{
|
||
"success": false,
|
||
"code": "...",
|
||
"message": "...",
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
不能某接口返回:
|
||
|
||
```text
|
||
500 Internal Error
|
||
```
|
||
|
||
另一个返回:
|
||
|
||
```json
|
||
{"msg":"error"}
|
||
```
|
||
|
||
---
|
||
|
||
# 第二十五章 RequestId测试
|
||
|
||
每个请求:
|
||
|
||
> 必须能够获得RequestId。
|
||
|
||
错误日志能通过RequestId追踪。
|
||
|
||
---
|
||
|
||
# 第二十六章 登录测试
|
||
|
||
覆盖:
|
||
|
||
- 正常微信登录
|
||
- 无效code
|
||
- code重复
|
||
- 微信接口失败
|
||
- banned账号
|
||
- closed账号
|
||
- Token refresh
|
||
- logout
|
||
- Session撤销
|
||
|
||
---
|
||
|
||
# 第二十七章 手机绑定测试
|
||
|
||
覆盖:
|
||
|
||
- 正常手机号
|
||
- 已绑定手机号
|
||
- 同手机号重复绑定
|
||
- 无效手机号
|
||
- 短信验证码错误(若启用)
|
||
- 微信phoneCode失效
|
||
|
||
---
|
||
|
||
# 第二十八章 实名认证测试
|
||
|
||
覆盖:
|
||
|
||
```text
|
||
合法身份
|
||
姓名不一致
|
||
身份证格式错误
|
||
未成年
|
||
重复身份证
|
||
第三方超时
|
||
重复提交
|
||
```
|
||
|
||
---
|
||
|
||
# 第二十九章 实名测试特别要求
|
||
|
||
必须确认:
|
||
|
||
> 实名失败日志中没有完整身份证。
|
||
|
||
数据库中:
|
||
|
||
> 没有明文身份证。
|
||
|
||
---
|
||
|
||
# 第三十章 资料填写测试
|
||
|
||
覆盖:
|
||
|
||
- 每个字段正常值
|
||
- 最大/最小值
|
||
- 字典非法值
|
||
- selfIntro为空
|
||
- selfIntro超长
|
||
- 联系方式
|
||
- 特殊字符
|
||
- Emoji
|
||
- XSS文本
|
||
|
||
---
|
||
|
||
# 第三十一章 图片测试
|
||
|
||
覆盖:
|
||
|
||
```text
|
||
正常JPEG
|
||
PNG
|
||
伪装EXE.jpg
|
||
超大文件
|
||
异常MIME
|
||
损坏图片
|
||
带EXIF GPS图片
|
||
重复上传
|
||
```
|
||
|
||
必须确认:
|
||
|
||
> EXIF按设计处理。
|
||
|
||
---
|
||
|
||
# 第三十二章 审核状态机测试
|
||
|
||
覆盖:
|
||
|
||
```text
|
||
not_submitted → pending
|
||
pending → processing
|
||
processing → approved
|
||
processing → need_edit
|
||
processing → rejected
|
||
need_edit → pending
|
||
```
|
||
|
||
---
|
||
|
||
# 第三十三章 非法审核迁移测试
|
||
|
||
例如:
|
||
|
||
```text
|
||
approved → processing
|
||
```
|
||
|
||
由普通审核接口请求。
|
||
|
||
必须:
|
||
|
||
> 拒绝。
|
||
|
||
---
|
||
|
||
# 第三十四章 审核并发领取
|
||
|
||
模拟:
|
||
|
||
> 10个审核员同时领取同一任务。
|
||
|
||
最终:
|
||
|
||
```text
|
||
1人成功
|
||
9人失败
|
||
```
|
||
|
||
不能出现多个assigned_operator。
|
||
|
||
---
|
||
|
||
# 第三十五章 审核处理中修改资料
|
||
|
||
用户尝试修改正在审核字段。
|
||
|
||
必须按既定规则:
|
||
|
||
> 禁止或进入明确版本机制。
|
||
|
||
不能造成审核内容变化却仍然批准旧任务。
|
||
|
||
---
|
||
|
||
# 第三十六章 推荐资格测试
|
||
|
||
以下用户绝不能进入推荐:
|
||
|
||
```text
|
||
未实名
|
||
审核中
|
||
审核拒绝
|
||
paused
|
||
successful
|
||
banned
|
||
closed
|
||
blocked
|
||
```
|
||
|
||
---
|
||
|
||
# 第三十七章 推荐冷却测试
|
||
|
||
A Pass B。
|
||
|
||
下一次推荐:
|
||
|
||
> B被排除。
|
||
|
||
冷却到期后的行为:
|
||
|
||
> 根据配置恢复。
|
||
|
||
---
|
||
|
||
# 第三十八章 推荐缓存失效测试
|
||
|
||
缓存已有B。
|
||
|
||
B随后:
|
||
|
||
```text
|
||
paused
|
||
```
|
||
|
||
A再次获取推荐:
|
||
|
||
> 不得返回B。
|
||
|
||
---
|
||
|
||
# 第三十九章 Like正常测试
|
||
|
||
A Like B:
|
||
|
||
```text
|
||
liked = true
|
||
mutual = false
|
||
```
|
||
|
||
---
|
||
|
||
# 第四十章 双向Like测试
|
||
|
||
B先Like A。
|
||
|
||
A再Like B。
|
||
|
||
最终:
|
||
|
||
```text
|
||
1 Match
|
||
1 Conversation
|
||
2 ConversationMembers
|
||
```
|
||
|
||
---
|
||
|
||
# 第四十一章 同时Like并发测试
|
||
|
||
A与B同时发送。
|
||
|
||
循环至少:
|
||
|
||
> 100~1000次并发场景。
|
||
|
||
每轮必须:
|
||
|
||
```text
|
||
只产生1个Match
|
||
```
|
||
|
||
---
|
||
|
||
# 第四十二章 重复Like幂等
|
||
|
||
同一个:
|
||
|
||
```text
|
||
Idempotency-Key
|
||
```
|
||
|
||
重复10次。
|
||
|
||
最终:
|
||
|
||
> 一个Like结果。
|
||
|
||
---
|
||
|
||
# 第四十三章 取消Like测试
|
||
|
||
未Mutual:
|
||
|
||
> 可取消。
|
||
|
||
已Mutual:
|
||
|
||
> 必须拒绝,要求Unmatch。
|
||
|
||
---
|
||
|
||
# 第四十四章 Block测试
|
||
|
||
A Block B后:
|
||
|
||
必须同时验证:
|
||
|
||
- B不能Chat A
|
||
- A/B推荐互相排除
|
||
- Search排除
|
||
- 红娘候选排除
|
||
- Conversation不可发送
|
||
|
||
---
|
||
|
||
# 第四十五章 Unblock测试
|
||
|
||
解除后:
|
||
|
||
- 不自动恢复Like
|
||
- 不自动恢复Match
|
||
- Conversation仍不可自动恢复
|
||
|
||
---
|
||
|
||
# 第四十六章 Unmatch测试
|
||
|
||
任一方解除:
|
||
|
||
```text
|
||
match → unmatched
|
||
conversation.canSend = false
|
||
```
|
||
|
||
另一方下一条消息:
|
||
|
||
> 必须失败。
|
||
|
||
---
|
||
|
||
# 第四十七章 Success测试
|
||
|
||
A发起。
|
||
|
||
B确认。
|
||
|
||
最终:
|
||
|
||
```text
|
||
match successful
|
||
双方relationship_status更新
|
||
停止新推荐
|
||
```
|
||
|
||
---
|
||
|
||
# 第四十八章 Success拒绝测试
|
||
|
||
A发起。
|
||
|
||
B拒绝。
|
||
|
||
不能:
|
||
|
||
> 成功状态生效。
|
||
|
||
---
|
||
|
||
# 第四十九章 Success与Unmatch并发
|
||
|
||
A发Success。
|
||
|
||
同时B Unmatch。
|
||
|
||
最终必须只有一个合法业务状态。
|
||
|
||
不可出现:
|
||
|
||
```text
|
||
match = successful
|
||
conversation = unmatched
|
||
```
|
||
|
||
互相矛盾。
|
||
|
||
---
|
||
|
||
# 第五十章 聊天权限测试
|
||
|
||
必须覆盖:
|
||
|
||
```text
|
||
neutral
|
||
single like
|
||
active match
|
||
unmatched
|
||
blocked
|
||
banned
|
||
paused
|
||
successful
|
||
```
|
||
|
||
确认每种状态canSend正确。
|
||
|
||
---
|
||
|
||
# 第五十一章 Paused聊天测试
|
||
|
||
用户暂停寻找:
|
||
|
||
> 已有active Match聊天仍正常。
|
||
|
||
这是明确业务规则。
|
||
|
||
---
|
||
|
||
# 第五十二章 Successful聊天测试
|
||
|
||
成功牵手:
|
||
|
||
> 已有双方Conversation仍可保留。
|
||
|
||
不能因为成功就突然断聊。
|
||
|
||
---
|
||
|
||
# 第五十三章 消息幂等测试
|
||
|
||
服务端已经保存。
|
||
|
||
客户端超时重试相同:
|
||
|
||
```text
|
||
clientMessageId
|
||
```
|
||
|
||
最终:
|
||
|
||
> 数据库仅一条。
|
||
|
||
---
|
||
|
||
# 第五十四章 消息顺序测试
|
||
|
||
高频连续发送:
|
||
|
||
```text
|
||
M1 M2 M3 M4
|
||
```
|
||
|
||
客户端最终顺序稳定。
|
||
|
||
---
|
||
|
||
# 第五十五章 弱网测试
|
||
|
||
模拟:
|
||
|
||
```text
|
||
3G
|
||
高延迟
|
||
30%丢包
|
||
临时断网
|
||
网络切换
|
||
```
|
||
|
||
确认:
|
||
|
||
- 草稿不丢
|
||
- 重试不重复
|
||
- 历史最终一致
|
||
|
||
---
|
||
|
||
# 第五十六章 WebSocket断线重连测试
|
||
|
||
场景:
|
||
|
||
```text
|
||
WS断开
|
||
↓
|
||
对方发送5条
|
||
↓
|
||
重新连接
|
||
```
|
||
|
||
客户端最终:
|
||
|
||
> 5条全部可恢复。
|
||
|
||
---
|
||
|
||
# 第五十七章 后台切换测试
|
||
|
||
微信小程序:
|
||
|
||
```text
|
||
进入后台5分钟
|
||
↓
|
||
重新打开
|
||
```
|
||
|
||
需要:
|
||
|
||
- WS恢复
|
||
- 未读恢复
|
||
- 状态刷新
|
||
|
||
---
|
||
|
||
# 第五十八章 实时封禁测试
|
||
|
||
A正在聊天。
|
||
|
||
后台封禁A。
|
||
|
||
A不刷新页面直接发送。
|
||
|
||
必须:
|
||
|
||
> 发送失败。
|
||
|
||
不能等重新登录。
|
||
|
||
---
|
||
|
||
# 第五十九章 实时Block测试
|
||
|
||
A/B都在线。
|
||
|
||
B Block A。
|
||
|
||
A立即发送:
|
||
|
||
> 必须失败。
|
||
|
||
---
|
||
|
||
# 第六十章 消息限频测试
|
||
|
||
模拟:
|
||
|
||
```text
|
||
1秒100条
|
||
```
|
||
|
||
必须触发:
|
||
|
||
> Rate Limit。
|
||
|
||
同时普通连续发送:
|
||
|
||
```text
|
||
5~10条短消息
|
||
```
|
||
|
||
不能明显误伤。
|
||
|
||
---
|
||
|
||
# 第六十一章 重复群发测试
|
||
|
||
同一用户向多个Match发完全相同广告话术。
|
||
|
||
系统:
|
||
|
||
> 生成Spam风险。
|
||
|
||
---
|
||
|
||
# 第六十二章 Risk关键词测试
|
||
|
||
普通:
|
||
|
||
> “我在银行工作。”
|
||
|
||
不能直接封禁。
|
||
|
||
明显:
|
||
|
||
> “转钱给我投资”
|
||
|
||
应触发:
|
||
|
||
> 风险提醒/事件。
|
||
|
||
---
|
||
|
||
# 第六十三章 图片消息测试
|
||
|
||
覆盖:
|
||
|
||
- 上传成功发送
|
||
- 上传失败
|
||
- 上传成功但消息失败
|
||
- 图片权限失效
|
||
- 被Block后发送图片
|
||
- 恶意文件
|
||
|
||
---
|
||
|
||
# 第六十四章 系统通知测试
|
||
|
||
必须测试:
|
||
|
||
```text
|
||
审核通过
|
||
审核退回
|
||
Mutual Match
|
||
红娘推荐
|
||
活动批准
|
||
活动取消
|
||
账号受限
|
||
```
|
||
|
||
每个通知:
|
||
|
||
- 正确用户
|
||
- 正确业务ID
|
||
- 不重复
|
||
|
||
---
|
||
|
||
# 第六十五章 Notification幂等
|
||
|
||
同一个业务事件重复消费:
|
||
|
||
> 用户只收到一个正式通知。
|
||
|
||
---
|
||
|
||
# 第六十六章 活动创建测试
|
||
|
||
覆盖:
|
||
|
||
- 合法时间
|
||
- 开始>结束
|
||
- 报名结束>活动开始
|
||
- 空标题
|
||
- 无组织
|
||
- 无人数限制
|
||
- 无规则
|
||
|
||
---
|
||
|
||
# 第六十七章 活动状态测试
|
||
|
||
```text
|
||
draft → open
|
||
open → closed
|
||
closed → ongoing
|
||
ongoing → ended
|
||
```
|
||
|
||
非法逆转:
|
||
|
||
> 拒绝。
|
||
|
||
---
|
||
|
||
# 第六十八章 活动报名测试
|
||
|
||
覆盖:
|
||
|
||
```text
|
||
正常用户
|
||
未实名
|
||
未审核
|
||
年龄不符
|
||
活动关闭
|
||
重复报名
|
||
名额已满
|
||
```
|
||
|
||
---
|
||
|
||
# 第六十九章 Pending名额测试
|
||
|
||
假设:
|
||
|
||
```text
|
||
总名额10
|
||
pending 100
|
||
approved 9
|
||
```
|
||
|
||
仍只能再批准:
|
||
|
||
> 1人。
|
||
|
||
---
|
||
|
||
# 第七十章 活动最后名额并发
|
||
|
||
模拟:
|
||
|
||
> 50个审核请求同时批准最后1个名额。
|
||
|
||
最终:
|
||
|
||
```text
|
||
1 approved
|
||
49 ACTIVITY_FULL
|
||
```
|
||
|
||
---
|
||
|
||
# 第七十一章 性别名额测试
|
||
|
||
如果开启:
|
||
|
||
```text
|
||
male_limit = 10
|
||
```
|
||
|
||
第11名男性:
|
||
|
||
> GENDER_QUOTA_FULL。
|
||
|
||
同时女性名额不受错误影响。
|
||
|
||
---
|
||
|
||
# 第七十二章 用户取消与审核并发
|
||
|
||
用户正在取消pending。
|
||
|
||
审核员同时approve。
|
||
|
||
最终只能出现:
|
||
|
||
> 一个确定状态。
|
||
|
||
不能既approved又cancelled逻辑冲突。
|
||
|
||
---
|
||
|
||
# 第七十三章 活动取消并发
|
||
|
||
活动管理员取消活动时:
|
||
|
||
用户同时提交报名。
|
||
|
||
报名必须:
|
||
|
||
> 失败。
|
||
|
||
---
|
||
|
||
# 第七十四章 签到测试
|
||
|
||
覆盖:
|
||
|
||
```text
|
||
正常Token
|
||
Token过期
|
||
Token篡改
|
||
错误activity
|
||
非approved
|
||
重复签到
|
||
```
|
||
|
||
---
|
||
|
||
# 第七十五章 重复签到
|
||
|
||
返回:
|
||
|
||
> 已签到。
|
||
|
||
而不是500。
|
||
|
||
---
|
||
|
||
# 第七十六章 手工签到测试
|
||
|
||
检查:
|
||
|
||
- 操作人记录
|
||
- Audit
|
||
- 重复防护
|
||
|
||
---
|
||
|
||
# 第七十七章 活动互选测试
|
||
|
||
A选B:
|
||
|
||
> B看不到。
|
||
|
||
B选A:
|
||
|
||
> 生成Match。
|
||
|
||
---
|
||
|
||
# 第七十八章 多人互选限制
|
||
|
||
如果配置:
|
||
|
||
```text
|
||
maxSelections = 3
|
||
```
|
||
|
||
提交4人:
|
||
|
||
> 拒绝。
|
||
|
||
---
|
||
|
||
# 第七十九章 互选对象越权测试
|
||
|
||
用户修改targetId:
|
||
|
||
> 指向未参加该活动用户。
|
||
|
||
必须拒绝。
|
||
|
||
---
|
||
|
||
# 第八十章 Block与互选
|
||
|
||
A Block B。
|
||
|
||
即使旧页面存在B:
|
||
|
||
提交:
|
||
|
||
> 拒绝。
|
||
|
||
---
|
||
|
||
# 第八十一章 活动已有Match测试
|
||
|
||
A/B已有Match。
|
||
|
||
活动再次互选:
|
||
|
||
> 不创建重复Match。
|
||
|
||
---
|
||
|
||
# 第八十二章 活动Unmatch后重新互选
|
||
|
||
按照最终实现的“重新激活原Match/创建历史事件”逻辑测试。
|
||
|
||
要求:
|
||
|
||
> 历史不丢,关系不重复。
|
||
|
||
---
|
||
|
||
# 第八十三章 红娘申请测试
|
||
|
||
覆盖:
|
||
|
||
```text
|
||
正常申请
|
||
重复同类型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
|
||
- 风控可继续处理
|
||
|
||
---
|
||
|
||
# 第九十三章 举报正常测试
|
||
|
||
覆盖类型:
|
||
|
||
```text
|
||
虚假资料
|
||
婚姻状态疑似虚假
|
||
骚扰
|
||
诈骗
|
||
金钱诱导
|
||
广告
|
||
冒充他人
|
||
其他
|
||
```
|
||
|
||
---
|
||
|
||
# 第九十四章 举报隐私测试
|
||
|
||
被举报用户:
|
||
|
||
> 不得知道举报人身份。
|
||
|
||
---
|
||
|
||
# 第九十五章 举报证据权限测试
|
||
|
||
仅:
|
||
|
||
```text
|
||
risk.evidence.view
|
||
```
|
||
|
||
可查看。
|
||
|
||
红娘、活动管理员:
|
||
|
||
> 403。
|
||
|
||
---
|
||
|
||
# 第九十六章 举报处理测试
|
||
|
||
结果:
|
||
|
||
```text
|
||
confirmed
|
||
rejected
|
||
insufficient_evidence
|
||
```
|
||
|
||
分别验证。
|
||
|
||
---
|
||
|
||
# 第九十七章 Report与RiskAction分离测试
|
||
|
||
举报成立:
|
||
|
||
不代表必然ban。
|
||
|
||
例如:
|
||
|
||
```text
|
||
confirmed + warning
|
||
```
|
||
|
||
应合法。
|
||
|
||
---
|
||
|
||
# 第九十八章 多RiskAction测试
|
||
|
||
用户同时有:
|
||
|
||
```text
|
||
message_limit
|
||
temporary_suspend
|
||
```
|
||
|
||
撤销一个以后:
|
||
|
||
> 不能简单恢复normal。
|
||
|
||
必须根据剩余Action重新计算。
|
||
|
||
---
|
||
|
||
# 第九十九章 申诉测试
|
||
|
||
覆盖:
|
||
|
||
```text
|
||
pending
|
||
processing
|
||
approved
|
||
rejected
|
||
```
|
||
|
||
approved:
|
||
|
||
> 正确撤销对应Action。
|
||
|
||
---
|
||
|
||
# 第一百章 权限测试总体要求
|
||
|
||
权限测试必须以:
|
||
|
||
> “默认拒绝”
|
||
|
||
为原则。
|
||
|
||
测试不仅看菜单隐藏。
|
||
|
||
必须直接构造HTTP请求。
|
||
|
||
---
|
||
|
||
# 第一百零一章 RBAC测试
|
||
|
||
每个角色访问每类资源。
|
||
|
||
形成正式:
|
||
|
||
> Permission Test Matrix。
|
||
|
||
---
|
||
|
||
# 第一百零二章 组织越权测试
|
||
|
||
机构A管理员:
|
||
|
||
请求机构B:
|
||
|
||
```text
|
||
activity
|
||
matchmaker service
|
||
operator
|
||
```
|
||
|
||
必须:
|
||
|
||
> 403。
|
||
|
||
---
|
||
|
||
# 第一百零三章 Assigned Scope测试
|
||
|
||
红娘A:
|
||
|
||
尝试访问红娘B服务。
|
||
|
||
没有授权:
|
||
|
||
> 拒绝。
|
||
|
||
---
|
||
|
||
# 第一百零四章 Activity Scope测试
|
||
|
||
志愿者只分配活动X。
|
||
|
||
访问活动Y签到名单:
|
||
|
||
> 403。
|
||
|
||
---
|
||
|
||
# 第一百零五章 敏感权限测试
|
||
|
||
没有:
|
||
|
||
```text
|
||
user.sensitive.identity.full
|
||
```
|
||
|
||
不能通过:
|
||
|
||
- API
|
||
- 下载
|
||
- URL参数
|
||
|
||
获得完整身份证。
|
||
|
||
---
|
||
|
||
# 第一百零六章 权限修改实时测试
|
||
|
||
管理员撤销权限。
|
||
|
||
旧Token继续请求:
|
||
|
||
> 应立即/短时内失效。
|
||
|
||
不能必须退出重登才生效。
|
||
|
||
---
|
||
|
||
# 第一百零七章 Operator Disabled测试
|
||
|
||
账号已登录。
|
||
|
||
后台管理员Disable。
|
||
|
||
下一API:
|
||
|
||
> 拒绝。
|
||
|
||
---
|
||
|
||
# 第一百零八章 角色自提权测试
|
||
|
||
organization_admin请求给自己:
|
||
|
||
```text
|
||
super_admin
|
||
```
|
||
|
||
必须:
|
||
|
||
> 拒绝并Audit。
|
||
|
||
---
|
||
|
||
# 第一百零九章 IDOR专项测试
|
||
|
||
必须重点覆盖:
|
||
|
||
```text
|
||
/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不得返回:
|
||
|
||
```text
|
||
real_name
|
||
id_number
|
||
phone
|
||
exact_address
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百一十五章 SelfProfile测试
|
||
|
||
允许:
|
||
|
||
> phoneMasked
|
||
|
||
但仍不返回完整身份证。
|
||
|
||
---
|
||
|
||
# 第一百一十六章 Matchmaker DTO测试
|
||
|
||
不得包含:
|
||
|
||
```text
|
||
idNumber
|
||
chatContent
|
||
riskEvidence
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百一十七章 活动签到DTO测试
|
||
|
||
只返回签到必要信息。
|
||
|
||
---
|
||
|
||
# 第一百一十八章 日志泄露测试
|
||
|
||
主动触发:
|
||
|
||
- 实名错误
|
||
- Token错误
|
||
- SQL错误
|
||
- 上传错误
|
||
|
||
然后检查日志。
|
||
|
||
不得出现:
|
||
|
||
- 完整身份证
|
||
- 密码
|
||
- Token
|
||
- 聊天正文
|
||
|
||
---
|
||
|
||
# 第一百一十九章 对象存储测试
|
||
|
||
测试用户图片:
|
||
|
||
> 直接访问Bucket URL。
|
||
|
||
必须:
|
||
|
||
> 不能Public Read。
|
||
|
||
---
|
||
|
||
# 第一百二十章 Signed URL测试
|
||
|
||
过期后:
|
||
|
||
> 无法继续访问。
|
||
|
||
---
|
||
|
||
# 第一百二十一章 文件越权测试
|
||
|
||
A拿到B fileId。
|
||
|
||
调用access-url。
|
||
|
||
若当前业务无权限:
|
||
|
||
> 拒绝。
|
||
|
||
---
|
||
|
||
# 第一百二十二章 安全测试范围
|
||
|
||
上线前至少进行:
|
||
|
||
```text
|
||
认证绕过
|
||
授权越权
|
||
SQL注入
|
||
XSS
|
||
CSRF(Web)
|
||
CORS
|
||
文件上传
|
||
Token重放
|
||
暴力登录
|
||
接口限流
|
||
ID枚举
|
||
敏感数据泄露
|
||
对象存储权限
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百二十三章 SQL注入测试
|
||
|
||
所有:
|
||
|
||
- 搜索
|
||
- Filter
|
||
- 用户输入
|
||
- 后台Query
|
||
|
||
尝试经典注入Payload。
|
||
|
||
必须:
|
||
|
||
> 参数化安全。
|
||
|
||
---
|
||
|
||
# 第一百二十四章 XSS测试
|
||
|
||
向:
|
||
|
||
```text
|
||
selfIntro
|
||
activityDescription
|
||
feedback
|
||
reportDescription
|
||
matchmakerFollowup
|
||
```
|
||
|
||
写入恶意HTML/Script。
|
||
|
||
前端:
|
||
|
||
> 必须转义。
|
||
|
||
---
|
||
|
||
# 第一百二十五章 CORS测试
|
||
|
||
管理后台API:
|
||
|
||
只允许正式授权Origin。
|
||
|
||
不能:
|
||
|
||
> `*`
|
||
|
||
配合敏感凭证。
|
||
|
||
---
|
||
|
||
# 第一百二十六章 暴力登录测试
|
||
|
||
后台连续错误密码。
|
||
|
||
必须:
|
||
|
||
> 限频/锁定。
|
||
|
||
---
|
||
|
||
# 第一百二十七章 Rate Limit测试
|
||
|
||
重点接口:
|
||
|
||
```text
|
||
login
|
||
real-name
|
||
like
|
||
message
|
||
report
|
||
upload
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百二十八章 CSRF测试
|
||
|
||
如后台采用Cookie认证:
|
||
|
||
> 必须验证CSRF。
|
||
|
||
如采用Bearer:
|
||
|
||
重点验证:
|
||
|
||
- Token存储
|
||
- XSS
|
||
- CORS
|
||
|
||
---
|
||
|
||
# 第一百二十九章 前端兼容性测试
|
||
|
||
微信小程序至少测试:
|
||
|
||
- iOS微信主流版本
|
||
- Android微信主流版本
|
||
|
||
尤其:
|
||
|
||
- 登录
|
||
- 手机号
|
||
- 图片上传
|
||
- WebSocket
|
||
- 二维码
|
||
|
||
---
|
||
|
||
# 第一百三十章 屏幕适配
|
||
|
||
至少:
|
||
|
||
```text
|
||
320px
|
||
375px
|
||
390px
|
||
430px
|
||
```
|
||
|
||
重点检查:
|
||
|
||
- BottomTab
|
||
- Dialog
|
||
- 长文字
|
||
- 表单
|
||
- 聊天Input
|
||
|
||
---
|
||
|
||
# 第一百三十一章 大字体测试
|
||
|
||
用户系统字体放大后:
|
||
|
||
- 文字不能被严重截断
|
||
- 关键按钮仍可操作
|
||
|
||
---
|
||
|
||
# 第一百三十二章 后台浏览器
|
||
|
||
建议支持:
|
||
|
||
- Chrome
|
||
- Edge
|
||
|
||
近期主流版本。
|
||
|
||
V1不需要兼容IE。
|
||
|
||
---
|
||
|
||
# 第一百三十三章 后台分辨率
|
||
|
||
重点:
|
||
|
||
```text
|
||
1366×768
|
||
1920×1080
|
||
```
|
||
|
||
响应式支持更宽屏。
|
||
|
||
---
|
||
|
||
# 第一百三十四章 空状态测试
|
||
|
||
每个列表必须测试:
|
||
|
||
> 0数据。
|
||
|
||
例如:
|
||
|
||
- 无推荐
|
||
- 无消息
|
||
- 无活动
|
||
- 无红娘服务
|
||
- 无举报
|
||
- 无审核
|
||
|
||
不能显示空白页。
|
||
|
||
---
|
||
|
||
# 第一百三十五章 加载状态测试
|
||
|
||
网络慢时:
|
||
|
||
> Skeleton/Loading正确。
|
||
|
||
不能用户连续重复点击造成重复业务动作。
|
||
|
||
---
|
||
|
||
# 第一百三十六章 网络错误测试
|
||
|
||
API 500/Timeout:
|
||
|
||
页面应:
|
||
|
||
- 提示
|
||
- 可重试
|
||
- 不破坏已有数据
|
||
|
||
---
|
||
|
||
# 第一百三十七章 表单防重复提交
|
||
|
||
按钮提交后:
|
||
|
||
> Loading + 防双击。
|
||
|
||
但最终仍需服务端幂等。
|
||
|
||
---
|
||
|
||
# 第一百三十八章 草稿恢复测试
|
||
|
||
Onboarding填写一半退出。
|
||
|
||
重新进入:
|
||
|
||
> 能恢复安全草稿。
|
||
|
||
敏感身份证:
|
||
|
||
> 不应长期保存在本地草稿。
|
||
|
||
---
|
||
|
||
# 第一百三十九章 前端路由状态测试
|
||
|
||
必须覆盖启动时:
|
||
|
||
```text
|
||
未登录
|
||
未绑定
|
||
未实名
|
||
资料未完成
|
||
审核中
|
||
need_edit
|
||
approved
|
||
banned
|
||
paused
|
||
successful
|
||
```
|
||
|
||
进入正确页面。
|
||
|
||
---
|
||
|
||
# 第一百四十章 Deep Link/分享访问测试
|
||
|
||
如果用户通过活动分享链接进入:
|
||
|
||
未登录时:
|
||
|
||
```text
|
||
登录
|
||
↓
|
||
恢复到活动
|
||
```
|
||
|
||
不能登录后丢失原目标。
|
||
|
||
---
|
||
|
||
# 第一百四十一章 redirectAfterLogin安全测试
|
||
|
||
传恶意外部URL:
|
||
|
||
> 必须被白名单拒绝。
|
||
|
||
---
|
||
|
||
# 第一百四十二章 数据统计测试
|
||
|
||
每个正式指标:
|
||
|
||
> 必须有测试数据集和预期数字。
|
||
|
||
---
|
||
|
||
# 第一百四十三章 注册漏斗测试
|
||
|
||
构造:
|
||
|
||
```text
|
||
注册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统计测试
|
||
|
||
```text
|
||
申请100
|
||
通过90
|
||
签到80
|
||
```
|
||
|
||
Attendance:
|
||
|
||
```text
|
||
80 / 90
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百四十八章 Activity双向意向
|
||
|
||
10对Mutual:
|
||
|
||
> Mutual Pair=10。
|
||
|
||
不是:
|
||
|
||
> 20对。
|
||
|
||
---
|
||
|
||
# 第一百四十九章 Red Matchmaker统计
|
||
|
||
红娘看20候选。
|
||
|
||
正式推3人。
|
||
|
||
Recommendation:
|
||
|
||
> 3。
|
||
|
||
---
|
||
|
||
# 第一百五十章 举报统计
|
||
|
||
10条举报:
|
||
|
||
```text
|
||
6 confirmed
|
||
2 rejected
|
||
2 insufficient
|
||
```
|
||
|
||
Confirmed Rate:
|
||
|
||
```text
|
||
6/10
|
||
```
|
||
|
||
如果全部已完成。
|
||
|
||
---
|
||
|
||
# 第一百五十一章 Dashboard一致性
|
||
|
||
同日期条件:
|
||
|
||
```text
|
||
Overview
|
||
Matches Analytics
|
||
Activity Analytics
|
||
```
|
||
|
||
引用同指标时必须相同。
|
||
|
||
---
|
||
|
||
# 第一百五十二章 Summary重算测试
|
||
|
||
先生成昨日汇总。
|
||
|
||
修改测试数据后运行:
|
||
|
||
```text
|
||
rebuildMetrics
|
||
```
|
||
|
||
结果:
|
||
|
||
> 与业务表重新一致。
|
||
|
||
不能累加重复。
|
||
|
||
---
|
||
|
||
# 第一百五十三章 时区测试
|
||
|
||
23:59与00:01产生的事件:
|
||
|
||
必须正确归属:
|
||
|
||
> Asia/Shanghai自然日。
|
||
|
||
---
|
||
|
||
# 第一百五十四章 性能测试目标
|
||
|
||
前面定义的性能数值属于建议目标。
|
||
|
||
V1建议验证:
|
||
|
||
```text
|
||
普通核心API P95 < 500ms
|
||
Recommendation P95 < 1.5s
|
||
Dashboard P95 < 2s
|
||
```
|
||
|
||
具体最终SLA可在上线前根据基础设施确认。
|
||
|
||
---
|
||
|
||
# 第一百五十五章 性能测试用户规模建议
|
||
|
||
早期可模拟:
|
||
|
||
```text
|
||
1万用户
|
||
5万用户
|
||
```
|
||
|
||
数据库数据量。
|
||
|
||
并模拟:
|
||
|
||
```text
|
||
100~300并发
|
||
```
|
||
|
||
核心API。
|
||
|
||
不需要一开始测试百万并发。
|
||
|
||
---
|
||
|
||
# 第一百五十六章 推荐性能测试
|
||
|
||
候选池:
|
||
|
||
```text
|
||
100
|
||
500
|
||
1000
|
||
5000
|
||
```
|
||
|
||
分别测试。
|
||
|
||
确保SQL先过滤。
|
||
|
||
---
|
||
|
||
# 第一百五十七章 Message性能测试
|
||
|
||
至少模拟:
|
||
|
||
> 数十至数百同时在线连接。
|
||
|
||
验证:
|
||
|
||
- Send
|
||
- Push
|
||
- Reconnect
|
||
|
||
V1不需要做超级IM压力测试。
|
||
|
||
---
|
||
|
||
# 第一百五十八章 Activity并发重点
|
||
|
||
真正需要高并发保证的是:
|
||
|
||
> 最后名额。
|
||
|
||
即使整体QPS不高:
|
||
|
||
事务一致性必须正确。
|
||
|
||
---
|
||
|
||
# 第一百五十九章 数据库性能测试
|
||
|
||
重点SQL必须执行:
|
||
|
||
```text
|
||
EXPLAIN ANALYZE
|
||
```
|
||
|
||
检查:
|
||
|
||
- 推荐初筛
|
||
- 消息分页
|
||
- 审核待办
|
||
- 举报待办
|
||
- 活动报名
|
||
- Dashboard聚合
|
||
|
||
---
|
||
|
||
# 第一百六十章 N+1测试
|
||
|
||
例如推荐列表6人:
|
||
|
||
不能产生:
|
||
|
||
> 几十/上百条SQL。
|
||
|
||
---
|
||
|
||
# 第一百六十一章 数据库约束测试
|
||
|
||
手工绕过Service插入:
|
||
|
||
- 重复Match
|
||
- 重复ActivityRegistration
|
||
- 重复clientMessageId
|
||
- self relation
|
||
|
||
数据库应尽量拒绝。
|
||
|
||
---
|
||
|
||
# 第一百六十二章 Redis故障测试
|
||
|
||
停Redis。
|
||
|
||
必须判断:
|
||
|
||
哪些功能可降级。
|
||
|
||
例如:
|
||
|
||
> 核心数据库业务仍应尽量工作。
|
||
|
||
不能Redis一挂:
|
||
|
||
> 数据全部丢失。
|
||
|
||
---
|
||
|
||
# 第一百六十三章 Recommendation Cache Redis故障
|
||
|
||
可以:
|
||
|
||
> 回数据库实时计算/返回暂时不可用。
|
||
|
||
不能把Redis当正式推荐关系数据源。
|
||
|
||
---
|
||
|
||
# 第一百六十四章 WebSocket Redis故障
|
||
|
||
如果单实例:
|
||
|
||
> 可能仍可工作。
|
||
|
||
如果多实例:
|
||
|
||
实时跨实例受影响。
|
||
|
||
消息仍然:
|
||
|
||
> 已落PostgreSQL。
|
||
|
||
用户重新拉取应恢复。
|
||
|
||
---
|
||
|
||
# 第一百六十五章 对象存储故障测试
|
||
|
||
图片暂时无法上传。
|
||
|
||
文字资料:
|
||
|
||
> 不应全部瘫痪。
|
||
|
||
页面提示:
|
||
|
||
> 图片服务暂时不可用。
|
||
|
||
---
|
||
|
||
# 第一百六十六章 第三方实名认证故障
|
||
|
||
第三方超时:
|
||
|
||
用户看到:
|
||
|
||
> 认证服务暂时不可用,请稍后重试。
|
||
|
||
不能:
|
||
|
||
> 把用户标记为认证失败欺诈。
|
||
|
||
---
|
||
|
||
# 第一百六十七章 微信API故障
|
||
|
||
外部服务失败:
|
||
|
||
- 记录
|
||
- 合理提示
|
||
- 不泄露技术错误
|
||
|
||
---
|
||
|
||
# 第一百六十八章 灾备测试
|
||
|
||
至少验证:
|
||
|
||
```text
|
||
数据库备份
|
||
恢复
|
||
对象存储恢复/版本
|
||
配置恢复
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百六十九章 数据库恢复测试
|
||
|
||
不是只确认:
|
||
|
||
> 有备份文件。
|
||
|
||
必须定期:
|
||
|
||
> 在测试环境实际恢复。
|
||
|
||
---
|
||
|
||
# 第一百七十章 备份恢复验收
|
||
|
||
恢复后检查:
|
||
|
||
```text
|
||
users
|
||
matches
|
||
messages
|
||
activities
|
||
reports
|
||
audit
|
||
```
|
||
|
||
关键关联完整。
|
||
|
||
---
|
||
|
||
# 第一百七十一章 部署回滚测试
|
||
|
||
必须提前验证:
|
||
|
||
```text
|
||
新版本部署
|
||
↓
|
||
发现问题
|
||
↓
|
||
回滚上一版本
|
||
```
|
||
|
||
数据库migration也要考虑兼容。
|
||
|
||
---
|
||
|
||
# 第一百七十二章 Migration测试
|
||
|
||
所有Migration:
|
||
|
||
> 在空数据库跑一遍。
|
||
|
||
同时:
|
||
|
||
> 从上一版本数据库升级一遍。
|
||
|
||
---
|
||
|
||
# 第一百七十三章 Migration不可破坏性原则
|
||
|
||
正式上线前:
|
||
|
||
避免直接:
|
||
|
||
```text
|
||
DROP COLUMN
|
||
```
|
||
|
||
导致旧版本无法运行。
|
||
|
||
采用:
|
||
|
||
```text
|
||
先新增
|
||
双版本兼容
|
||
后续再清理
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百七十四章 Staging上线演练
|
||
|
||
正式生产前至少完整跑一次:
|
||
|
||
```text
|
||
部署
|
||
↓
|
||
Migration
|
||
↓
|
||
Seed必要配置
|
||
↓
|
||
健康检查
|
||
↓
|
||
核心E2E
|
||
↓
|
||
回滚演练
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百七十五章 健康检查
|
||
|
||
建议:
|
||
|
||
```text
|
||
/health/live
|
||
/health/ready
|
||
```
|
||
|
||
检查:
|
||
|
||
- App
|
||
- PostgreSQL
|
||
- Redis
|
||
- Object Storage关键连通状态(可适度)
|
||
|
||
---
|
||
|
||
# 第一百七十六章 Smoke Test
|
||
|
||
每次发布后立即执行:
|
||
|
||
```text
|
||
登录
|
||
查看首页
|
||
用户详情
|
||
Like测试账号
|
||
聊天
|
||
后台登录
|
||
审核列表
|
||
活动列表
|
||
```
|
||
|
||
控制在几分钟内完成。
|
||
|
||
---
|
||
|
||
# 第一百七十七章 自动化测试优先级
|
||
|
||
必须自动化:
|
||
|
||
```text
|
||
Match算法
|
||
状态机
|
||
API权限
|
||
幂等
|
||
关键数据库约束
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百七十八章 不要求所有UI自动化
|
||
|
||
微信小程序完整UI自动化维护成本高。
|
||
|
||
V1可以:
|
||
|
||
> 核心E2E少量自动化 + QA人工回归。
|
||
|
||
---
|
||
|
||
# 第一百七十九章 推荐自动化测试比例
|
||
|
||
核心后端:
|
||
|
||
> 尽量高覆盖。
|
||
|
||
尤其:
|
||
|
||
- Match
|
||
- Relationship
|
||
- Risk
|
||
- Permission
|
||
|
||
不是单纯追求代码覆盖百分比。
|
||
|
||
---
|
||
|
||
# 第一百八十章 测试覆盖率原则
|
||
|
||
不要:
|
||
|
||
> 为80%覆盖率写无意义测试。
|
||
|
||
更重要:
|
||
|
||
> 高风险业务路径全部覆盖。
|
||
|
||
---
|
||
|
||
# 第一百八十一章 Bug严重级别
|
||
|
||
建议:
|
||
|
||
```text
|
||
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。
|
||
|
||
---
|
||
|
||
# 第一百八十七章 缺陷模板
|
||
|
||
建议记录:
|
||
|
||
```text
|
||
标题
|
||
环境
|
||
账号
|
||
前置条件
|
||
操作步骤
|
||
实际结果
|
||
预期结果
|
||
截图/RequestId
|
||
严重级别
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百八十八章 UAT用户验收
|
||
|
||
除了技术测试,还需要:
|
||
|
||
> 实际运营人员验收。
|
||
|
||
包括:
|
||
|
||
- 审核员
|
||
- 红娘
|
||
- 活动人员
|
||
- 管理员
|
||
|
||
---
|
||
|
||
# 第一百八十九章 审核员UAT
|
||
|
||
给审核员:
|
||
|
||
> 20~50条测试审核任务。
|
||
|
||
确认:
|
||
|
||
- 是否知道哪里处理
|
||
- 原因是否好选
|
||
- 能否快速完成
|
||
- 是否容易误操作
|
||
|
||
---
|
||
|
||
# 第一百九十章 红娘UAT
|
||
|
||
给红娘一批模拟用户。
|
||
|
||
任务:
|
||
|
||
```text
|
||
接单
|
||
查看需求
|
||
看候选
|
||
推荐
|
||
跟进
|
||
完成服务
|
||
```
|
||
|
||
观察:
|
||
|
||
> 是否需要额外Excel/纸笔才能完成。
|
||
|
||
如果需要:
|
||
|
||
> 工作台还不完整。
|
||
|
||
---
|
||
|
||
# 第一百九十一章 活动管理员UAT
|
||
|
||
完整演练:
|
||
|
||
```text
|
||
创建活动
|
||
报名
|
||
审核
|
||
最后名额
|
||
签到
|
||
现场异常
|
||
反馈
|
||
互选
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百九十二章 志愿者UAT
|
||
|
||
找一个不了解系统的志愿者。
|
||
|
||
只给简单培训。
|
||
|
||
验证:
|
||
|
||
> 是否能完成签到。
|
||
|
||
如果签到必须专业IT人员操作:
|
||
|
||
> 设计失败。
|
||
|
||
---
|
||
|
||
# 第一百九十三章 风控员UAT
|
||
|
||
模拟:
|
||
|
||
- 骚扰举报
|
||
- 诈骗举报
|
||
- 无证据举报
|
||
- 申诉
|
||
|
||
确认:
|
||
|
||
> 处理链路清晰。
|
||
|
||
---
|
||
|
||
# 第一百九十四章 普通用户UAT
|
||
|
||
至少覆盖不同年龄和数字化能力用户。
|
||
|
||
重点测试:
|
||
|
||
```text
|
||
注册
|
||
资料
|
||
择偶条件
|
||
推荐
|
||
Like
|
||
聊天
|
||
活动
|
||
红娘
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百九十五章 用户UAT核心判断
|
||
|
||
不只是问:
|
||
|
||
> “喜欢吗?”
|
||
|
||
更应该观察:
|
||
|
||
- 会不会用
|
||
- 会不会迷路
|
||
- 是否知道下一步
|
||
- 是否理解必须/最好
|
||
- 是否误解推荐等级
|
||
- 是否知道怎么拉黑举报
|
||
|
||
---
|
||
|
||
# 第一百九十六章 易用性验收
|
||
|
||
核心操作:
|
||
|
||
> 尽量不超过3步。
|
||
|
||
例如Like:
|
||
|
||
```text
|
||
推荐 → 详情 → 喜欢
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百九十七章 文案验收
|
||
|
||
重点检查:
|
||
|
||
> 是否存在商业婚恋套路。
|
||
|
||
禁止:
|
||
|
||
- 桃花爆棚
|
||
- 优质男神
|
||
- 高价值女性
|
||
- VIP
|
||
- 成功率92%
|
||
|
||
---
|
||
|
||
# 第一百九十八章 合规文案验收
|
||
|
||
不能出现:
|
||
|
||
```text
|
||
100%真人
|
||
100%单身
|
||
婚姻状态已官方验证
|
||
绝对安全
|
||
```
|
||
|
||
---
|
||
|
||
# 第一百九十九章 实名标识验收
|
||
|
||
只能表达:
|
||
|
||
> 已实名。
|
||
|
||
不能让用户理解为:
|
||
|
||
> 全部婚恋资料官方真实。
|
||
|
||
---
|
||
|
||
# 第二百章 数据删除/注销验收
|
||
|
||
测试账号注销。
|
||
|
||
必须确认:
|
||
|
||
- 不再推荐
|
||
- 不再搜索显示
|
||
- 不能新聊天
|
||
- 红娘服务停止
|
||
- 未开始活动按规则取消
|
||
- 历史业务关系不崩溃
|
||
|
||
---
|
||
|
||
# 第二百零一章 隐私设置验收
|
||
|
||
关闭:
|
||
|
||
```text
|
||
visibleInSearch
|
||
```
|
||
|
||
必须不再Find。
|
||
|
||
关闭:
|
||
|
||
```text
|
||
visibleInRecommendations
|
||
```
|
||
|
||
必须不被推荐。
|
||
|
||
---
|
||
|
||
# 第二百零二章 隐私状态缓存测试
|
||
|
||
修改隐私后:
|
||
|
||
> 旧缓存立即不再暴露。
|
||
|
||
---
|
||
|
||
# 第二百零三章 Audit验收
|
||
|
||
随机执行:
|
||
|
||
```text
|
||
审核
|
||
Ban
|
||
活动取消
|
||
权限修改
|
||
敏感查看
|
||
```
|
||
|
||
后台必须可以查到:
|
||
|
||
> 谁、什么时候、做了什么。
|
||
|
||
---
|
||
|
||
# 第二百零四章 SensitiveAccess验收
|
||
|
||
查看实名敏感信息。
|
||
|
||
必须产生:
|
||
|
||
```text
|
||
operator
|
||
user
|
||
reason
|
||
time
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百零五章 安全事件演练
|
||
|
||
上线前建议至少桌面演练一次:
|
||
|
||
> “如果用户身份证数据疑似泄露怎么办?”
|
||
|
||
团队必须知道:
|
||
|
||
```text
|
||
谁负责
|
||
怎么停服务
|
||
怎么查影响
|
||
怎么保留证据
|
||
怎么修复
|
||
怎么通知/报告
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百零六章 生产监控
|
||
|
||
上线后至少监控:
|
||
|
||
```text
|
||
API 5xx
|
||
API P95
|
||
数据库连接
|
||
CPU
|
||
内存
|
||
磁盘
|
||
Redis
|
||
WebSocket
|
||
登录失败
|
||
第三方实名认证失败率
|
||
对象存储错误
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百零七章 业务监控
|
||
|
||
重点:
|
||
|
||
```text
|
||
登录成功率
|
||
实名认证成功率
|
||
审核积压
|
||
推荐失败率
|
||
Match创建异常
|
||
消息失败
|
||
活动报名异常
|
||
举报积压
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百零八章 告警分级
|
||
|
||
建议:
|
||
|
||
```text
|
||
SEV1
|
||
SEV2
|
||
SEV3
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百零九章 SEV1
|
||
|
||
例如:
|
||
|
||
- 大面积无法登录
|
||
- 数据库不可用
|
||
- 敏感数据泄露
|
||
- 权限绕过
|
||
- 大量Match重复
|
||
|
||
立即处理。
|
||
|
||
---
|
||
|
||
# 第二百一十章 SEV2
|
||
|
||
例如:
|
||
|
||
- 推荐模块大面积异常
|
||
- 聊天大面积失败
|
||
- 活动报名不可用
|
||
|
||
---
|
||
|
||
# 第二百一十一章 SEV3
|
||
|
||
例如:
|
||
|
||
- 单个非核心统计异常
|
||
- 局部UI问题
|
||
|
||
---
|
||
|
||
# 第二百一十二章 上线方式
|
||
|
||
建议V1采用:
|
||
|
||
> 小范围灰度 → 扩大。
|
||
|
||
不要第一天就:
|
||
|
||
> 全丹阳大规模宣传。
|
||
|
||
---
|
||
|
||
# 第二百一十三章 第一阶段灰度
|
||
|
||
建议:
|
||
|
||
```text
|
||
内部工作人员
|
||
+
|
||
少量受邀真实用户
|
||
```
|
||
|
||
例如:
|
||
|
||
> 数十人。
|
||
|
||
验证:
|
||
|
||
- 真实资料填写
|
||
- 审核
|
||
- 推荐
|
||
- Like
|
||
- Chat
|
||
|
||
---
|
||
|
||
# 第二百一十四章 第二阶段灰度
|
||
|
||
扩大:
|
||
|
||
> 数百人。
|
||
|
||
加入:
|
||
|
||
- 公益红娘
|
||
- 第一场小规模活动
|
||
|
||
---
|
||
|
||
# 第二百一十五章 第三阶段
|
||
|
||
确认:
|
||
|
||
- 核心错误稳定
|
||
- 用户池可用
|
||
- 风控流程可运行
|
||
|
||
再正式推广。
|
||
|
||
---
|
||
|
||
# 第二百一十六章 灰度期间重点观察
|
||
|
||
不是只看注册数。
|
||
|
||
重点:
|
||
|
||
```text
|
||
实名失败
|
||
审核问题
|
||
无候选比例
|
||
用户是否理解Like
|
||
Mutual后是否聊天
|
||
举报
|
||
红娘工作量
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百一十七章 Feature Flag
|
||
|
||
建议关键模块支持:
|
||
|
||
```text
|
||
activityEnabled
|
||
matchmakerEnabled
|
||
imageChatEnabled
|
||
```
|
||
|
||
出现严重问题:
|
||
|
||
> 可以单独关闭。
|
||
|
||
不需要整个平台下线。
|
||
|
||
---
|
||
|
||
# 第二百一十八章 Kill Switch
|
||
|
||
高风险模块建议能够快速关闭:
|
||
|
||
```text
|
||
用户推荐
|
||
聊天图片
|
||
活动报名
|
||
```
|
||
|
||
由高权限配置。
|
||
|
||
---
|
||
|
||
# 第二百一十九章 上线前配置核对
|
||
|
||
必须确认:
|
||
|
||
```text
|
||
微信AppID
|
||
实名认证Provider
|
||
对象存储Bucket
|
||
数据库
|
||
Redis
|
||
域名
|
||
HTTPS证书
|
||
隐私政策版本
|
||
用户协议版本
|
||
运营组织
|
||
角色权限
|
||
风控规则
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百二十章 Secret核对
|
||
|
||
确认:
|
||
|
||
> Secret没有进入Git。
|
||
|
||
---
|
||
|
||
# 第二百二十一章 数据库上线检查
|
||
|
||
确认:
|
||
|
||
```text
|
||
Migration全部成功
|
||
Indexes存在
|
||
Foreign Keys正确
|
||
Unique约束存在
|
||
备份已完成
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百二十二章 权限上线检查
|
||
|
||
必须使用不同角色逐个登录验证。
|
||
|
||
不能只看配置表。
|
||
|
||
---
|
||
|
||
# 第二百二十三章 对象存储上线检查
|
||
|
||
测试:
|
||
|
||
> 未授权公网不能下载用户照片。
|
||
|
||
---
|
||
|
||
# 第二百二十四章 日志上线检查
|
||
|
||
制造测试异常。
|
||
|
||
确认日志:
|
||
|
||
> 无敏感信息。
|
||
|
||
---
|
||
|
||
# 第二百二十五章 Backup检查
|
||
|
||
生产第一次正式开放前:
|
||
|
||
> 完成一次基线备份。
|
||
|
||
---
|
||
|
||
# 第二百二十六章 Rollback检查
|
||
|
||
确认:
|
||
|
||
> 当前版本对应上一稳定镜像/构建包仍可获取。
|
||
|
||
---
|
||
|
||
# 第二百二十七章 Go/No-Go总体标准
|
||
|
||
正式开放前必须开上线评审。
|
||
|
||
结果:
|
||
|
||
```text
|
||
GO
|
||
CONDITIONAL GO
|
||
NO-GO
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百二十八章 NO-GO硬条件
|
||
|
||
以下任何一项存在:
|
||
|
||
> 不得正式上线。
|
||
|
||
```text
|
||
存在P0 Bug
|
||
存在未接受风险的P1 Bug
|
||
核心E2E无法通过
|
||
实名认证不可用
|
||
资料审核不可用
|
||
Mutual Match逻辑错误
|
||
聊天权限错误
|
||
Block无效
|
||
后台严重越权
|
||
敏感数据明文泄露
|
||
活动名额可严重超卖
|
||
数据库无可用备份
|
||
无法回滚
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百二十九章 Conditional GO
|
||
|
||
例如:
|
||
|
||
- 少量P2 Bug
|
||
- 非核心统计延迟
|
||
- 某个P1模块通过Feature Flag暂时关闭
|
||
|
||
可以由负责人明确接受风险后:
|
||
|
||
> 有条件上线。
|
||
|
||
必须记录:
|
||
|
||
- 问题
|
||
- 影响
|
||
- 临时措施
|
||
- 修复计划
|
||
|
||
---
|
||
|
||
# 第二百三十章 GO条件
|
||
|
||
至少:
|
||
|
||
```text
|
||
核心E2E全部通过
|
||
P0=0
|
||
P1=0或全部正式接受
|
||
核心权限测试通过
|
||
隐私测试通过
|
||
并发测试通过
|
||
数据库备份通过
|
||
恢复验证通过
|
||
Smoke通过
|
||
运营UAT通过
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百三十一章 V1上线验收清单——用户核心
|
||
|
||
```text
|
||
□ 微信登录
|
||
□ 手机绑定
|
||
□ 实名
|
||
□ 未成年人拦截
|
||
□ 资料填写
|
||
□ 照片
|
||
□ 择偶条件
|
||
□ 提交审核
|
||
□ 审核状态
|
||
□ 首页推荐
|
||
□ 找对象
|
||
□ 用户详情
|
||
□ Like
|
||
□ Pass
|
||
□ Mutual Match
|
||
□ Unmatch
|
||
□ Block
|
||
□ 举报
|
||
□ 隐私设置
|
||
□ 注销
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百三十二章 上线验收清单——聊天
|
||
|
||
```text
|
||
□ 无Match不能聊
|
||
□ 有Match能聊
|
||
□ Text
|
||
□ Image
|
||
□ 消息幂等
|
||
□ 未读
|
||
□ WS重连
|
||
□ Block即时禁止
|
||
□ Ban即时禁止
|
||
□ 历史分页
|
||
□ 举报入口
|
||
□ RiskNotice
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百三十三章 上线验收清单——活动
|
||
|
||
```text
|
||
□ 创建
|
||
□ 发布
|
||
□ 报名
|
||
□ 审核
|
||
□ 名额
|
||
□ 并发最后名额
|
||
□ 取消报名
|
||
□ 签到
|
||
□ 重复签到
|
||
□ 反馈
|
||
□ 活动互选
|
||
□ 双向生成Match
|
||
□ 活动取消
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百三十四章 上线验收清单——红娘
|
||
|
||
```text
|
||
□ 服务申请
|
||
□ 分配/接单
|
||
□ 用户必要资料
|
||
□ 候选
|
||
□ Required规则
|
||
□ 推荐
|
||
□ 跟进
|
||
□ Waiting User
|
||
□ 活动推荐
|
||
□ 风险转交
|
||
□ 完成服务
|
||
□ 不能看聊天
|
||
□ 不能看身份证
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百三十五章 上线验收清单——后台
|
||
|
||
```text
|
||
□ 统一登录
|
||
□ 不同角色菜单
|
||
□ Data Scope
|
||
□ 用户管理
|
||
□ 审核
|
||
□ 红娘
|
||
□ 活动
|
||
□ 风控
|
||
□ Organization
|
||
□ Operators
|
||
□ Roles
|
||
□ Permissions
|
||
□ Audit
|
||
□ Sensitive Access
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百三十六章 上线验收清单——统计
|
||
|
||
```text
|
||
□ 注册
|
||
□ 实名
|
||
□ 审核
|
||
□ 推荐
|
||
□ Like
|
||
□ Mutual
|
||
□ Chat Started
|
||
□ Successful
|
||
□ 红娘
|
||
□ 活动
|
||
□ 举报
|
||
□ Dashboard一致性
|
||
□ 时区正确
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百三十七章 上线验收清单——安全
|
||
|
||
```text
|
||
□ IDOR
|
||
□ SQL Injection
|
||
□ XSS
|
||
□ CORS
|
||
□ 文件上传
|
||
□ Rate Limit
|
||
□ 暴力登录
|
||
□ Token失效
|
||
□ Secret管理
|
||
□ 日志脱敏
|
||
□ 图片私有
|
||
□ 敏感权限
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百三十八章 上线验收签字角色
|
||
|
||
建议至少由:
|
||
|
||
```text
|
||
产品负责人
|
||
技术负责人
|
||
测试负责人
|
||
运营负责人
|
||
数据/隐私安全负责人
|
||
```
|
||
|
||
确认。
|
||
|
||
一人团队可以兼任。
|
||
|
||
但检查项不能因此消失。
|
||
|
||
---
|
||
|
||
# 第二百三十九章 上线后24小时
|
||
|
||
重点观察:
|
||
|
||
- 登录
|
||
- 实名
|
||
- API错误
|
||
- 数据库
|
||
- 推荐
|
||
- 消息
|
||
- 权限错误
|
||
- 用户反馈
|
||
|
||
---
|
||
|
||
# 第二百四十章 上线后首周
|
||
|
||
每天查看:
|
||
|
||
```text
|
||
新增用户
|
||
实名异常
|
||
审核积压
|
||
无候选率
|
||
消息失败
|
||
举报
|
||
```
|
||
|
||
并快速修复真实用户遇到的问题。
|
||
|
||
---
|
||
|
||
# 第二百四十一章 首场线下活动必须现场演练
|
||
|
||
活动前一天:
|
||
|
||
> 用测试账号完整模拟。
|
||
|
||
活动当天提前:
|
||
|
||
```text
|
||
管理员登录
|
||
签到设备
|
||
二维码
|
||
名单
|
||
网络
|
||
应急方案
|
||
```
|
||
|
||
全部确认。
|
||
|
||
---
|
||
|
||
# 第二百四十二章 活动现场技术应急
|
||
|
||
至少准备:
|
||
|
||
```text
|
||
备用网络
|
||
备用手机
|
||
手工签到方式
|
||
脱敏应急名单
|
||
工作人员联系方式
|
||
```
|
||
|
||
避免现场网络问题导致活动无法执行。
|
||
|
||
---
|
||
|
||
# 第二百四十三章 数据库生产事故原则
|
||
|
||
如果发现数据异常:
|
||
|
||
> 优先停止写入相关模块。
|
||
|
||
不要为了保持页面可用:
|
||
|
||
> 继续写错数据。
|
||
|
||
---
|
||
|
||
# 第二百四十四章 Match事故原则
|
||
|
||
如果发现Match重复:
|
||
|
||
立即考虑关闭:
|
||
|
||
> Like/Matching Feature Flag。
|
||
|
||
先保护数据。
|
||
|
||
---
|
||
|
||
# 第二百四十五章 权限事故原则
|
||
|
||
发现越权漏洞:
|
||
|
||
> 最高优先级。
|
||
|
||
立即:
|
||
|
||
- 封闭接口
|
||
- 撤销Session
|
||
- 检查日志
|
||
- 评估访问范围
|
||
|
||
---
|
||
|
||
# 第二百四十六章 敏感信息事件
|
||
|
||
发现身份证/聊天等泄露:
|
||
|
||
必须进入:
|
||
|
||
> 安全事件响应流程。
|
||
|
||
不能当普通Bug处理。
|
||
|
||
---
|
||
|
||
# 第二百四十七章 线上Bug修复流程
|
||
|
||
```text
|
||
发现
|
||
↓
|
||
定级
|
||
↓
|
||
复现
|
||
↓
|
||
修复
|
||
↓
|
||
自动/人工测试
|
||
↓
|
||
Staging验证
|
||
↓
|
||
发布
|
||
↓
|
||
监控
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百四十八章 不允许直接生产库手改核心数据
|
||
|
||
紧急情况下如果必须:
|
||
|
||
> 经过审批/记录。
|
||
|
||
优先通过:
|
||
|
||
- 正式管理接口
|
||
- 修复脚本
|
||
- Migration
|
||
|
||
---
|
||
|
||
# 第二百四十九章 修复脚本要求
|
||
|
||
必须:
|
||
|
||
- 可重复安全执行
|
||
- 有日志
|
||
- 先Dry Run
|
||
- 备份
|
||
- 可验证结果
|
||
|
||
---
|
||
|
||
# 第二百五十章 测试文档交付物
|
||
|
||
建议项目最终维护:
|
||
|
||
```text
|
||
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
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百五十一章 自动化测试目录建议
|
||
|
||
```text
|
||
tests/
|
||
├── unit/
|
||
├── integration/
|
||
├── api/
|
||
├── permission/
|
||
├── concurrency/
|
||
├── security/
|
||
└── e2e/
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百五十二章 CI必须执行
|
||
|
||
每次合并:
|
||
|
||
```text
|
||
Lint
|
||
Unit Test
|
||
Service Test
|
||
API Integration Test
|
||
Migration Validation
|
||
Build
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百五十三章 主分支保护
|
||
|
||
建议:
|
||
|
||
> 测试未通过不得合并。
|
||
|
||
如果团队小:
|
||
|
||
仍然至少:
|
||
|
||
> CI失败不能直接发布生产。
|
||
|
||
---
|
||
|
||
# 第二百五十四章 Release Candidate
|
||
|
||
正式版本:
|
||
|
||
```text
|
||
v1.0.0-rc.1
|
||
```
|
||
|
||
在Staging完成最终回归。
|
||
|
||
通过后:
|
||
|
||
```text
|
||
v1.0.0
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百五十五章 版本号原则
|
||
|
||
推荐Semantic Versioning:
|
||
|
||
```text
|
||
MAJOR.MINOR.PATCH
|
||
```
|
||
|
||
例如:
|
||
|
||
```text
|
||
1.0.0
|
||
1.0.1
|
||
1.1.0
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百五十六章 Hotfix
|
||
|
||
生产紧急修复:
|
||
|
||
```text
|
||
1.0.1
|
||
```
|
||
|
||
不能随意覆盖:
|
||
|
||
> 1.0.0原构建物。
|
||
|
||
保证可追溯。
|
||
|
||
---
|
||
|
||
# 第二百五十七章 最重要的测试优先级
|
||
|
||
如果时间有限,优先级必须是:
|
||
|
||
```text
|
||
安全与越权
|
||
↓
|
||
数据一致性
|
||
↓
|
||
核心Match关系
|
||
↓
|
||
聊天权限
|
||
↓
|
||
实名认证/审核
|
||
↓
|
||
活动名额
|
||
↓
|
||
红娘权限
|
||
↓
|
||
统计
|
||
↓
|
||
普通UI细节
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百五十八章 不允许为了赶上线牺牲的项目
|
||
|
||
绝不能因为时间紧而跳过:
|
||
|
||
```text
|
||
Block测试
|
||
权限越权测试
|
||
敏感数据测试
|
||
Mutual并发测试
|
||
活动名额并发测试
|
||
数据库备份
|
||
Rollback
|
||
```
|
||
|
||
---
|
||
|
||
# 第二百五十九章 V1质量目标
|
||
|
||
平台正式上线至少应该达到:
|
||
|
||
> **核心链路无阻断。**
|
||
|
||
> **关键关系无重复。**
|
||
|
||
> **高风险权限无越权。**
|
||
|
||
> **敏感数据无明显泄露。**
|
||
|
||
> **弱网情况下关键业务最终一致。**
|
||
|
||
> **工作人员能够按照系统完成服务。**
|
||
|
||
> **发生异常时能够定位、回滚、恢复。**
|
||
|
||
---
|
||
|
||
# 第二百六十章 最终质量原则
|
||
|
||
V1.0必须坚持:
|
||
|
||
> **能打开页面,不等于功能正确。**
|
||
|
||
> **功能正确,不等于状态一致。**
|
||
|
||
> **状态一致,不等于安全。**
|
||
|
||
> **安全,不等于用户真正会用。**
|
||
|
||
> **用户会用,不等于线下工作人员能执行。**
|
||
|
||
因此完整的上线质量标准应该同时包含:
|
||
|
||
```text
|
||
功能正确
|
||
+
|
||
业务状态正确
|
||
+
|
||
数据一致
|
||
+
|
||
并发安全
|
||
+
|
||
权限正确
|
||
+
|
||
隐私安全
|
||
+
|
||
用户易用
|
||
+
|
||
工作人员可执行
|
||
+
|
||
异常可恢复
|
||
+
|
||
数据可追溯
|
||
```
|
||
|
||
最终上线标准不是:
|
||
|
||
> “开发说完成了。”
|
||
|
||
而是:
|
||
|
||
> **用户能顺利完成婚恋服务闭环,工作人员能稳定提供公益服务,系统在异常和风险情况下仍然知道该拒绝什么、保护什么、保留什么、恢复什么。** |