游戏自动化测试

介绍


自动测试已被许多公司充分利用。单元测试,集成测试,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
  • , . , . , .

: — 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>

, , , .


:


  • ,
  • , , .
  • CI , .

— . . , , . , , . . ( , ) , , , . — , . 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 . . , , .



, , , . , , , .


我很高兴阅读在仍然采用这种做法的公司中如何测试游戏。

Source: https://habr.com/ru/post/undefined/


All Articles