游戏测试专题第二篇:游戏功能测试与用例设计实战

游戏功能测试不是"点点点",而是用系统化的方法把玩法"测透"。本文教你用场景法、状态迁移法、判定表在MOBA/RPG/卡牌三大品类中落地用例设计。


目录

  1. 游戏功能测试测什么
  2. 游戏用例设计八大方法
  3. 场景法:游戏测试的主力方法
  4. 状态迁移法:技能与Buff测试利器
  5. 判定表法:复杂条件组合克星
  6. 三大品类实战案例
  7. 游戏功能测试 checklist
  8. 总结

一、游戏功能测试测什么

1.1 功能测试的范围

游戏功能测试覆盖游戏内所有"可交互"的模块:

复制代码
核心玩法系统:
  ├── 战斗系统(攻击、技能、伤害、死亡、复活)
  ├── 任务系统(主线、支线、日常、成就)
  ├── 背包系统(物品、装备、使用、丢弃、整理)
  ├── 角色系统(升级、加点、转职、外观)
  ├── 社交系统(好友、公会、聊天、组队、交易)
  ├── 商城系统(购买、充值、退款、限购)
  └── 活动系统(签到、抽奖、限时活动)

外围功能系统:
  ├── 登录注册(账号、实名、防沉迷)
  ├── 设置系统(音效、画质、操作、语言)
  ├── 网络系统(断线重连、切后台、弱网)
  └── 数据系统(存档、云同步、多端互通)

1.2 功能测试的四个层次

层次 测什么 举例
单功能 单个功能是否可用 能否成功释放技能
流程 完整流程是否走通 从登录到进入战斗到结算
异常 异常场景是否处理 战斗中掉线能否恢复
边界 极端情况是否健壮 背包满了还能不能拾取

二、游戏用例设计八大方法

2.1 方法总览

方法 适用场景 游戏中的应用
等价类划分 输入有规律 充值金额、角色等级
边界值分析 有取值范围 血量下限、背包上限
场景法 业务流程 核心玩法流程(主力
状态迁移法 状态流转 技能状态、Buff状态
判定表法 多条件组合 伤害计算、掉落判断
因果图法 输入输出关联 复杂业务规则
正交实验法 多因素多水平 装备搭配、阵型组合
错误推测法 经验补充 历史高发Bug点

2.2 游戏测试的方法优先级

复制代码
游戏功能测试的方法使用频率:

场景法        ████████████████████  ★★★★★(60%用例靠它)
状态迁移法    ██████████████        ★★★★☆(技能/Buff必备)
边界值分析    ██████████████        ★★★★☆(数值相关必用)
等价类划分    ██████████            ★★★☆☆
判定表法      ████████              ★★★☆☆
错误推测法    ██████████            ★★★☆☆(老司机靠它)
正交实验法    ████                  ★★☆☆☆(组合爆炸时用)

三、场景法:游戏测试的主力方法

3.1 什么是场景法

场景法:把业务按"基本流(正常路径)+ 备选流(异常/分支路径)"梳理出来,每条路径就是一条测试场景。

3.2 场景法的两个流

复制代码
基本流(Basic Flow):最顺畅的正常路径
备选流(Alternative Flow):各种异常和分支

测试用例 = 基本流 + 各种备选流的组合

3.3 实战:以"充值购买皮肤"为例

第一步:梳理业务流程

复制代码
基本流:
  打开商城 → 选择皮肤 → 点击购买 → 跳转支付 →
  完成支付 → 返回游戏 → 皮肤到账 → 装备皮肤

备选流:
  A. 余额不足 → 提示"余额不足" → 引导充值
  B. 支付中途取消 → 返回商城 → 未扣款
  C. 支付成功但未返回游戏 → 手动返回 → 皮肤是否到账
  D. 网络中断 → 支付结果未知 → 重连后核对
  E. 重复点击购买 → 是否会重复扣款
  F. 皮肤已拥有 → 重复购买的处理
  G. 支付成功但服务器延迟 → 皮肤延迟到账
  H. 活动价与折扣券叠加 → 价格计算

第二步:生成测试用例

用例编号 场景 前置条件 操作步骤 预期结果
TC-001 正常购买(基本流) 余额充足 商城→选皮肤→购买→支付 扣款成功,皮肤到账
TC-002 余额不足 余额<皮肤价 购买 提示余额不足,不扣款
TC-003 支付取消 - 购买→支付页取消 订单关闭,不扣款
TC-004 支付成功未返回 - 支付成功→杀进程→重进 皮肤正确到账
TC-005 支付中断网 弱网 支付时断网 提示网络异常,重连后状态一致
TC-006 重复点击购买 网络慢 快速连点购买10次 只生成1个订单
TC-007 重复购买已拥有 已有该皮肤 再次购买 提示已拥有/转为其他货币
TC-008 折扣叠加 有折扣券 活动价+用券购买 价格计算正确

3.4 场景法的小技巧

复制代码
1. 每个功能至少找出 5-10 个备选流
2. 重点挖掘"中断类"场景(断网、切后台、杀进程、来电)
3. 关注"重复类"场景(重复点击、重复提交、重复领取)
4. 关注"时序类"场景(先A后B vs 先B后A)
5. 关注"并发类"场景(多端登录、多人同时操作)

四、状态迁移法:技能与Buff测试利器

4.1 为什么游戏需要状态迁移法

游戏角色有大量"状态",状态之间可以互相转换。用状态迁移法能系统覆盖所有状态转换。

4.2 状态迁移图示例

以角色的"战斗状态"为例:

4.3 状态迁移用例设计

状态-事件表:

当前状态 触发事件 预期新状态 测试用例
站立 移动 移动 按方向键,角色开始移动
站立 攻击 攻击 点击攻击键,进入攻击动作
站立 受击 受击 被敌人攻击,进入受击
移动 松开方向 站立 停止移动,回到站立
移动 攻击 攻击 移动中攻击,是否正确打断
攻击 受击 受击 攻击被打断,是否正确
攻击 攻击结束 站立 攻击动作播完回到站立
受击 眩晕 眩晕 受击叠加眩晕效果
眩晕 眩晕结束 站立 眩晕时间到自动恢复
死亡 复活 站立 点击复活,恢复站立
死亡 受击 死亡 死亡后再次受击,不应有反应(边界)

4.4 Buff状态测试要点

复制代码
Buff的叠加规则(最容易出Bug):
  ├── 同类Buff能否叠加?(刷新时间 vs 叠加层数)
  ├── Buff层数上限是多少?超过会怎样?
  ├── Buff过期时机是否准确?
  ├── 死亡时Buff是否清除?
  ├── 切换场景时Buff是否保留?
  ├── 多个Buff叠加的数值是否正确?
  └── Buff与技能释放的互相影响?

举例:一个"攻击力+10%,持续10秒,可叠加5层"的Buff
  → 需要测试:叠加1/2/3/4/5层
  → 第6层是否被拒绝
  → Buff时间是否独立计算
  → 死亡后是否清空
  → 重新叠加是否刷新时间

五、判定表法:复杂条件组合克星

5.1 什么时候用判定表

当功能结果由多个条件组合决定时,用判定表能系统覆盖所有组合。

5.2 实战:伤害计算判定表

复制代码
伤害规则:
  - 基础伤害 = 攻击力 - 防御力
  - 若暴击,伤害 × 2
  - 若目标有"护盾",先扣护盾
  - 若目标血量<30%,触发"斩杀"额外+50%
  - 伤害最低不低于1

条件:
  C1: 是否暴击
  C2: 目标是否有护盾
  C3: 目标血量是否<30%

判定表:

规则 R1 R2 R3 R4 R5 R6 R7 R8
C1 暴击 Y Y Y Y N N N N
C2 护盾 Y Y N N Y Y N N
C3 低血 Y N Y N Y N Y N
动作1 伤害×2 - - - -
动作2 扣护盾 - - - -
动作3 斩杀+50% - - - -
动作4 保底1点 - - - - - -

由判定表生成8条测试用例,每条覆盖一种条件组合,保证组合不遗漏。

5.3 判定表的游戏应用场景

复制代码
适合用判定表的游戏功能:
  ├── 伤害计算(攻击/防御/暴击/减免)
  ├── 掉落判断(幸运值/概率/保底/重复检测)
  ├── 成就触发(多个条件同时满足)
  ├── 战力计算(装备/等级/技能加成)
  ├── 任务完成判定(多条件组合)
  └── 匹配规则(段位/延迟/组队)

六、三大品类实战案例

6.1 MOBA品类(如王者荣耀)

复制代码
测试重点:
  ├── 英雄技能:每个技能的释放、命中、连招、打断
  ├── 装备系统:属性叠加、被动触发、出装顺序
  ├── 对战逻辑:补刀、推塔、击杀、团战
  ├── 匹配系统:段位匹配、组队匹配、人机识别
  ├── 结算系统:评分、战报、加星掉星
  └── 异常场景:掉线重连、挂机判定、托管

典型用例:
  TC-MOBA-001:两个英雄的技能同时命中,伤害是否能正确累加?
  TC-MOBA-002:出装顺序不同是否影响属性最终结果?
  TC-MOBA-003:掉线5分钟内重连,能否回到原战局?
  TC-MOBA-004:一个英雄的减CD装备叠加,CD是否有下限?

6.2 RPG品类(如原神)

复制代码
测试重点:
  ├── 任务系统:主线/支线/世界任务的触发和完成
  ├── 战斗系统:元素反应、属性克制、连携
  ├── 角色养成:等级、天赋、命座、圣遗物
  ├── 地图探索:传送点、宝箱、解谜、采集
  ├── 抽卡系统:概率、保底、结果展示
  └── 存档系统:多端同步、自动存档

典型用例:
  TC-RPG-001:元素反应组合(火+水=蒸发)伤害是否正确?
  TC-RPG-002:圣遗物词条数值是否符合理论计算?
  TC-RPG-003:抽卡90次是否必定出金(保底机制)?
  TC-RPG-004:完成主线后,对应的世界任务是否正确解锁?

6.3 卡牌品类(如炉石传说)

复制代码
测试重点:
  ├── 卡片效果:打出、触发、连锁、结算顺序
  ├── 卡组构建:数量限制、费用曲线、职业限制
  ├── 对战规则:抽卡、手牌上限、疲劳、胜负判定
  ├── 特殊机制:随机效果、发现、变形、窃取
  └── 离线场景:断线、切后台、投降

典型用例:
  TC-CARD-001:两张卡的触发效果同时满足,结算顺序是什么?
  TC-CARD-002:手牌满时抽卡,牌是否会烧掉?
  TC-CARD-003:一方倒计时结束前投降,胜负如何判定?
  TC-CARD-004:随机效果在相同种子下结果是否可复现?

七、游戏功能测试 checklist

7.1 通用检查清单

7.2 用例编写规范

复制代码
好的游戏测试用例应包含:
  ├── 用例编号(TC-模块-序号)
  ├── 用例标题(一句话说明测什么)
  ├── 优先级(P0/P1/P2)
  ├── 前置条件(登录状态/账号数据/环境)
  ├── 操作步骤(清晰可复现,编号列出)
  ├── 预期结果(可验证,具体明确)
  └── 备注(关联需求/Bug/注意事项)

反面例子:
  "测试背包功能" → 太笼统

正面例子:
  "TC-BAG-001:背包满时拾取物品
   前置:背包格子已满(100/100)
   步骤:1.进入地图 2.走到物品上按拾取
   预期:提示"背包已满",物品不消失,可继续拾取"

八、总结

8.1 核心要点

要点 一句话
功能测试范围 覆盖核心玩法系统 + 外围功能系统
主力方法 场景法(60%用例)、状态迁移法、判定表法
场景法核心 基本流 + 备选流,重点挖中断/重复/时序/并发
状态迁移法 技能/Buff/角色状态转换的系统覆盖
判定表法 多条件组合(伤害/掉落/成就)的不遗漏覆盖
用例规范 编号+标题+前置+步骤+预期,可复现可验证

8.2 下一篇预告

📌 下一篇:《游戏测试专题第三篇:游戏数值测试实战》------战斗伤害公式验证、经济系统平衡、概率掉落验证,带你搞懂游戏测试里最"值钱"也最烧脑的数值测试。
🔥 数值测试是游戏测试和软件测试分水岭最大的地方,也是薪资差距的关键。下篇见。

相关推荐
科技泡泡堂2 小时前
想玩《黎明行者之血》?2026年这4款适合玩3A的游戏本值得一看
游戏
梦想平凡5 小时前
百游棋牌源代码开发搭建教程(二):PostgreSQL安装、业务表创建与版本化迁移
数据库·游戏·postgresql
FairGuard手游加固6 小时前
Unity小游戏加密:global-metadata.dat与AssetBundle保护
游戏·unity·游戏引擎
杀不死的坏蛋c1 天前
Playwright自动化框架
测试
ClouGence1 天前
GPT-6 做 UI 自动化测试:Demo 惊艳,但真的适合长期回归吗?
前端·chatgpt·测试
杀不死的坏蛋c1 天前
Pytest自动化测试框架
测试
码流怪侠1 天前
Sunshine 深度拆解:当 NVIDIA GameStream 闭源后,如何用 4 万颗 Star 重建自托管云游戏
游戏·github·nvidia
何宝荣1431 天前
Postman 接口测试入门:从发请求到写断言
测试
RoboWizard1 天前
游戏电脑不装固态硬盘会怎么样?
游戏·电脑