يمكن لمكوّن إضافي لنظام Gradle المتوافق مع Android (AGP) إنشاء تقارير حول نسبة استخدام رموز الصفحة في اختبارات لقياس حالة التطبيق باستخدام وكيل تغطية على الجهاز فقط. يستخدم مكوّن AGP الإضافي تلقائيًا أداة JaCoCo مع فئات تطبيقك عند إنشائه، ما يعني أنّه يضيف رمزًا يسجّل أجزاء تطبيقك التي يتم تشغيل الاختبارات فيها. باستخدام وكيل التغطية على الجهاز فقط، ينشئ AGP تطبيقك بدون هذا الرمز الإضافي، ويزوّد الوكيل فئات تطبيقك بأدوات على الجهاز الاختباري أثناء تنفيذ الاختبارات. توضّح هذه الصفحة كيفية تفعيل نسبة استخدام رموز الصفحة على الجهاز فقط وإنشاء التقارير.
مقارنةً بنسبة استخدام رموز الصفحة في مدّة التصميم، توفّر نسبة استخدام رموز الصفحة على الجهاز فقط المزايا التالية:
- عمليات تصميم أسرع: لا يشغّل المكوّن الإضافي لنظام Gradle المتوافق مع Android خطوة قياس JaCoCo في فئات تطبيقك والتبعيات الخاصة بها، ما قد يقلل من أوقات التصميم بنسبة تتراوح بين %10 و%20.
- حِزم APK أصغر حجمًا لتصحيح الأخطاء: لا يضيف المكوّن الإضافي لنظام Gradle المتوافق مع Android رمز تتبُّع التغطية إلى فئات تطبيقك، ما قد يؤدي إلى تقليل حجم حزمة APK لتصحيح الأخطاء بنسبة تتراوح بين %20 و%25.
تعتمد التحسينات الفعلية في وقت الإنشاء وحجم ملف APK على مشروعك.
المتطلبات الأساسية
لاستخدام ميزة "نسبة استخدام رموز الصفحة على الجهاز فقط"، تأكَّد من أنّ مشروعك وأجهزة الاختبار تستوفي المتطلبات التالية:
- الإصدار 9.6.0-alpha01 من AGP أو إصدار أحدث
- جهاز أو محاكي يعمل بنظام التشغيل Android 9 (مستوى واجهة برمجة التطبيقات 28) أو إصدار أحدث
- نوع إصدار قابل للتصحيح للصيغة التي تختبرها، مثل نوع الإصدار التلقائي
debug. يمكن إرفاق الوكيل بالتطبيقات القابلة للتصحيح فقط. - اختبارات قياس حالة التطبيق التي يتم إجراؤها باستخدام
AndroidJUnitRunnerأو أداة تشغيل اختبارات مخصّصة تتيح إجراء هذه الاختبارات
تفعيل نسبة استخدام رموز الصفحة على الجهاز فقط
تستخدم نسبة استخدام رموز الصفحة على الجهاز فقط السمة enableAndroidTestCoverage نفسها التي تستخدمها نسبة استخدام رموز الصفحة في وقت الإنشاء. اضبط enableAndroidTestCoverage على true في ملفات التصميم على مستوى الوحدة لكل صيغة تريد الحصول على تقارير التغطية لها:
Kotlin
android {
// ...
buildTypes {
debug {
// Enable coverage for instrumentation tests
enableAndroidTestCoverage = true
}
}
}
أنيق
android {
// ...
buildTypes {
debug {
// Enable coverage for instrumentation tests
enableAndroidTestCoverage true
}
}
}
بعد ذلك، فعِّل وكيل التغطية على الجهاز فقط وتجميع التقارير في ملف gradle.properties الخاص بمشروعك:
android.experimental.androidTest.coverage.useOnDeviceAgent=true
android.experimental.reportAggregationSupport=true
تُنشئ ميزة "نسبة استخدام رموز الصفحة على الجهاز فقط" تقرير HTML باستخدام العارض نفسه المستخدَم في تقارير نسبة استخدام رموز الصفحة الموحّدة، لذا تتطلّب كلتا السمتَين.
إنشاء تقارير حول نسبة استخدام رموز الصفحة على الجهاز فقط
لتشغيل اختبارات لقياس حالة التطبيق وإنشاء تقارير التغطية، عليك توصيل جهاز أو تشغيل محاكي، ثم تنفيذ المهمة التالية:
| نطاق التغطية | الأمر | الإبلاغ عن الموقع الجغرافي |
|---|---|---|
| صيغة واحدة | ./gradlew :module-name:createVariantNameAndroidTestCoverageReport |
path-to-your-project/module-name/build/reports/coverage/androidTest/variant/connected/index.html |
الاختلافات عن نسبة استخدام رموز الصفحة في وقت الإنشاء
يمكن أن تعرض تقارير التغطية على الجهاز فقط وأثناء عملية الإنشاء نتائج مختلفة للاختبارات نفسها. يُرجى وضع نقاط الاختلاف التالية في الاعتبار عند مقارنة التقريرَين أو عند نقل حدود التغطية من أحدهما إلى الآخر:
| المنطقة | نسبة استخدام رموز الصفحة أثناء الإنشاء | نسبة استخدام رموز الصفحة على الجهاز فقط |
|---|---|---|
| عند قياس أداء الفئات | عندما ينشئ "المكوّن الإضافي لنظام Gradle المتوافق مع Android" تطبيقك، باستخدام JaCoCo | على جهاز الاختبار أثناء تشغيل الاختبارات، باستخدام وكيل التغطية |
| الصفوف في التقرير | جميع الفئات المجمّعة، باستثناء الرموز البرمجية التي تم تصنيفها على أنّها من إنشاء الذكاء الاصطناعي التوليدي، مثل مصانع Dagger | الفئات التي تحتوي على ملف مصدر في مجلدات المصدر الخاصة بالوحدة، بما في ذلك مصانع Dagger |
| عدد التعليمات | تعليمات الرمز الثنائي في Java | تعليمات رمز DEX الثنائي |
| Branch counts | الفروع في رمز بايت Java | الفروع في رمز بايت DEX يمكن لأداة D8 تجميع الشروط في فروع مختلفة، وتستبعد كل أداة فروعًا مختلفة من إنشاء برنامج التجميع، لذا يمكن أن تختلف الأعداد. |
| العدادات | التعليمات والفروع والأسطر والتعقيد والطرق والفئات | التعليمات والفروع والأسطر والطرق والفئات لا تتوفّر عدّادات التعقيد بعد. |
| الأجهزة الاختبارية | جميع مستويات واجهة برمجة التطبيقات التي يتوافق معها تطبيقك | Android 9 (المستوى 28 من واجهة برمجة التطبيقات) والإصدارات الأحدث |
| بيانات التغطية الأولية | .ec ملف |
ملفات coverage_metadata.pb وcoverage_hits.pb |
للرجوع إلى نسبة استخدام رموز الصفحة في وقت الإنشاء، اضبط
android.experimental.androidTest.coverage.useOnDeviceAgent=false أو أزِل
السمة. ولست بحاجة إلى تغيير ملفات الإصدار أو المهام التي
تنفّذها.
المشاكل المعروفة
تتضمّن نسبة استخدام رموز الصفحة على الجهاز فقط المشاكل المعروفة التالية:
- الرموز التي يتم إنشاؤها: تتضمّن التقارير على الجهاز فقط الرموز التي يتم إنشاؤها، مثل Dagger factories، والتي عادةً ما تتخطّاها تقارير وقت الإنشاء. إذا لم تنفّذ اختباراتك هذا الرمز، سيتم احتسابه على أنّه غير مشمول.
- التقارير المجمّعة: إذا كان مشروعك يجمع أيضًا التغطية من اختبارات المضيف، مثل اختبارات الوحدات، فإنّ تقرير التغطية المجمّع الذي تنشئه المهام
testAllSuitesوtestAllSuitesWithDependenciesيجمع بين أعداد رموز Java الثنائية من هذه الاختبارات وأعداد رموز DEX الثنائية من الوكيل. بسبب الاختلافات بينهما، يمكن أن تختلف أرقام التعليمات والفروع المجمّعة عن الأرقام الواردة في تقارير نسبة استخدام رموز الصفحة في وقت الإصدار.
يمكنك الإبلاغ عن أي ملاحظات ومشاكل أخرى من خلال Issue Tracker.