אתחול לקוח המאגר שלך
פועלים לפי ההוראות במאמר הורדת המקור כדי לקבל
וליצור את קוד המקור של 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, יש להוסיף הערות לכל פעילות ב-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 גרסה 1
ל-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 גרסה 2
ל-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 גרסה 1
אם אתם משתמשים ב-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]שפע" עם מוסכמה מומלצת למתן שמות למעלה. - צריך לעדכן את
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 המתנגש.
אם הסתעפות ישנה יותר דורשת שינוי, צריך לבצע את התיקון שנבחרו במיוחד מהסניף החדש יותר.