Test d'automatisation de jeu

introduction


Les tests automatisés sont utilisés à leur plein potentiel par de nombreuses entreprises. Tests unitaires, tests d'intégration, tests d'interface utilisateur, tests manuels et autres méthodes. Mais pour une raison quelconque, dans un domaine aussi vaste que GameDev, l'automatisation des tests se résume au fait que les builds sont transférés au département QA pour des tests manuels. Je vais essayer de vous expliquer comment je développe des jeux et comment j'écris des tests pour eux.



Bien sûr, il y a toujours des exceptions, et dans de nombreuses entreprises, j'espère que chaque build passe par la plupart des contrôles avant d'entrer dans l'AQ, et en particulier pour les joueurs. Malheureusement, je n'ai pas pu travailler dans ces entreprises, bien que la sélection soit petite - seules 3 entreprises ont été remplacées au cours de ma carrière. Et dans chacun d'eux, le test n'a été effectué que manuellement (et dans le premier, il n'y avait même pas de testeurs, faites-le de force - «celui qui a fait la fonctionnalité le vérifie»)



À propos du jeu


Quelques mots sur le jeu - le jeu mobile Dungeon. Les héros se promènent dans les donjons, collectent diverses choses utiles, accomplissent des tâches et pompent ces mêmes héros. La description ne dit pas que le jeu est complexe et qu'il a de nombreuses fonctionnalités différentes. Mais à l'intérieur, comme cela arrive généralement, tout est beaucoup plus compliqué.


Le moteur cocos2d-x-3.17 est également à l'intérieur du jeu, le langage de développement est C ++. La plupart des tests sont en Python. Les outils tiers utilisés sont TexturePacker (assemblage d'atlas), Spine (animation squelettique 2D), Tiled (éditeur de niveau de tuile). Cela inclut également les feuilles de calcul Google (la plupart des données de jeu sont stockées dans des tableaux). Plateformes cibles - Android, iOS. Le développement est en cours sous OS X / Windows.


L'équipe est petite - 2 personnes. Artiste, il est animateur et je suis programmeur. Il n'y a pas de game designer, pas de testeurs. Pour la plupart, leur travail a été remplacé par la génération, les tests et d'autres scripts qui nous aident dans le processus de développement. Le jeu est encore en développement, déjà 1,5 ans. Il est développé en temps libre et ce temps est limité. Par conséquent, beaucoup de code supplémentaire est écrit pour minimiser tout travail de routine.


Liste des tests utilisant le jeu



, , :




(, , )


, 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 . . , , .



, , , . , , , .


Je suis heureux de lire comment les jeux sont testés dans les entreprises où ils pratiquent encore cette pratique.

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


All Articles