介绍
自动测试已被许多公司充分利用。单元测试,集成测试,UI测试,手动测试和其他方法。但是由于某些原因,在GameDev这样广泛的领域中,测试自动化归结为以下事实:将构建物移交给QA部门进行手动测试。我将尝试告诉我如何开发游戏以及如何为游戏编写测试。
当然,总是有例外,并且在许多公司中,我希望每个版本在进入质量检查之前,尤其是对玩家来说,都经过所有检查。不幸的是,尽管我的选择很小,但我却无法在这些公司工作—在我的职业生涯中,只更换了3家公司。而且在每个测试中,测试都是手动进行的(在最初,甚至没有测试人员,都是通过强制进行的-“由该功能的人进行检查的人”)
关于游戏
关于游戏的几句话-手机游戏《地牢》。英雄在地牢中游荡,收集各种有用的东西,完成任务并抽出这些相同的英雄。描述并没有说明游戏是复杂的,并且具有许多不同的功能。但是在内部,就像通常发生的那样,一切都更加复杂。
同样关于游戏的内部是cocos2d-x-3.17引擎,开发语言是C ++。大多数测试是Python。使用的第三方工具包括TexturePacker(地图集程序集),Spine(2D骨架动画),Tiled(平铺级别编辑器)。这也包括Google Spreadsheets(大多数游戏数据存储在表格中)。目标平台-Android,iOS。正在OS X / Windows上进行开发。
团队很小-2人。艺术家,他是动画师,而我是程序员。没有游戏设计师,没有测试人员。在大多数情况下,他们的工作已被生成,测试和其他脚本取代,这些脚本可以帮助我们进行开发。该游戏仍在开发中,已经有1.5年的历史了。它是在空闲时间开发的,并且此时间是有限的。因此,编写了许多其他代码以最大程度地减少任何日常工作。
使用游戏的测试清单
, , :
(, , )
, cocos2d-x, , (Cocos, CocosStudio, CocosBuilder ). , .
— xml. — xml. . , . , , , — .
, . xml-. , . , . , , / . , Python. , , .
, . , . , . , .
:
: — ID , ; , — , .
. , — . , . , . , .
, , . , — . , — .
, , . ( , 80/20 ). — , . — , . ? — , . , , , , , . . , . , .
. Tower Defense, . 100 , 2 , 3 . 10 . , 1-2 . , , . — , , .
- , :
, . , . — . , .
/ Google-
. , . .
Google- ( )
export_{table}.py . . , . , .
core-
— , . , ECS . , , — , . , . — , (, ).
— . 0 — . — . — , . TDD , .
- level- . , . . , , — . , , , . . . , , . — , . .
— , . , . , ( ECS). .
, — 5*5 ( , ) . — , .

— , , , .
UI
, , — UI . . , . — — . — - ()/ .
:<client_testing_commands name="window_settings_and_credits" text="Window settings, credits">
<sequence repeat_forever="no">
<commands>
<CTCommandWaitNode path="/content/title_layer"/>
<CTCommandAudioEnable enabled="yes"/>
<CTCommandPressButton node_name="bt_settings" />
<CTCommandPressButton window_name="window_settings" name="disable_audio" />
<CTCommandCheckNode window_name="window_settings" name="enable_audio" visible="yes"/>
<CTCommandCheckNode window_name="window_settings" name="disable_audio" visible="no"/>
<CTCommandCheckAudio enabled="no"/>
<CTCommandPressButton window_name="window_settings" name="enable_audio" />
<CTCommandCheckNode window_name="window_settings" name="enable_audio" visible="no"/>
<CTCommandCheckNode window_name="window_settings" name="disable_audio" visible="yes"/>
<CTCommandCheckAudio enabled="yes"/>
<CTCommandPressButton window_name="window_settings" name="credits" />
<CTCommandPressButton window_name="window_credits" name="close" />
<CTCommandPressButton window_name="window_settings" name="restore_inapps" />
<CTCommandCheckNode name="spinner" visible="yes"/>
<CTCommandExit />
</commands>
</sequence>
</client_testing_commands>
, , , .
:
— . . , , . , , . . ( , ) , , , . — , . 10-15 .
Git-
. , . , . 5-10 , . , .
include
, include , . , , , include . , , . , . .
code-style
. , , IDE . .
. — . (2048 )- . , . — , .
Spine
.spine , . cocos2d-x json, . json , . , , . . , .
Firebase TestLab
, apk Firebase TestLab . , OS. Robo-tests , . , . , . — .
, , , .. . . . . , .
CI
git-hooks , CI. bitbucket-pipelines. , TeamCity . unit, integration . . , , .
, , , . , , , .
我很高兴阅读在仍然采用这种做法的公司中如何测试游戏。