המבנה הכולל של תצורת המודול בנוי לפי דפוס דומה לתצורת ה-XML הרגילה של Tradeified, אבל עם כמה הגבלות בגלל שהם פועלים כחלק מחבילה.
רשימת התגים המותרים
הגדרה של מודול AndroidTest.xml
או יותר יכולה להכיל רק
תגי ה-XML הבאים: target_preparer
, multi_target_preparer
, test
ו-
metrics_collector
למרות שהרשימה נראית מגבילה, היא מאפשרת להגדיר במדויק את צורכי להגדיר את מודול הבדיקה ואת הבדיקה שיש להריץ.
הערה: מידע נוסף זמין במאמר הגדרת XML שעברה מסחר אלקטרוני. אם אתם צריכים רענון לגבי התגים השונים.
אובייקטים כמו build_provider
או result_reporter
יעלו
ConfigurationException
אם בוצע ניסיון להריץ מתוך מודול
הגדרה אישית. המטרה היא להימנע מהציפיות האלה
ולמעשה מבצעים משימה כלשהי מתוך מודול.
דוגמה להגדרה של מודול
<configuration description="Config for CTS Gesture test cases">
<option name="test-suite-tag" value="cts" />
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
<option name="cleanup-apks" value="true" />
<option name="test-file-name" value="CtsGestureTestCases.apk" />
</target_preparer>
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="android.gesture.cts" />
<option name="runtime-hint" value="10m50s" />
</test>
</configuration>
בתצורה הזו מתוארת בדיקה שמחייבת את CtsGestureTestCases.apk
כדי
יותקן ויפעילו אינסטרומנטציה מול android.gesture.cts
חבילה.
תגי ההכללה <include>
ו-<template-include>
השימוש ב-<include>
וב-<template-include>
בהגדרות המודול הוא
אבל לא מומלץ. לא מובטח שהם יפעלו כצפוי.
מקרה מיוחד לתג metrics_collector
מותר להשתמש בmetrics_collector
, אבל יש הגבלה על:
FilePullerLogCollector
מחלקה כדי לציין קובץ או ספרייה מסוימים שיש לשלוף ולרשום ביומן
את המודול. האפשרות הזו שימושית אם אתם משאירים יומנים במיקום מסוים
רוצה לשחזר אותם באופן אוטומטי.
הגדרה לדוגמה:
<configuration description="Config for CTS UI Rendering test cases">
<target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
<option name="cleanup-apks" value="true" />
<option name="test-file-name" value="CtsUiRenderingTestCases.apk" />
</target_preparer>
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="android.uirendering.cts" />
<option name="runtime-hint" value="11m55s" />
<option name="runner" value="android.uirendering.cts.runner.UiRenderingRunner" />
<option name="isolated-storage" value="false" />
</test>
<!-- Collect the files in the dump directory for debugging -->
<metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
<option name="directory-keys" value="/sdcard/UiRenderingCaptures" />
<option name="collect-on-run-ended-only" value="true" />
</metrics_collector>
</configuration>
מה לגבי מידע על גרסאות build או הורדות?
ההגדרה של התגים המורשים עלולה ליצור את הרושם השגוי לא יקבל מידע על ה-build. זה לא נכון.
פרטי ה-build מגיעים מההגדרה ברמת החבילה, שמשותף לכל המודולים של החבילה. כך אפשר לבצע הגדרה של רמה עליונה אחת לחבילה כדי להריץ את כל המודולים של החבילה.
לדוגמה, במקום כל
חבילה לבדיקת תאימות (CTS)
מודול ששולח שאילתות בנפרד על פרטי המכשיר, הסוגים וכו', ה-CTS
בהגדרה ברמת החבילה (cts.xml
) היא מתבצעת פעם אחת, וכל מודול יקבל את זה
מידע אם הם מבקשים אותו.
כדי שהאובייקטים במודול יקבלו את מידע ה-build, הם צריכים
כדי לעשות את אותו הדבר כמו בתצורה הרגילה של TradeFederal: מטמיעים את
ממשק IBuildReceiver
לקבלת IBuildInfo
. צפייה
בדיקה באמצעות המכשיר
אפשר לקבל פרטים נוספים.
שדות של מטא-נתונים
מספר גדול של מודולים לבדיקה כוללים כמה מפרטי metadata
,
שלכל אחת מהן יש יעד ייחודי.
דוגמה:
<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />
<option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
<option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
רכיב
שדה המטא-נתונים component
מתאר את רכיב Android הכללי של המודול
נועדה לבדוק. אין לה השפעה ישירה על ביצוע הבדיקה. זה
משמש בעיקר למטרות ארגוניות.
הרשימה העדכנית של הרכיבים המותרים לשימוש ב-CTS זמינה ב CtsConfigLoadingTest הבדיקה הזו תיכשל בשליחה מראש אם רכיב שלא קיים יתווסף מודול CTS.
אפשר לסנן חבילת חבילה על סמך הרכיבים באמצעות
module-metadata-include-filter
וגם module-metadata-exclude-filter
דוגמה:
--module-metadata-include-filter component framework
בדוגמה זו מפעיל רק מודול הבדיקה עם ההערה framework
לרכיב הזה.
פרמטר
המטא-נתונים parameter
הם למידע בלבד ומשפיעים על הבדיקה
להגדיר. הוא מציין על איזה מצב Android חל מודול הבדיקה.
במקרה הזה, המצבים מוגבלים למצבי Android ברמה גבוהה, כמו
instant apps
, secondary users
או different abis
.
במהלך הפעלת החבילה, אם המצב חל על הבדיקה, מספר גרסאות של מודול הבדיקה נוצרים בהתאם למצב. כל וריאציה פועלת בדיקות דומות אבל במצבים שונים.
instant_app
: יצירת וריאציה של הבדיקות להתקנת חבילות APK בתור אפליקציות ללא התקנה.multi_abi
: ליצור וריאציה של הבדיקות לכל ABI שנתמך על ידי במכשיר.secondary_user
: יצירת וריאציה של הבדיקות להתקנת חבילות APK וגם להריץ בדיקות כמשתמש משני.
איסוף מדדים ועיבוד שלהם למודולים של בדיקת ביצועים
למודולים של בדיקת ביצועים, metrics_collector
ברמת המודול
מותר להשתמש ב-metric_post_processor
כי הם חיוניים לבדיקות ביצועים.
אוסף המדדים ברמת המודול והמעבדים שלאחר מכן יכולים להיות ספציפיים למודול.
לא מומלץ לציין מעבדי מידע משניים גם ברמה העליונה וגם
ברמת המודול.
הגדרה של מודול בדיקת ביצועים חייבת לכלול את המטא-נתונים test-type
עם הערך performance
, למשל:
xml
<option name="config-descriptor:metadata" key="test-type" value="performance" />
בלי הערך הזה, אם הגדרת בדיקה כוללת את הערך metric_collector
שאינו
FilePullerLogCollector
או כל metric_post_processor
, הבדיקה
נכשלים בשליחה מראש.
דוגמה להגדרה של מודול בדיקת ביצועים:
<configuration description="Runs sample performance test.">
<!-- Declare as a performance test module -->
<option name="config-descriptor:metadata" key="test-type" value="performance" />
<option name="test-tag" value="hello-world-performance-test" />
<test class="com.android.tradefed.testtype.HostTest" >
<option name="class" value="android.test.example.helloworldperformance.HelloWorldPerformanceTest" />
</test>
<!-- Add module-level post processor MetricFilePostProcessor -->
<metric_post_processor class="com.android.tradefed.postprocessor.MetricFilePostProcessor">
<option name="aggregate-similar-tests" value="true" />
<option name="enable-per-test-log" value="false" />
</metric_post_processor>
</configuration>