لعبة اختبار الأتمتة

المقدمة


يستخدم العديد من الشركات الاختبار الآلي بكامل طاقته. اختبارات الوحدة واختبارات التكامل واختبارات واجهة المستخدم والاختبار اليدوي وطرق أخرى. ولكن لسبب ما ، في منطقة كبيرة مثل GameDev ، ترجع أتمتة الاختبار إلى حقيقة أن الوحدات يتم نقلها إلى قسم ضمان الجودة للاختبار اليدوي. سأحاول أن أخبر كيف أقوم بتطوير الألعاب ، وكيف أكتب الاختبارات لها.



بالطبع ، هناك دائمًا استثناءات ، وفي العديد من الشركات ، آمل أن يمر كل مبنى بمعظم الشيكات قبل الدخول في ضمان الجودة ، بل وأكثر من ذلك مع اللاعبين. لسوء الحظ ، لم أتمكن من العمل في هذه الشركات ، على الرغم من أن الاختيار صغير - تم استبدال 3 شركات فقط خلال حياتي المهنية. وفي كل منها ، تم إجراء الاختبار يدويًا فقط (وفي البداية لم يكن هناك حتى مختبرين ، قم بذلك بالقوة - "من قام بفحص الميزة")



عن اللعبة


بضع كلمات حول اللعبة - لعبة الجوال المحصنة. يتجول الأبطال في الأبراج المحصنة ، ويجمعون أشياء مفيدة مختلفة ، ويكملون المهام ويضخون نفس الأبطال. لا يقول الوصف أن اللعبة معقدة ولها العديد من الميزات المختلفة. ولكن في الداخل ، كما يحدث عادة ، كل شيء أكثر تعقيدًا.


أيضا عن داخل اللعبة هو محرك cocos2d-x-3.17 ، لغة التطوير هي C ++. معظم الاختبارات هي Python. من أدوات الطرف الثالث المستخدمة - TexturePacker (تجميع الأطلس) ، Spine (الرسوم المتحركة الهيكلية ثنائية الأبعاد) ، مبلط (محرر مستوى البلاط). يتضمن هذا أيضًا جداول بيانات Google (يتم تخزين معظم بيانات اللعبة في جداول). المنصات المستهدفة - Android و iOS. التطوير قيد التشغيل على OS X / Windows.


الفريق صغير - شخصان. فنان ، وهو رسام متحرك وأنا مبرمج. لا يوجد مصمم ألعاب ، ولا يوجد مختبرين. في الغالب ، تم استبدال عملهم بالجيل والاختبارات والنصوص الأخرى التي تساعدنا في عملية التطوير. اللعبة لا تزال قيد التطوير ، بالفعل 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