Pengujian Otomasi Game

pengantar


Pengujian otomatis digunakan untuk potensi penuhnya oleh banyak perusahaan. Tes unit, Tes integrasi, Tes UI, pengujian manual dan metode lainnya. Tetapi untuk beberapa alasan, di area yang luas seperti GameDev, otomatisasi uji turun ke fakta bahwa build dipindahkan ke departemen QA untuk pengujian manual. Saya akan mencoba memberi tahu bagaimana saya mengembangkan game, dan bagaimana saya menulis tes untuk mereka.



Tentu saja, selalu ada pengecualian dan di banyak perusahaan, saya berharap setiap build melewati sebagian besar cek sebelum masuk ke QA, dan terlebih lagi dengan para pemain. Sayangnya, saya tidak dapat bekerja di perusahaan seperti itu, meskipun pilihannya kecil - hanya 3 perusahaan yang diganti selama karier saya. Dan di masing-masing pengujian hanya dilakukan secara manual (dan yang pertama bahkan tidak ada penguji, lakukan dengan paksa - "siapa pun yang melakukan fitur memeriksanya")



Tentang permainan


Beberapa kata tentang gim - Dungeon gim seluler. Pahlawan berkeliaran di ruang bawah tanah, mengumpulkan berbagai hal berguna, menyelesaikan tugas dan memompa para pahlawan yang sama ini. Deskripsi tidak mengatakan bahwa gim ini rumit dan memiliki banyak fitur berbeda. Tetapi di dalam, seperti yang biasa terjadi, semuanya jauh lebih rumit.


Juga tentang bagian dalam permainan adalah mesin cocos2d-x-3.17, bahasa pengembangannya adalah C ++. Sebagian besar tes adalah Python. Dari alat pihak ketiga yang digunakan - TexturePacker (atlas assembly), Spine (animasi kerangka 2d), Tiled (editor level ubin). Ini juga termasuk Google Spreadsheets (sebagian besar data game disimpan dalam tabel). Platform target - Android, iOS. Pengembangan sedang berlangsung di OS X / Windows.


Tim ini kecil - 2 orang. Seorang seniman, dia adalah seorang animator dan saya seorang programmer. Tidak ada perancang permainan, tidak ada penguji. Sebagian besar, pekerjaan mereka telah digantikan oleh pembuatan, tes, dan skrip lain yang membantu kita dalam proses pengembangan. Game ini masih dalam pengembangan, sudah 1,5 tahun. Ini dikembangkan di waktu luang dan waktu ini terbatas. Oleh karena itu, banyak kode tambahan ditulis untuk meminimalkan pekerjaan rutin.


Daftar tes menggunakan game



, , :




(, , )


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



, , , . , , , .


Saya senang membaca bagaimana game diuji di perusahaan tempat mereka masih mempraktikkan praktik ini.

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


All Articles