איך מאתחלים את לקוח ה-Repo
פועלים לפי ההוראות במאמר הורדת המקור כדי לקבל
וליצור את קוד המקור של Android. כשמבצעים את הפקודה repo init
, צריך לציין
הסתעפות CTS ספציפית באמצעות -b
. כך אפשר לוודא שהשינויים ב-CTS נכללים
בגרסאות הבאות של CTS.
בדוגמת הקוד הבאה מוסבר איך משתמשים ב-repo init
.
mkdir android11-tests-dev && cd android11-tests-dev && repo init -c -u https://android.googlesource.com/platform/manifest -b android11-tests-dev --use-superproject --partial-clone --partial-clone-exclude=platform/frameworks/base --clone-filter=blob:limit=10M && repo sync -c -j8
יצירה והפעלה של CTS
מריצים את הפקודות הבאות כדי לבנות CTS ולהפעיל את האינטראקטיביות מסוף CTS:
cd /path/to/android/root
make cts -j32 TARGET_PRODUCT=aosp_arm64
cts-tradefed
במסוף ה-CTS, מזינים:
tf> run cts --plan CTS
כתיבת בדיקות CTS
בבדיקות CTS נעשה שימוש ב-JUnit ובממשקי ה-API לבדיקה של Android. כדאי לקרוא את
בדיקה
האפליקציה שלכם
ובדיקות קיימות בספרייה cts/tests
.
ברוב המקרים, בדיקות CTS פועלות לפי אותם כללי התנהגות שמוגדרים בבדיקות אחרות של Android.
CTS פועל במכשירים רבים בסביבת הייצור, ולכן יש לבצע את הבדיקות כללים אלה:
- מומלץ להביא בחשבון הבדלים בגדלים שונים של המסך, בכיוונים שונים ובפריסות המקלדת.
- צריך להשתמש רק ב-methods של API ציבורי. במילים אחרות, הימנעו מכל המחלקות, השיטות והשדות.
עם ההערה
hide
. - להימנע משימוש בפריסות של תצוגות מפורטות או להסתמך על מידות של נכסים שלא נכללים בחלק מכשירים.
- אין להסתמך על הרשאות השורש.
הוספת הערת Java
אם הבדיקה מאמתת התנהגות של API, יש להוסיף הערות לקוד הבדיקה עם @ApiTest
ולציין
כל ממשקי ה-API שמעורבים בשדה apis
. להשתמש בפורמט המתאים מבין
הדוגמאות הבאות:
סוג API | פורמט ההערה | הערות |
---|---|---|
שיטה | android.example.ClassA#methodA |
התרחיש לדוגמה הנפוץ ביותר. |
שיטה עם ערכי מפתח | android.example.ClassB#methodB(KeyA) |
יש להשתמש באפשרות הזו רק כשהבדיקה משתמשת בשיטת API לאימות שדה, כמו מהדוגמה הזאת. |
שדה | android.example.ClassC#FieldA | יש להשתמש באפשרות הזו רק כאשר הבדיקה מאמתת שדה API באופן ישיר, כמו מהדוגמה הזאת. |
אם הבדיקה שלך מאמתת דרישת CDD, יש להוסיף הערות למזהה הדרישה (כולל סעיף CDD)
מזהה ומזהה דרישה) ב-@CddTest
בקוד הבדיקה של ה-CTS, כפי שמוצג
בדוגמה הבאה. בהודעת ההתחייבות, צריך לציין איזו דרישה ל-CDD נבדקת על ידי
לבדיקה באמצעות הפניה למזהים של דרישות CDD. מזהי דרישת CDD הם שילוב של מזהה סעיף
ומזהה הדרישה, מחובר בקו נטוי (/) כמו שכתוב 7.3.1/C-1-1.
/**
* Verify Passpoint configuration management APIs for a Passpoint
* @throws Exception
*/
@CddTest(requirement="7.4.2.3/C-1-1,C-2-1")
public void testAddPasspointConfigWithUserCredential() throws Exception {
if (!WifiFeature.isWifiSupported(getContext())) {
// skip the test if WiFi is not supported
return;
} testAddPasspointConfig(generatePasspointConfig(generateUserCredential()));
}
לצורך אימות באמצעות CTS Verifier, צריך להוסיף הערה לכל פעילות ב-AndroidManifest.xml
עם מזהה ה-CDD הרלוונטי. הפורמטים של שדות הערכים דומים לפורמטים של הערות Java ב-
CTS. בהודעת המחויבות, מציינים איזו דרישה ל-CDD נאכפת באמצעות הפניה ל-CDD
מזהה הדרישה.
<activity>
......
<!-- OPTIONAL: Add a meta data attribute to indicate CDD requirements. -->
<meta-data android:name="cdd_test" android:value="7.4.1/C-4-1" />
<!-- OPTIONAL: Add a meta data attribute to indicate APIs being tested. -->
<meta-data android:name="api_test"
android:value="com.example.MyClass#myMethod" />
<!-- OPTIONAL: Add a metadata attribute to indicate the reason why the test doesn't enforce any CDD requirement but still useful in CTS-V. -->
<meta-data android:name="non_compliance_test"
android:value="detailed reasons" />
</activity>
בהודעה שמופיעה
צריך לציין בבירור למה צריך להוסיף את הבדיקה, ולהוסיף קישורים רלוונטיים לתמיכה. ל-CTS-D לכלול קישור להצעה לבדיקה שיצרתם ב'מעקב אחר בעיות ב-Google' תהליך הגשת CTS-D.
יצירת תוכנית משנה
לדוגמה, אפשר להוסיף קובץ SubPlan.xml
android-cts/subplans
באופן הזה:
<?xml version="1.0" encoding="utf-8" standalone="no"?> <SubPlan version="2.0"> <Entry include="CtsSystemIntentTestCases" /> <Entry include="CtsSystemUiHostTestCases" /> <Entry include="CtsSecurityHostTestCases android.security.cts.SELinuxHostTest#testAospFileContexts" /> <Entry include="CtsSecurityHostTestCases android.security.cts.SELinuxHostTest#testAospServiceContexts" /> </SubPlan>
כדי להפעיל את תוכנית המשנה:
run cts --subplan aSubPlan
הפורמט של רשומה בתוכנית המשנה הוא:
Include a module name as follows: <Entry include="MODULE_NAME" /> Include a package: <Entry include="MODULE_NAME PACKAGE_NAME" /> Include a class: <Entry include="MODULE_NAME PACKAGE_NAME.CLASS_NAME" /> Include an individual test: <Entry include="MODULE_NAME PACKAGE_NAME.CLASS_NAME#TEST_NAME" />
מתן שם לבדיקה ומיקום
רוב מקרי הבדיקה של CTS מטרגטים קבוצה ספציפית ב-Android API. הבדיקות האלה
יש שמות של חבילות Java עם הסיומת cts
ושמות מחלקות עם הסיומת
הסיומת Test
. כל מקרה בדיקה כולל מספר בדיקות, כאשר כל
בדרך כלל מתרגלים שיטה ספציפית של הכיתה.
הבדיקות האלה מסודרות במבנה ספרייה שבו הבדיקות מקובצות לקטגוריות שונות, כמו 'ווידג'טים' או 'תצוגות'.
לדוגמה, בדיקת CTS לחבילת Java android.widget.TextView
היא android.widget.cts.TextViewTest
, שם חבילת Java הוא android.widget.cts
ושם הכיתה הוא TextViewTest
.
- שם החבילה ב-Java
שם החבילה ב-Java לבדיקות CTS הוא שם החבילה של הכיתה שבה מתבצע הבדיקה, ואחריו.cts
. בדוגמה שלנו, שם החבילה יהיהandroid.widget.cts
- שם הכיתה
שם הכיתה בבדיקות CTS הוא שם הכיתה שנבדקת עם הסיומת 'Test'. עבור לדוגמה, אם הבדיקה מטרגטת אתTextView
, שם הכיתה צריך להיותTextViewTest
. - שם המודול (CTS v2 בלבד)
CTS v2 מארגן את הבדיקות לפי מודול. שם המודול הוא בדרך כלל המחרוזת השנייה של שם החבילה של Java ( לדוגמה,widget
).
מבנה הספרייה והקוד לדוגמה תלויים בשימוש ב-CTS v1. או CTS v2.
CTS v1
למכשירי Android מגרסה 6.0 ומטה, משתמשים ב-CTS v1. עבור CTS v1, הקוד לדוגמה הוא
cts/tests/tests/example
מבנה הספריות בבדיקות CTS v1 נראה כך:
cts/ tests/ tests/ package-name/ Android.mk AndroidManifest.xml src/ android/ package-name/ SampleDeviceActivity.java cts/ SampleDeviceTest.java
CTS v2
ל-Android 7.0 ואילך, יש להשתמש ב-CTS גרסה 2. אפשר לקרוא פרטים נוספים במאמר בנושא בדיקה לדוגמה בפרויקט קוד פתוח של Android (AOSP).
מבנה ספריית CTS v2 נראה כך:
cts/ tests/ module-name/ Android.mk AndroidManifest.xml src/ android/ package-name/ SampleDeviceActivity.java cts/ SampleDeviceTest.java
חבילות חדשות לדוגמה
כשמוסיפים בדיקות חדשות, יכול להיות שאין ספרייה קיימת שאפשר להציב בה את לבדיקה. במקרים כאלה, צריך ליצור את הספרייה ולהעתיק את של קובצי הדגימה המתאימים.
CTS v1
אם אתם משתמשים ב-CTS v1, יש לעיין בדוגמה שבקטע
cts/tests/tests/example
ויוצרים ספרייה חדשה. כמו כן,
חשוב להוסיף את שם המודול של החבילה החדשה מה-Android.mk
שלה
אל CTS_COVERAGE_TEST_CASE_LIST
אינץ'
cts/CtsTestCaseList.mk
. קובץ ה-Mac הזה משמש את build/core/tasks/cts.mk
לשלב את כל הבדיקות וליצור את חבילת ה-CTS הסופית.
CTS גרסה 2
שימוש בבדיקה לדוגמה
/cts/tests/sample/
כדי להפעיל במהירות את מודול הבדיקה החדש באמצעות השלבים הבאים:
- כדי ליצור את ספריית הבדיקה ולהעתיק קבצים לדוגמה, מריצים את הפקודה:
mkdir cts/tests/module-name && cp -r cts/tests/sample/* cts/tests/module-name
- עוברים אל
cts/tests/module-name
ומחליפים את כל המופעים של '[Ss]ample' לפי כללי השמות המומלצים שמפורטים למעלה. - צריך לעדכן את
SampleDeviceActivity
כדי להפעיל את התכונה שבודקים. - מעדכנים את
SampleDeviceTest
כדי לוודא שהפעילות מסתיימת בהצלחה או מתועדות בה השגיאות.
ספריות נוספות
אפשר גם להוסיף ספריות אחרות של Android, כמו assets
, jni
, libs
ו-res
.
כדי להוסיף קוד JNI:
יוצרים ספרייה ברמה הבסיסית (root) של הפרויקט ליד src
, עם תיקיית ה-Native
שמכיל את הקוד Android.mk
,
בדרך כלל, קובץ ה-makefile מכיל את ההגדרות הבאות:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libCtsSample_jni # don't include this package in any target LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := list of source code files LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) # Tag this module as a cts test artifact LOCAL_COMPATIBILITY_SUITE := cts LOCAL_SHARED_LIBRARIES := libnativehelper LOCAL_SDK_VERSION := current include $(BUILD_SHARED_LIBRARY)
קובץ Android.mk
לבסוף, משנים את הקובץ Android.mk
ברמה הבסיסית (root) של
כדי לבנות את קוד ה-Native ותלוי בו, כמו בדוגמה הבאה:
# All tests should include android.test.runner. LOCAL_JAVA_LIBRARIES := android.test.runner # Includes the jni code as a shared library LOCAL_JNI_SHARED_LIBRARIES := libCtsSample_jni # Include for InstrumentationCtsTestRunner LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner... LOCAL_SDK_VERSION := currentinclude $(BUILD_CTS_PACKAGE) #Tells make to look in subdirectories for more make files to include include $(call all-makefiles-under,$(LOCAL_PATH))
תיקון או הסרה של בדיקות
בנוסף להוספת בדיקות חדשות, אפשר לתקן או להסיר בדיקות עם הערות BrokenTest
או KnownFailure
.
שליחת השינויים
כששולחים תיקונים ל-CTS או VTS ב-AOSP, צריך לבחור את הסתעפות הפיתוח. לפי רמות ה-API שעליהן חל התיקון.
-
לגבי שינויים שחלים על כמה רמות API, קודם
פיתוח תיקון ב-
aosp/main
ואז בחירה בקפידה הסתעפות בדיקה ב-upstream. אפשר למיזוג האוטומטי למזג את השינויים במורד הזרם ב- להסתעפויות בדיקת AOSP. צפייה מידע על לוח הזמנים וההסתעפות של הרשימה של הסתעפויות ופרטי נתיב במיזוג אוטומטי. - לשינויים שספציפיים לרמת API מסוימת, מפתחים או בוחרים את השינויים שרוצים להוסיף להסתעפות הנכונה לבדיקה, ומוסיפים את ההודעה DO NOT MERGE או RESTRICT AUTOMERGE להודעת השמירה.
פועלים לפי תהליך העבודה של שליחת תיקונים. כדי לתרום לשינויים ב-CTS. בודק יבדוק את השינוי שלכם בהתאם.
מידע על לוח הזמנים וההסתעפות של ההפצה
גרסאות CTS תואמות ללוח הזמנים הזה.
גרסה | רמת ממשק API: | סניף | תדירות |
---|---|---|---|
15 | 35 | android15-tests-dev | רבעוני |
14 | 34 | android14-tests-dev | רבעוני |
13 | 33 | android13-tests-dev | רבעוני |
12 ליטר | 32 | android12L-tests-dev | רבעוני |
12 | 31 | android12-tests-dev | רבעוני |
תאריכים חשובים במהלך הפרסום
- בסוף השבוע הראשון: הקפאת הקוד. השינויים מוזגו בהסתעפות עד שהקפאת הקוד תטופל לגרסה החדשה של CTS. בקשות להוספת קוד להסתעפות יתקבלו אחרי הקפאת הקוד או אחרי שבוחרים גרסה מועמדת להפצה.
- שבוע שני או שלישי: פרסום של CTS AOSP.
תהליך המיזוג האוטומטי
ההסתעפויות של CTS לפיתוח הוגדרו כך ששינויים שנשלחים לכל ההסתעפויות ימוזגו באופן אוטומטי להסתעפויות ברמה גבוהה יותר.
אם מבצעים שינויים ישירות בהסתעפות של גרסת פיתוח ל-AOSP, נתיב המיזוג האוטומטי הוא:
android11-tests-dev
>
android12-tests-dev
>
android12L-tests-dev
>
android13-tests-dev
>
android14-tests-dev
>
android15-tests-dev
>
aosp-main
לשינויים בגרסת Android הבאה בלבד, נתיב המיזוג האוטומטי הוא:
aosp-main
>
<Internal git_main>
.
אם לא ניתן למזג רשימת שינויים (CL) כראוי, המחבר של התיקון יישלח הודעת אימייל עם הוראות לפתרון המחלוקת. ברוב המקרים, מחבר התיקון יכול להשתמש בהוראות כדי לדלג על המיזוג האוטומטי של ה-CL המנוגד.
אם הסתעפות ישנה יותר דורשת שינוי, צריך לבצע את התיקון שנבחרו במיוחד מהסניף החדש יותר.