游戏好友与组队怎么测:关系状态、邀请竞态、权限与跨端同步
游戏好友与组队怎么测:关系状态、邀请竞态、权限与跨端同步
摘要:好友和组队功能把关系链、在线状态、邀请消息、房间成员与玩法准入连在一起。本文用状态机和并发不变量拆解好友申请、黑名单、组队邀请、队长迁移与跨端同步。
标签:游戏测试、好友系统、组队测试、关系链、状态一致性
一、面试官真正想考什么
这类题考察的是多人交互建模。面试官会观察你是否区分“社交关系”和“临时队伍关系”,是否能处理双方同时操作,以及能否说明客户端缓存与服务端权威状态不一致时如何恢复。
二、30 秒合格回答
我会分别建立好友关系状态机和队伍状态机。好友侧覆盖申请、同意、拒绝、删除、拉黑、备注、上限和隐私权限;组队侧覆盖创建、邀请、申请、审批、队长转移、踢人、离队、匹配和解散。重点设计双方同时加好友、邀请与拉黑同时发生、最后一个队伍名额被多人接受、队长掉线等竞态,并验证服务端权限、消息去重、跨端刷新和断线恢复,最终确保双方看到的关系与队伍成员集合收敛一致。
三、2 分钟高分回答:两个核心状态机
好友关系不能只用一个布尔值表示:
无关系 -> A申请B -> 待处理 -> 双向好友
| | | |
+------ 拉黑/拒绝/过期 <--- 删除
队伍可以抽象为:
无队伍 -> 邀请中/申请中 -> 队员 -> 队长
| |
离队 转让/解散
还要明确邀请过期、玩家已进入其他队伍、队伍已满、正在匹配或战斗中的限制。
四、核心测试范围
1. 好友关系
- 精确搜索、推荐列表、最近玩家和跨服玩家;
- 双方同时申请、重复申请、撤回、拒绝和过期;
- 好友上限在多个申请同时同意时不能被突破;
- 单向删除与双向关系解除后的展示和消息权限;
- 黑名单优先级,以及邀请、私聊、赠送和推荐是否被拦截;
- 在线状态、最后上线时间和隐身设置的可见范围。
2. 组队流程
- 队长邀请、玩家申请、自动同意和房间密码;
- 角色等级、玩法解锁、段位、跨服与版本准入;
- 满员、邀请过期、重复接受和已加入其他队伍;
- 队长转移、踢人、主动离队、掉线超时和队伍解散;
- 匹配中、加载中、战斗中能否修改成员;
- 队员准备状态、地图选择和队长权限。
3. 消息与跨端同步
- 邀请消息具有唯一 ID,重复推送不能生成多条有效邀请;
- 手机和模拟器同时登录时,一端处理后另一端及时失效;
- 断线重连后拉取权威成员快照,而不是继续使用本地列表;
- 队伍频道、语音频道和玩法服务器随成员变更同步;
- 旧页面发起操作时服务端再次校验关系版本。
五、连续追问与参考答案
追问 1:A 和 B 同时向对方发送好友申请会怎样?
产品应定义合并为好友还是保留一条待处理记录。测试同时请求、不同到达顺序和重试,验证最终只有一条关系记录、双方列表一致、好友数各增加一次,通知不会重复轰炸。
追问 2:三个人同时接受只剩一个位置的队伍邀请呢?
用屏障同时释放接受请求,服务端原子判断队伍版本和容量,只允许一个成功。失败者应收到“队伍已满”等可理解结果,成员数、频道成员和玩法房间必须一致。
追问 3:队长掉线后如何测试?
先明确是立即转让、保留一段时间还是解散。覆盖短线重连、超时、战斗内外、唯一队员和多名候选人;验证新队长选择规则稳定,旧队长回来后不会恢复过期权限。
追问 4:拉黑后对方还能从历史邀请进入队伍怎么办?
说明邀请接受接口只校验了邀请有效期,没有读取最新关系权限。修复应在最终入队时再次检查黑名单、队伍容量和玩法准入,历史消息同时标记失效。
追问 5:双方好友列表不一致,怎么定位?
用双方角色 ID 和关系记录 ID 查询关系服务的权威状态,再检查事件投递、缓存版本、分页游标和客户端刷新。区分底层关系写入不一致,还是一方读到旧缓存或列表遗漏。
六、项目案例表达模板
我遇到过队长踢人后,被踢玩家仍进入匹配房间的问题。队伍服务已移除成员,但匹配服务使用了数秒前的成员快照。通过队伍版本号关联日志确认是过期快照。我推动匹配确认阶段再次校验队伍 ID、版本和成员集合,成员变更时主动取消旧匹配票据;随后补测踢人、离队、掉线和多端操作,确保队伍服务、频道与匹配房间最终一致。
七、面试官评分点
- 能覆盖好友与组队主流程:基础;
- 能画出关系和队伍状态机:中级;
- 能处理容量、邀请和队长迁移竞态:中高级;
- 能说明跨服务版本校验和最终收敛:高级;
- 能兼顾隐私、黑名单和跨端体验:专项能力完整。
八、常见失分回答
- 把好友关系简单理解为一个开关;
- 只以队长客户端列表判断队伍成员;
- 邀请接受时不重新验证权限和容量;
- 忽略黑名单与私聊、赠送、推荐的联动;
- 只测单设备,不测消息重复和跨端处理。
面试实战加练
设计A邀请B组队、B同时拉黑A、邀请消息又因弱网延迟到达的竞态。分别给出好友关系、黑名单、队伍成员和客户端提示的最终预期,并说明关系版本或服务端校验放在哪一步。
结语
好友组队测试的关键不是“能不能拉人”,而是多个玩家、多个终端和多个服务在竞态后仍能对同一段关系达成一致。
更多推荐




所有评论(0)