
1) 【一句话结论】理解游戏核心玩法需从规则拆解、逻辑流程、边界条件入手,基于业务理解设计测试用例需覆盖正常、异常、边界及关联场景,确保功能符合设计预期。
2) 【原理/概念讲解】老师口吻,解释核心玩法理解的关键点:“首先,游戏核心玩法是游戏的‘灵魂’,比如《三国杀》的出牌、技能、结算逻辑,本质是规则和逻辑的组合。理解它需要拆解三个层面:一是规则层,比如‘出牌阶段,你可以使用一张【杀】’,要明确每个动作的触发条件、执行步骤;二是逻辑层,比如技能‘仁德’的结算逻辑是‘出【仁德】后,其他玩家需弃掉一张牌’,要理清动作的先后顺序和影响;三是边界层,比如‘手牌不足时是否无法出牌’,这些边界条件容易遗漏但影响功能正确性。类比来说,就像读一本说明书,规则是文字,逻辑是流程,边界是特殊情况,只有把这三部分都理解透彻,才能设计出有效的测试用例。”
3) 【对比与适用场景】
| 测试用例设计方法 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 等价类划分 | 从输入/输出中选取代表性数据,减少测试用例数量 | 覆盖不同类别,避免冗余 | 规则复杂、输入多样(如手牌数量、技能类型) | 需明确划分等价类,避免遗漏关键类别 |
| 边界值分析 | 聚焦输入/输出的边界值(如手牌0张、1张、2张) | 检查边界条件是否正确 | 数量型输入(如手牌数、技能次数) | 边界值包括最小值、最大值、临界值(如0、1、上限-1) |
| 场景驱动测试 | 基于业务场景(如“主公使用仁德后,其他玩家弃牌”)设计测试 | 聚焦业务流程,覆盖关联场景 | 多步骤流程(如出牌-技能-结算) | 需覆盖正常、异常、边界场景下的业务流程 |
4) 【示例】以“主公技能‘仁德’的出牌逻辑”为例,设计测试用例:
def test_仁德技能():
# 正常场景
main_player_hand = ["仁德", "杀", "闪"]
other_players = [{"hand": ["装备", "装备"], "is_main": False}]
# 执行出牌
result = use_skill("仁德", main_player_hand, other_players)
assert result["other_players"].all_abandoned_one_card() # 其他玩家均弃1张牌
# 边界场景
main_player_hand = ["仁德"]
# 执行出牌
result = use_skill("仁德", main_player_hand, other_players)
assert result["other_players"][0].abandoned_card_count == 1 # 仅1名玩家弃1张
# 异常场景
non_main_player_hand = ["仁德"]
# 执行出牌
result = use_skill("仁德", [], [non_main_player_hand])
assert result["error"] == "非主公玩家不能使用仁德技能" # 异常提示
5) 【面试口播版答案】面试官您好,作为功能测试工程师理解游戏核心玩法,我主要从规则拆解、逻辑流程、边界条件三个层面入手。比如《三国杀》的出牌、技能、结算逻辑,规则层要明确每个动作的触发条件,比如“出牌阶段,你可以使用一张【杀】”;逻辑层要理清技能的结算顺序,比如“仁德”是先出牌再让其他玩家弃牌;边界层要关注手牌数量、技能次数等边界情况。基于业务理解设计测试用例时,我会用等价类划分覆盖不同场景,比如正常出牌、手牌不足、非主公使用等,用边界值分析检查手牌0张、1张等边界,用场景驱动测试覆盖多步骤流程。比如测试“仁德”技能,正常场景是主公出牌后其他玩家弃1张,边界场景是主公仅剩1张【仁德】,异常场景是非主公使用,这样能确保功能符合设计预期。
6) 【追问清单】
7) 【常见坑/雷区】