تضمين اختبارات الوحدة والاختبارات الوظيفية

يوضّح هذا القسم كيفية إجراء اختبارات Trade Federation والمساهمة فيها بعد إجراء تغيير على المشروع. وتتضمّن هذه البيانات ما يلي:

  • مكان إضافة صفوف اختبار الوحدات الجديدة
  • تشغيل اختبارات الوحدة في Eclipse وخارج Eclipse IDE
  • أماكن إضافة الاختبارات الوظيفية
  • إجراء الاختبارات الوظيفية
  • تنفيذ بعض عمليات التحقّق من TF قبل الإرسال محليًا

إضافة اختبارات الوحدة

في "مشروع Android المفتوح المصدر" (AOSP)، أضِف فئة اختبارات الوحدة في: tools/tradefederation/core/tests/src/com/android/tradefed/UnitTests.java

ملاحظة مهمة: ستؤدي إضافة فئات اختبار الوحدة الجديدة إلى هذه المواقع إلى تشغيلها تلقائيًا في مرحلة ما قبل الإرسال بدون إعداد إضافي.

تشغيل اختبارات الوحدة

تقع جميع اختبارات وحدة AOSP والاختبارات الوظيفية للاتحاد التجاري في مشروع tools/tradefederation/core/tests.

داخل Eclipse، لإجراء اختبار وحدة فردية، ما عليك سوى النقر بزر الماوس الأيمن على الاختبار واختيار تشغيل باسم > JUnit. لإجراء جميع اختبارات الوحدة، شغِّل مجموعة com.android.tradefed.UnitTests.

يمكنك أيضًا بدء اختبار الوحدة من سطر الأوامر في شجرة مصدر Tradefed بعد الإنشاء، على النحو التالي: tools/tradefederation/core/javatests/run_tradefed_tests.sh

يمكن تنفيذ اختبارات الوحدة بشكل مستقل، ولكن يجب تنفيذ الاختبارات الوظيفية باستخدام Trade Federation نفسه، إذ تتطلّب هذه الاختبارات جهاز Android. يجب أن تلتزم جميع الاختبار ات الوظيفية باصطلاح التسمية *FuncTest.

التحقّق من نتائج اختبارات الوحدة

عند تشغيل run_tradefed_tests.sh، تُجري اختبارات الوحدات جميع أجزاء مجموعة الاختبار، بما في ذلك بعض حالات الخطأ. ستقوم بطباعة الإخراج المطوَّل إلى وحدة التحكم، بما في ذلك تتبعات تسلسل استدعاء الدوال البرمجية.

سيشير الملخّص النهائي للنتائج إلى ما إذا حدث خطأ أم لا.

مثال على الملخّص النهائي في وحدة التحكّم:

12:55:02 ========== Result Summary ==========
Results summary for test-tag 'TFUnitTests': 3355 Tests [3355 Passed]

يتم الاحتفاظ بجميع الاختبارات لاجتيازها، لذا إذا حدث أيّ تعذّر في التغيير المحلي، يُرجى التأكّد من إصلاح الاختبارات.

إضافة اختبارات وظيفية

  • إذا كان الاختبار الوظيفي يتضمّن جهازًا (يستخدم أي واجهة برمجة تطبيقات ITestDevice)، يمكن العثور على تعريف السلسلة في com.android.tradefed.DeviceFuncTests. بخلاف ذلك، يمكن العثور على تعريف المجموعة في com.android.tradefed.FuncTests.

  • إذا كان من المنطقي وضع طرق الاختبار في إحدى الفئات الفرعية الحالية للمجموعة، فتفضل إضافتها هناك. وبخلاف ذلك، لا تتردد في إضافة فئة جديدة إلى الجناح المناسب.

  • وفي كلتا الحالتين، يتم تنفيذ الاختبار تلقائيًا في مسار CI مع الاختبارات الوظيفية الأخرى، وذلك من خلال إضافته إلى الحزمة.

إجراء الاختبارات الوظيفية

لإجراء اختبار وظيفي من Eclipse:

  1. تأكَّد من أنّ الجهاز متصل بالمضيف وأنّ adb وfastboot، إن أمكن، في PATH في Eclipse. وتتمثل أسهل طريقة للقيام بذلك في تشغيل Eclipse من إعداد واجهة الأوامر باستخدام مسار PATH المناسب.
  2. أنشئ تطبيق Java. يمكنك تنفيذ الضبط من خلال تشغيل > تنفيذ الإعدادات.
  3. اضبط المشروع على tradefed-tests والفئة الرئيسية على com.android.tradefed.command.CommandRunner.
  4. شغِّل m tradefed-all.
  5. توفير وسيطات سطر الأوامر التالية في علامة التبويب الوسيطات: host --class <full path of test class to run>
  6. انقر على تشغيل.

لتشغيل الاختبارات الوظيفية خارج Eclipse

  1. إنشاء اتحاد تجاري
  2. وصِّل جهاز Android بالمضيف.
  3. تشغيل tools/tradefederation/core/javatests/run_tradefed_func_tests.sh
  4. يمكنك اختياريًا اختيار الجهاز من خلال إلحاق --serial <serial no> كما يظهر في ناتج adb devices.

إجراء اختبارات ما قبل الإرسال في TF على التغييرات المحلية

إذا كنت تريد إجراء عملية الفحص بالطريقة نفسها التي يتم بها إرسال النموذج إلى Trusted Testers، استخدِم ما يلي:

tools/tradefederation/core/javatests/run_tradefed_aosp_presubmit.sh

سيؤدي ذلك إلى تشغيل جميع اختبارات ما قبل الإرسال لنموذج TF على نموذج TF الذي تم إنشاؤه محليًا ل help you validate that your change is not breaking any tests.

اختبارات ما قبل الإرسال في TF هي مجموعة شاملة من اختبارات الوحدة المذكورة أعلاه، ولكنّه يتم إجراؤها ببطء أكبر. لذلك، ننصحك بإجراء اختبارات الوحدة أثناء التطوير لتأكيد الجودة بشكلٍ أسرع وإجراء عمليات الفحص قبل الإرسال قبل تحميل طلب التغيير.