
الجمهور
مهندسو ضمان الجودة ، ومختبرو تطبيقات الهاتف المحمول ، والأتمتة.
المشكلة
أثناء اختبار تطبيقات Android (ليس فقط ، ولكن أيضًا سنتحدث فقط عن هذا النظام الأساسي) ، عليك تثبيت العديد من التجميعات للمنتج / المنتجات التي تم اختبارها. تستغرق هذه العملية وقتًا وجهدًا ، وهو أكثر كفاءة في الإنفاق على إيجاد الأخطاء.
في هذه المقالة ، سنلقي نظرة على حل موجود ، ونكتب الحل الخاص بنا في Python ونقارنه.
حل جاهز
ربما يتم توفير الحل الأكثر شيوعًا لهذه المشكلة في الوقت الحالي بواسطة خدمة Crashlytics ، والتي تتضمن مثبت بيتا.
فكر في عملية تثبيت التطبيق النموذجية باستخدام Crashlytics Beta:
- نجد أيقونة بيتا (1) → اضغط (2) = يبدأ التطبيق.
- نجد المشروع المطلوب (3) → قم بالضغط على (4) = تفتح شاشة بقائمة من التجميعات.
- ابحث عن التجميع المطلوب (5) ← قم بالنقر فوق "تنزيل" (6) = يتم تنزيل ملف التثبيت على الجهاز.
- يتم عرض شاشة مع اقتراح لتثبيت التطبيق ← اضغط على "تثبيت" (7) = يتم عرض شاشة التثبيت.
- ابحث عن التطبيق المثبت (8) → اضغط (9) = يبدأ التطبيق ؛ جاهز للاختبار.
لذا ، لتثبيت تطبيق واحد وتشغيله باستخدام Crashlytics Beta ، تحتاج إلى تنفيذ ما مجموعه تسعة إجراءات على الأقل. سنركز على هذه المؤشرات ونحاول إنشاء أداة تثبيت تتطلب إجراءات أقل لحل المشكلات المماثلة.
حل مخصص
نختار Python كلغة برمجة ، لأنها مناسبة لمهمتنا وتحظى بشعبية كبيرة ، بما في ذلك بين مهندسي ضمان الجودة.
للتفاعل مع Android ، سنستخدم adb ، وهو جزء من Android SDK القياسي.
لتنزيل الملفات - Wget.
في حالتنا ، يتم تنفيذ التجميعات في TeamCity.
الآن دعنا ننتقل إلى كتابة التعليمات البرمجية.
بادئ ذي بدء ، نقوم باستيراد وحدة العمليات الفرعية في المشروع ، فمن الضروري تنفيذ أوامر wget و adb .
import subprocess
أضف الإعدادات اللازمة لـ Wget.
settings = {'user': '—user=__teamcity', 'password': '—password=__teamcity', 'way': '____'}
سنقوم بتثبيت التطبيقات عن طريق رقم البناء ، لذلك سنقوم بتعليم البرنامج النصي لطلب هذه المعلمة.
number = input(' № : ')
لنفترض أننا بحاجة إلى تثبيت جمعيتين في وقت واحد: الاختبار والقتال. سنقوم بتنزيلها من TeamCity. للقيام بذلك ، نجد المسار الكامل للملفات عن طريق فتح صفحة الخدمة والعثور على التجميع في القطع الأثرية. سيبدو عنوان URL ما قبل التجميع كما يلي:
https://teamcity.mysite.com/repository/app/_/_/myapp-_-_.apk
في العنوان ، بدلاً من رقم التجميع ، يمكنك رؤية رقم التعريف ، على سبيل المثال ، / 1234: id /. لن نذكر هنا الرقم ، بل رقم التجميع.
سنكتب وظيفة لتنزيل التجميعات المحددة.
def download(type_b): url = 'http://teamcity.mysite.com/repository/app/{0}/{1}/myapp-{0}-{1}.apk'.format(number, type_b)
سنكتب وظيفة لتثبيت التطبيقات وتشغيلها. أولاً ، قم بإزالة التجميعات المثبتة مسبقًا. لا تنس أنه إذا لم يكن هناك تطبيق واحد على الأقل على الجهاز ، فسينتهي البرنامج النصي بخطأ. لتجنب هذا ، سوف نتجاهل الأخطاء.
في هذا المثال الخيالي ، حزمتان:
- com.myapp.prod
- com.myapp.test
بدء الأنشطة:
- com.myapp.prod/com.myapp.StartActivity
- com.myapp.test / com.myapp.StartActivity
ستكون أسماء الحزم والنشاط الخاصة بك مختلفة.
def install(type_b): try:
تتم كتابة جميع الوظائف اللازمة. الآن يمكن تطبيقها.
بالإضافة إلى ذلك ، نقوم بإضافة معالج للحالة عندما لا يكون التجميع المحدد في TeamCity.
while True: try:
البرنامج النصي جاهز. نقوم بحفظه ، على سبيل المثال ، تحت اسم installer.py
أضف اسمًا مستعارًا ، مثل alias inst = 'python ~ / scripts / installer.py'
تحقق
لذلك ، لتثبيت تجميع واحد باستخدام Crashlytics Beta ، تحتاج إلى تنفيذ 9 إجراءات. للمقارنة ، نقيس هذا المؤشر في البرنامج النصي.
- نبدأ البرنامج النصي بالأمر inst (1) = يتم عرض اقتراح لتعيين رقم البناء.
- قم بتعيين رقم التجميع (2) = يتم حذف التجميعات القديمة ؛ تنزيل وتثبيت وإطلاق جديدة. التطبيق جاهز للاختبار.
النتيجة
بيتا (بناء واحد) - 9 إجراءات (لا تشمل حذف الإصدارات القديمة).
البرنامج النصي الخاص بك (عدد التجميعات كما تريد) - 2 إجراءات.
مكافأة إضافية للحل المخصص هي أنه يقاس (إضافة تثبيت العديد من المنتجات إلى عدد من الأجهزة ، وما إلى ذلك) ، كما أنه يتكيف بسهولة مع مهام الاختبار التلقائي.
مصادر