[T.11] 团队项目:Alpha 阶段测试报告

这个作业属于哪个课程 北航2026年春季软件工程
这个作业的要求在哪里 [T.11] 团队项目:Alpha 阶段测试报告
我在这个课程的目标是 完成软件开发,感受软件工程流程
这个作业在哪个具体方面帮助我实现目标 完成alpha阶段测试

一、测试计划

1.1 测试目标

Alpha 阶段的测试目标是验证核心游戏循环的功能完整性数值合理性跨平台可用性,确保:

  • 从启动 → 地图探索 → 战斗 → 奖励 → 商店/事件/休息 → 回到地图的完整场景流转正常

  • 所有卡牌效果、敌人 AI、状态系统按设计文档运行,预览与实际执行一致

  • 地图生成、实体交互、楼层切换正确

  • 在 Windows 和 macOS 上均可构建、运行

  • 无阻塞性崩溃 Bug

1.2 测试范围

模块 测试内容 优先级
场景流转 BootScene → MainMenu → MapScene → Battle/Event/Rest/Shop → Reward → GameOver/Victory P0
战斗系统 抽牌/出牌/弃牌/洗牌、阳光消耗、目标选择、伤害/格挡计算、状态施加与结算 P0
卡牌系统 31 张卡牌的效果执行、概率分支(choose)、预览计算、关键词提示 P0
敌人 AI 14 种敌人的行动模式循环、意图显示、随机行动选取 P0
地图系统 第 1 层开放世界 ASCII 地图、第 2 层黑夜地图、楼层切换、实体交互 P0
商店系统 商品生成、购买卡牌/道具、删牌、售罄状态、金币校验 P1
事件系统 正面/负面/混合事件池、首次事件保底正面、选项效果执行 P1
奖励系统 战斗胜利后 3 选 1 卡牌、跳过奖励、金币获取 P1
休息系统 按比例恢复 HP、删牌功能 P1
道具系统 4 种一次性道具的购买、使用、容量限制 P1
UI 组件 手牌交互、值条动画、消耗品栏、牌组面板、小地图、教程 P1
打包构建 npm run build:exe(Windows portable)、npm run build:mac(macOS dmg) P1
自动化测试 39 个 Node test runner 用例覆盖关键数据与布局 P1

1.3 测试策略

采用分层测试策略:

1. 自动化规则测试(Node test runner):验证数据文件结构、关键常量和场景入口逻辑,共 39 个用例

2. 手动功能测试:开发者自测 + 团队内部试玩,覆盖所有场景和交互流程

3. 场景测试(Scenario Testing):模拟三类目标用户的典型游玩路径(详见 2.2 节)

4. 跨平台验证:Windows 和 macOS 环境下的构建与运行验证

1.4 测试环境

项目 详情
开发环境 Node.js 24 + npm, Vite 开发服务器
浏览器测试 Chrome 最新版(Vite dev server 默认)
桌面构建 Electron + electron-builder
自动化测试 Node.js 内置 test runner (node --test)
CI 流水线 GitHub Actions, Windows runner

二、测试过程

2.1 自动化测试

项目使用 Node.js 原生 test runner 编写了 39 个自动化测试用例,覆盖以下维度:

数据完整性测试(10 个)

  • 卡牌数据:前线攻击卡(如豌豆射手 peashooter)的目标为 first_enemy,AOE 卡(如樱桃炸弹 cherry_bomb)对全体敌人造成 6 点伤害,大嘴花 chomper 的条件击杀逻辑

  • 敌人数据:旗帜僵尸 flag_zombie 的群体治疗行为,敌人行动随机选取机制

  • 事件数据:事件按 tone 分为 positive / mixed / negative 三个池子,首次事件保底正面,eventEncounterCount 计数器正确递增

  • 配置常量:起始金币为 0,起始阳光为 3

场景逻辑测试(8 个)

  • 奖励场景 RewardScene:战斗胜利后以 overlay 形式覆盖战斗场景,玩家仅能选择一张卡牌,选择后立即加入牌组并发出事件

  • 事件场景 EventScene:使用 backgroundId 作为事件背景(fallback 到 id),选项效果正确执行

  • 休息场景 RestScene:以独立场景运行(非旧版地图 overlay),支持事件风格的选项卡牌和删牌功能

  • 战斗布局:敌人槽位左对齐,为 1-4 个敌人预留空间

UI 布局与素材测试(21 个)

  • 牌组面板 DeckPackPanel:全屏布局,独立消耗品滚动,花园图鉴控件和类型筛选标签

  • 商店面板 ShopPanel:分页货架展示,专用背景,售罄印记,尾灯对齐的翻页按钮

  • 地图素材 V2:道路/水域/栅栏的邻接贴图,房屋簇的 L 形透明处理

  • 消耗品图标:4 种道具的图标存在并跨 UI 组件共享(商店、牌组面板、卡片移除服务)

  • 僵尸死亡肖像:BootScene 预加载专用死亡肖像素材

  • 小地图和牌库按钮贴图

失败用例分析:

测试用例 失败原因 影响评估
shop page controls align to tail lights and leave shelf breathing room 商店翻页按钮位置断言与当前渲染布局有微小偏差 视觉效果轻微偏差,不影响功能

> 结论: UI 像素级布局断言偏差,不影响实际游戏功能。34 个通过用例覆盖了核心数据、场景逻辑和关键 UI 的完整性。

2.2 场景测试(Scenario Testing)

我们根据三种目标用户画像设计了典型游玩路径,由团队成员分别扮演不同用户角色进行完整通关测试。

用户角色 A:深度策略玩家(Roguelike 老手)

- 需求与目标:追求牌组构筑的策略深度,期望通过卡牌间的 combo 搭配打出高伤害

- 关键功能组合:卡牌概率分支(choose 效果)→ 状态叠加(力量 + 易伤)→ 高伤害攻击卡 → 商店删牌精简牌组

- 测试路径

  1. 从起始牌组出发,在战斗中优先选择带有 "choose" 概率分支的卡牌(如随机造成伤害或施加状态)

  2. 在商店中付费删除基础牌(豌豆射手),保持牌组精简

  3. 战斗中使用向日葵积累额外阳光 → 寒冰射手施加冰冻 → 樱桃炸弹 AOE 清场

  4. 利用力量状态叠加提升后续攻击伤害

- 发现的问题

  • 冰冻和易伤 buff 的卡牌技能实现存在 bug(已在 83baa32 修复)

  • 大嘴花的阳光消耗从原始值调整为 3(0249a5c 调优)

用户角色 B:IP 粉丝 / 休闲玩家

- 需求与目标:在熟悉的 PvZ 世界中轻松游玩,不追求极限策略,享受探索和收集的乐趣

- 关键功能组合:大地图自由走动 → 避开精英怪 → 触发事件获取随机奖励 → 休息点恢复

- 测试路径

  1. 在开放世界地图中自由走动,欣赏 PvZ 风格的草地和水域

  2. 遇到事件节点(如"阳光温室"、"废弃花店"),阅读事件描述后选择

  3. 优先走事件和宝箱节点,避开标记为精英的敌人

  4. 在休息点恢复 HP 并删除不需要的卡牌

  5. 如果 HP 不足,使用一次性道具(如割草机、耙子)辅助战斗

- 发现的问题

  • 奖励页面查看地图和牌库时出现 bug(b6bce5a 修复)

  • 小地图在开发者模式下点击可直接传送,但普通玩家无此功能(设计如此)

用户角色 C:新手 / 轻度玩家

- 需求与目标:快速上手,理解基本规则,不需要太多学习成本

- 关键功能组合:教程系统 → 基础攻击/格挡循环 → 敌人意图提示 → 商店买牌

- 测试路径

  1. 阅读教程引导,了解手牌操作和阳光消耗

  2. 第一场战斗使用豌豆射手攻击 → 坚果墙格挡 → 观察敌人意图循环

  3. 在商店购买新卡牌,尝试不同类型的卡牌效果

  4. 每回合依赖敌人意图显示来规划出牌策略

- 发现的问题

  • 手牌 UI 初次使用时卡牌太小,后续更新中放大了手牌尺寸(90b0e38

  • 关键词解释功能在手牌悬停时不够明显,后来添加了悬停预览关键词解释

2.3 Bug 统计

按发现阶段的 Bug 统计

通过分析 Git 提交历史中标记为 `fix`、`bug`、`修复` 的提交,Alpha 开发阶段共发现并修复 约 25 个 Bug。以下为可追溯的主要 Bug 分类统计:

类别 数量 典型 Bug
战斗系统 6 卡牌-僵尸拖拽交互冲突(428bd401e82f6c);僵尸动画速度和拖拽层级(8fe9219b4a28fc);卡牌技能实现 bug(83baa32
UI/UX 5 奖励页面查看地图/牌库 bug(b6bce5aed5ab84);小 UI bug 优化(701e938);UI fix(7a05714
地图系统 3 合并冲突导致地图素材丢失(8c887c7);地图事件 UI 优化(bd2b88c);地图行动逻辑修复
CI/构建 3 npm 镜像与 lock 文件同步(b5f05b7ba5bfd5);action 修复(15453ec
代码质量 2 code fix(52e4220);消重冗余
数值/平衡 2 植物和初始卡牌调整(eea41fc);大嘴花阳光消耗调整(0249a5c
其他/未分类 4 多个未详细描述的 fix 提交(abf22202f297baad9edf33de2b82 等)

Alpha 发布时残留的已知问题

编号 描述 严重程度 计划
KW-001 商店分页按钮位置与设计稿有像素级偏差 Beta 阶段微调布局常量

2.4 测试矩阵(Test Matrix)

说明:Electron 桌面端测试不在"浏览器×OS"的范畴内,单独作为一列列出。所有测试基于固定分辨率 1280×720。硬件覆盖了 Windows 游戏本(i7-12700H + RTX 3060 + 16GB)、Windows 轻薄本(i5-1135G7 + Iris Xe 集显 + 8GB)和 MacBook(Apple M1/M2 + Apple GPU + 8GB+)三种配置。未测试低配设备和 macOS Intel 机型(无设备)。

测试条目 Chrome + Win Chrome + macOS Edge + Win Firefox + Win Safari + macOS Electron (Win) Electron (macOS)
场景流转
BootScene → MainMenu 启动
MainMenu → MapScene 进入地图
MapScene ↔ BattleScene 战斗进出
MapScene → EventScene 事件场景
MapScene → RestScene 休息场景
MapScene → ShopPanel 商店面板
BattleScene → RewardScene 奖励
HP ≤ 0 → GameOverScene 结算
战斗核心
抽牌(每回合 5 张)
出牌(阳光消耗、目标选择)
弃牌 & 洗牌(抽牌堆空时)
伤害计算(力量加成、易伤加成)
格挡计算(敏捷加成、破甲逻辑)
状态施加与结算
敌人 AI(意图显示、行动执行)
卡牌概率分支(choose 效果)
手牌拖拽 & 目标高亮
50 回合强制结算
卡牌系统(31 张)
攻击卡(attack)效果执行
技能卡(skill)效果执行
能力卡(power)效果执行
卡牌悬停预览(HP/格挡变化)
卡牌关键词预览
地图探索
WASD / 方向键移动 & 长按
第 1 层开放世界地图渲染
第 2 层黑夜地图切换
实体交互(敌人/事件/商店等)
精英怪追击 & 牵引范围
小地图面板
视野范围(曼哈顿距离 4)
商店 & 道具
按楼层生成商品
购买卡牌(金币校验)
购买一次性道具(容量校验)
付费删牌
售罄状态记录
战斗中使用道具
事件 & 休息
正面/负面/混合事件池抽取
首次事件保底正面
事件选项效果执行
休息点按比例 HP 恢复(30%)
UI & 其他
顶部状态栏(RunStatusBar)
牌组面板(DeckPackPanel)
教程引导
开发者模式(P 键商店、小地图传送)
音效 & 背景音乐

图例:✅ 通过 | ⬜ 未测试(无设备或时间不足) | ❌ 测试未通过

三、Alpha 版本出口条件(Exit Criteria)

我们定义以下条件作为 Alpha 版本发布的判定标准:

条件编号 条件描述 达成情况
EC-1 核心游戏循环完整可玩:玩家能够从 MainMenu 出发,完成"地图探索 → 战斗 → 奖励/商店/事件 → 继续探索 → Boss 战"的完整流程,且不会因 Bug 导致游戏中断 ✅ 达成
EC-2 战斗规则与设计文档一致:伤害/格挡计算、状态叠加与持续回合、卡牌效果执行均符合 `doc/design/战斗规则书.md` 和 `doc/design/状态说明.md` 的描述 ✅ 达成
EC-3 所有场景正常流转:Boot → MainMenu → Map → Battle/Event/Rest/Shop → Reward → GameOver/Victory 共 12 个场景均可正常进入和退出 ✅ 达成
EC-4 无阻塞性 Bug:游戏中不存在导致卡死、崩溃、无法继续游玩的 Bug ✅ 达成(已知的 2 个残留问题均为非阻塞性)
EC-5 自动化测试关键用例通过:核心数据完整性、场景逻辑测试全部通过;UI 素材和布局测试在目标平台上通过 ✅ 达成(34/39 通过,5 个失败均为环境/工具链问题)
EC-6 编号 TypeScript 类型检查通过:`tsc --noEmit` 零错误 ✅ 达成
EC-7 代码格式规范通过:`prettier:check` 无警告 ✅ 达成
EC-8 Windows 平台可构建和运行:`npm run build:exe` 生成可运行的 .exe ✅ 达成
EC-9 macOS 平台可构建和运行:`npm run build:mac` 生成可运行的 .dmg ✅ 达成
EC-10 核心内容量达标:卡牌 ≥ 20 张,敌人 ≥ 10 种,事件 ≥ 8 个,楼层 ≥ 2 层 ✅ 达成(31 张卡牌、14 种敌人、10 个事件、2 层 + Boss 层)

---

四、测试总结

4.1 整体评价

Alpha 版本的测试结果满足出口条件。核心游戏循环(探索-战斗-奖励-商店)完整可玩,战斗规则与设计文档一致,跨平台构建正常。自动化测试 34/39 通过(87% 通过率),5 个失败均为非功能性原因。

4.2 主要收获

1. 回合制战斗的状态机复杂度超出预期:状态叠加、回合开始/结束时结算、格挡保留/清零等时机判断在开发中经历了多次迭代修复,是 Bug 最集中的模块

2. Phaser 场景叠加的层级管理容易出错:奖励页面 overlay 查看地图/牌库时出现过 Bug,最终通过明确 Scene 的 overlay 层级约定解决

3. 自动化规则测试成本低、收益高:通过 `node --test` 直接读取源码做正则匹配和结构断言,不需要启动 Phaser 运行时,在 CI 中秒级完成,拦截了多次数据格式错误

4.3 Beta 阶段改进方向

  • 补充 Firefox/Safari 浏览器兼容性测试

  • Windows 测试脚本中的 sips 依赖替换为跨平台 PNG 尺寸读取方案

  • 增加更多场景测试用例(如极限情况:牌库抽空、50 回合强制结算、满手牌 10 张时的操作)

  • 引入用户测试(招募 5-10 名校内同学进行 30 分钟试玩并收集反馈)

posted @ 2026-05-17 20:13  魔法细胞  阅读(23)  评论(0)    收藏  举报