इस दस्तावेज़ में, एसडीवी टेस्ट फ़्रेमवर्क के बारे में खास जानकारी दी गई है. साथ ही, इसमें टेस्ट सेट अप करने, कॉन्फ़िगर करने, और उन्हें लागू करने के बारे में बताया गया है. शुरू से आखिर तक पूरी जांच करने के लिए, SDV टेस्ट फ़्रेमवर्क का इस्तेमाल करें. यह टूल, Mobly पर आधारित है. इसमें Python में टेस्ट लिखे जाते हैं.
एनवायरमेंट सेट अप करना
इस दस्तावेज़ में यह मानकर चला गया है कि आपने एसडीवी के लिए, अपने वर्कस्टेशन को पहले ही सेट अप कर लिया है. फ़्रेमवर्क टेस्ट चलाने के लिए, virtualenv इंस्टॉल करें.
Python डिपेंडेंसी
Android में डिपेंडेंसी मैनेज करने का सुझाव दिया गया तरीका यह है कि टेस्ट, Python, और उनकी डिपेंडेंसी को बिल्ड कॉन्फ़िगरेशन का इस्तेमाल करके, एक्ज़ीक्यूटेबल के तौर पर पैकेज किया जाए. आपको एसडीवी की टेस्टिंग रिपॉज़िटरी में इस तरीके का इस्तेमाल करना होगा.
SDV Test Framework लाइब्रेरी, डिफ़ॉल्ट रूप से ये डिपेंडेंसी उपलब्ध कराती है:
moblyabsl-pyटेस्ट में पैरामीटर का इस्तेमाल करने के लिए ज़रूरी है.pexpectइंटरैक्टिव कमांड की सुविधा के लिए ज़रूरी है.ptyprocessइंटरैक्टिव कमांड की सुविधा के लिए ज़रूरी है.
अगर आपको टेस्ट के लिए खास डिपेंडेंसी की ज़रूरत है, तो उन्हें टेस्ट की Android.bp फ़ाइल में शामिल करें.
python_test_host {
…
libs: [
"<DEPENDENCY1",
"<DEPENDENCY2",
…
],
…
}
सिस्टम से जुड़ी जांच के टाइप
SDV Test Framework का इस्तेमाल करके, सिस्टम टेस्ट बनाए जाते हैं. फ़्रेमवर्क, इन टाइप के बीच अंतर करता है. टेस्ट को सही तरीके से कैटगरी में बांटें:
- सैंपल टेस्ट: एसडीवी की सैंपल सेवाओं को लागू करें और पुष्टि करें कि नतीजे, उम्मीद के मुताबिक आउटपुट से मेल खाते हों.
- एंड-टू-एंड टेस्ट: एसडीवी के सैंपल की सेवाओं का इस्तेमाल न करें.
- लंबे समय तक चलने वाले टेस्ट: इन्हें लंबे समय तक चलाने के लिए डिज़ाइन किया गया है.
- परफ़ॉर्मेंस टेस्ट:
perfettoलाइब्रेरी का इस्तेमाल करें. - हार्डवेयर टेस्ट: इन्हें सिर्फ़ किसी फ़िज़िकल डिवाइस पर एक्ज़ीक्यूट करने के लिए डिज़ाइन किया गया है, न कि Cuttlefish (CF) में.
टेस्ट बनाना
फ़्रेमवर्क का इस्तेमाल करके लिखे गए सभी टेस्ट, टेस्टिंग रिपॉज़िटरी में होने चाहिए. टेस्ट की सटीक जगह, उसके टाइप पर निर्भर करती है.
टेस्ट कॉन्फ़िगर करना
सभी टेस्ट को atest और CATBox, दोनों का इस्तेमाल करके चलाने के लिए कॉन्फ़िगर करें.
atest को कॉन्फ़िगर करना
इस फ़्रेमवर्क में, एक, दो, और तीन वर्चुअल मशीन (वीएम) की जांच के लिए टेंप्लेट उपलब्ध हैं. अपनी Android.bp फ़ाइल में यह जोड़ें:
एक वीएम
python_test_host {
...
test_config_template: ":sdv_one_device",
}
दो वीएम
python_test_host {
...
test_config_template: ":sdv_two_devices",
}
तीन वीएम
python_test_host {
...
test_config_template: ":sdv_three_devices",
}
ज़्यादातर टेस्ट के लिए, डिफ़ॉल्ट टेंप्लेट काफ़ी होता है. जब तक कोई ज़रूरी वजह न हो, तब तक कस्टम कॉन्फ़िगरेशन न बनाएं.
डिफ़ॉल्ट टाइम आउट अपडेट करना
डिफ़ॉल्ट टाइम आउट, स्थानीय तौर पर टेस्ट चलाने के लिए काफ़ी होना चाहिए.
अगर टाइम आउट की वजह से आपकी जांच स्थानीय तौर पर पूरी नहीं हो पाती है, तो इसे अलग-अलग जांचों में बांटें. बहुत ज़्यादा टेस्ट केस वाले लंबे टेस्ट की वजह से, प्रोग्राम चलाने में बॉटलनेक आ सकता है.
अगर आपको डिफ़ॉल्ट से ज़्यादा टाइमआउट सेट करना है, तो पढ़ना जारी रखें.
डिफ़ॉल्ट टाइम आउट को बदलना
फ़्रेमवर्क, atest को लागू करने के लिए टेंप्लेट को बढ़ाने की सुविधा नहीं देता.
इसलिए, दिए गए उन टेंप्लेट का इस्तेमाल करें जिनमें टाइम आउट की अवधि ज़्यादा होती है.
एक वीएम का लंबा टेस्ट
python_test_host {
...
test_config_template: ":sdv_one_device_long_test",
}
दो वीएम का लंबा टेस्ट
python_test_host {
...
test_config_template: ":sdv_two_devices_long_test",
}
एक ऐसी टिप्पणी जोड़ें जिसमें इस टेंप्लेट का इस्तेमाल करने का मकसद साफ़ तौर पर बताया गया हो. साथ ही, यह भी बताया गया हो कि समयसीमा बढ़ाने की ज़रूरत क्यों है. उदाहरण के लिए, अगर टेस्ट के लिए किसी ऐसे आर्टफ़ैक्ट को डाउनलोड करने की ज़रूरत है जिसमें कुछ समय लगता है.
किसी डिवाइस पर फ़ाइलें पुश करना
यहां बताया गया है कि atestकॉन्फ़िगरेशन के लिए, किसी डिवाइस पर फ़ाइलें कैसे पुश करें.
किसी डिवाइस पर फ़ाइलें पुश करना
फ़्रेमवर्क, atest को लागू करने के लिए टेंप्लेट को बढ़ाने की सुविधा नहीं देता.
इसलिए, आपको एक ऐसी AndroidTest.xml फ़ाइल बनानी होगी जो डिफ़ॉल्ट टेंप्लेट को पूरी तरह से बदल दे. साथ ही, इसमें डिवाइसों के लिए target_preparer के विकल्प शामिल हों.
टेंप्लेट का कॉन्टेंट कॉपी करें:
sdv-one-device.xmlsdv-two-devices.xmlsdv-three-devices.xml
{MODULE}को अपने टेस्ट के मॉड्यूल के नाम से अपडेट करें.हर डिवाइस में
com.android.tradefed.targetprep.PushFilePreparerजोड़ें.
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file" key="<FILE_NAME>" value="<REMOTE_FILE_PATH>" />
</target_preparer>
</device>
CATBox को कॉन्फ़िगर करना
टेस्ट को सुइट के तौर पर चलाने के लिए, CATBox कॉन्फ़िगरेशन ज़रूरी है.
libraries/sdv/sdv_catbox/res/config/में नई कॉन्फ़िगरेशन फ़ाइल बनाएं और नाम रखने के लिए इन नियमों का पालन करें:- टेस्ट का उदाहरण:
sdv-sample-<NAME>-test.xml - E2E टेस्ट:
sdv-e2e-<NAME>-test.xml - लंबे समय तक चलने वाला टेस्ट:
sdv-long-running-<NAME>-test.xml - परफ़ॉर्मेंस टेस्ट:
sdv-performance-<NAME>-test.xml - हार्डवेयर की जांच:
sdv-hw-<NAME>-test.xml
- टेस्ट का उदाहरण:
टेस्ट के टाइप के हिसाब से, इससे जुड़ी जानकारी जोड़ें:
एक वीएम टेस्ट कॉन्फ़िगरेशन
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/one-device" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
दो वीएम टेस्ट कॉन्फ़िगरेशन
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/two-devices" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
तीन वीएम टेस्ट कॉन्फ़िगरेशन
<!-- Copyright 2025 Google LLC -->
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/three-devices" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
ज़्यादातर टेस्ट के लिए, डिफ़ॉल्ट टेंप्लेट काफ़ी होता है. जब तक कोई ज़रूरी वजह न हो, तब तक कस्टम कॉन्फ़िगरेशन न बनाएं.
डिफ़ॉल्ट टाइम आउट अपडेट करना
अगर डिफ़ॉल्ट टाइमआउट आपके टेस्ट के लिए काफ़ी नहीं है, तो इसे बदला जा सकता है.
डिफ़ॉल्ट टाइम आउट को बदलना
डिफ़ॉल्ट टाइमआउट को बदलने के लिए, अपनी कॉन्फ़िगरेशन फ़ाइल के आखिर में यह जानकारी जोड़ें. ज़्यादा समय लेने वाले टेस्ट के लिए, टाइम आउट की ज़्यादा से ज़्यादा अवधि 10 मिनट होनी चाहिए.
<!-- Long Test - 10 minutes timeout: <REASON> -->
<option name="mobly-host:mobly-test-timeout" value="600000" />
किसी डिवाइस पर फ़ाइलें पुश करना
इस सेक्शन में, CATBox को कॉन्फ़िगर करते समय किसी डिवाइस पर फ़ाइलें भेजने का तरीका बताया गया है.
किसी डिवाइस पर फ़ाइलें पुश करना
फ़ाइलों को डिवाइस पर पुश करने के लिए, plan विकल्प के बाद यह कॉन्फ़िगरेशन जोड़ें:
<!-- Automatically pushes config file to device-->
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file"
key="<FILE_NAME>"
value="<REMOTE_FILE_PATH>"
/>
</target_preparer>
</device>
अगर आपको हर डिवाइस पर फ़ाइलों की ज़रूरत है, तो हर डिवाइस के लिए कॉन्फ़िगरेशन जोड़ें. उदाहरण के लिए, name=device1, name=device2.
जांच करना
इन निर्देशों में यह माना गया है कि आपने एसडीवी का वर्किंग एनवायरमेंट सेट अप कर लिया है.
एनवायरमेंट सेट अप करना
फ़्रेमवर्क, Cloud Virtual Device (CVD) इंस्टेंस शुरू नहीं करता है. इसलिए, आपको टेस्ट चलाने से पहले उन्हें शुरू करना होगा.
एनवायरमेंट सेट अप करें और एसडीवी टारगेट लॉन्च करें:
. build/envsetup.sh lunch <TARGET>पहला Cloud Virtual Device (CVD) इंस्टेंस शुरू करें:
cvd create --config=sdv_core_instance1एक से ज़्यादा वीएम पर टेस्ट करने के लिए, दूसरा Cloud Virtual Device (CVD) इंस्टेंस शुरू करें:
cvd create --config=sdv_core_instance2मल्टी-वीएम टेस्ट के लिए, तीसरा Cloud Virtual Device (CVD) इंस्टेंस शुरू करें:
cvd create --config=sdv_core_instance3
atest चलाएं
atest <TestModuleName>
CATBox चलाना
इन कमांड का इस्तेमाल करने के लिए, यह ज़रूरी है कि आप रिपॉज़िटरी की रूट डायरेक्ट्री में हों.
- CATBox बनाएं:
m catbox - (ज़रूरी नहीं) CATBox में उपलब्ध सभी एसडीवी टेस्ट प्लान देखें:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-
टेस्ट चलाने के लिए:
एक वीएम टेस्ट करें
NOTIFY_AS_NATIVE=0.0.0.0:6520 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520
दो वीएम टेस्ट चलाएं
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521
तीन वीएम टेस्ट चलाएं
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521,0.0.0.0:6522 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521 --{device3}serial 0.0.0.0:6522