Google is committed to advancing racial equity for Black communities. See how.
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

एक परीक्षा

Atest एक कमांड लाइन टूल है जो उपयोगकर्ताओं को ट्रेड फेडरेशन टेस्ट हार्नेस कमांड लाइन विकल्पों के ज्ञान की आवश्यकता के बिना, स्थानीय रीज़निंग को तेज़ी से बनाने, स्थापित करने और चलाने की अनुमति देता है। यह पृष्ठ बताता है कि Android परीक्षण चलाने के लिए Atest का उपयोग कैसे करें।

Android के लिए लेखन परीक्षण के बारे में सामान्य जानकारी के लिए, Android प्लेटफ़ॉर्म परीक्षण देखें।

Atest की समग्र संरचना की जानकारी के लिए, Atest Developer Guide देखें।

Atest के माध्यम से TEST_MAPPING फाइलों में परीक्षण चल रहा है के बारे में जानकारी के लिए, देखें TEST_MAPPING फाइलों में परीक्षण चल रहा है

और Atest में एक फीचर जोड़ने के लिए, Atest Developer Workflow का पालन करें।

अपना वातावरण स्थापित करना

Atest चलाने के लिए, नीचे दिए गए सेक्शन में अपने पर्यावरण को सेट करने के लिए चरणों का पालन करें।

पर्यावरण चर सेट करें

प्रति पैकेजिंग निर्माण स्क्रिप्ट नियमों के लिए Soong या LOCAL_COMPATIBILITY_SUITE के लिए test_suite सेट करें।

1. envsetup.sh चलाएं

Android स्रोत चेकआउट की जड़ से, चलाएँ:

source build/envsetup.sh

2. दोपहर का भोजन

समर्थित उपकरणों के मेनू को लाने के लिए $ lunch कमांड चलाएं। डिवाइस ढूंढें और उस कमांड को चलाएं।

उदाहरण के लिए, यदि आपके पास एक एआरएम डिवाइस जुड़ा हुआ है, तो निम्न कमांड चलाएँ:

lunch aosp_arm64-eng

यह Atest को चलाने के लिए आवश्यक विभिन्न पर्यावरण चर निर्धारित करता है और आपके $PATH में Atest कमांड जोड़ता है।

मूल उपयोग

Atest कमांड निम्न रूप लेते हैं:

atest [optional-arguments] test-to-run

वैकल्पिक तर्क

आप एटेस्ट कमांड के साथ निम्नलिखित वैकल्पिक तर्कों का उपयोग कर सकते हैं।

विकल्प लंबा विकल्प विवरण
-b --build परीक्षण लक्ष्य बनाता है।
-i --install डिवाइस पर परीक्षण कलाकृतियों (APKs) स्थापित करता है।
-t --test परीक्षण चलाता है।
-s --serial निर्दिष्ट डिवाइस पर परीक्षण चलाता है। एक बार में एक उपकरण का परीक्षण किया जा सकता है।
-d --disable-teardown परीक्षण अशांति और सफाई को निष्क्रिय करता है।
--info निर्दिष्ट लक्ष्यों और बाहर निकलने की प्रासंगिक जानकारी दिखाता है।
--dry-run का पर्यायवाची शब्द- Info।
-m --rebuild-module-info मॉड्यूल-info.json फ़ाइल के पुनर्निर्माण के लिए मजबूर करता है।
-w --wait-for-debugger निष्पादन से पहले डिबगर का इंतजार करता है। केवल इंस्ट्रूमेंटेशन टेस्ट के लिए।
-v --verbose DEBUG स्तर लॉगिंग प्रदर्शित करता है।
--generate-baseline आधारभूत मीट्रिक बनाता है, डिफ़ॉल्ट रूप से 5 पुनरावृत्तियों को चलाता है।
--generate-new-metrics नए मीट्रिक उत्पन्न करता है, डिफ़ॉल्ट रूप से 5 पुनरावृत्तियों को चलाता है।
--detect-regression प्रतिगमन पहचान एल्गोरिथ्म चलाता है।
--[CUSTOM_ARGS] परीक्षण धावकों के लिए कस्टम args निर्दिष्ट करता है।
-a --all-abi सभी उपलब्ध डिवाइस आर्किटेक्चर के लिए परीक्षण चलाता है।
-h --help संदेश मदद संदेश और बाहर निकलता है।
--host उपकरण के बिना मेजबान पर पूरी तरह से परीक्षण चलाता है।
(नोट: एक मेजबान परीक्षण चलाना - जिसमें एक डिवाइस की आवश्यकता होगी --होस्ट विफल हो जाएगा।)

-b , -i और -t पर अधिक जानकारी के लिए, चरण निर्दिष्ट करें देखें : निर्माण, स्थापित करें, या चलाएँ।

चलाने के लिए टेस्ट

आप test-to-run का उपयोग करके एक या अधिक परीक्षण test-to-run । कई परीक्षण चलाने के लिए, रिक्त स्थान के साथ अलग-अलग परीक्षण संदर्भ। उदाहरण के लिए:

atest test-to-run-1 test-to-run-2

यहाँ कुछ उदाहरण हैं:

atest FrameworksServicesTests
atest example/reboot
atest FrameworksServicesTests CtsJankDeviceTestCases
atest FrameworksServicesTests:ScreenDecorWindowTests

किसी परीक्षण को संदर्भित करने के बारे में अधिक जानकारी के लिए, पहचानने वाले परीक्षण देखें

परीक्षण की पहचान करना

आप परीक्षण के मॉड्यूल नाम, मॉड्यूल: वर्ग, वर्ग नाम, TF एकीकरण परीक्षण, फ़ाइल पथ या पैकेज नाम के साथ test-to-run तर्क निर्दिष्ट कर सकते हैं।

मोड्यूल का नाम

संपूर्ण परीक्षण मॉड्यूल को चलाने के लिए, इसके मॉड्यूल नाम का उपयोग करें। उस नाम का इनपुट करें जो उस परीक्षण के Android.mk या Android.bp फ़ाइल में LOCAL_MODULE या LOCAL_PACKAGE_NAME चर में दिखाई देता है।

उदाहरण:

atest FrameworksServicesTests
atest CtsJankDeviceTestCases

मॉड्यूल: कक्षा

मॉड्यूल के भीतर एकल वर्ग चलाने के लिए, मॉड्यूल का उपयोग करें : कक्षामॉड्यूल वही है जो मॉड्यूल नाम में वर्णित है। वर्ग .java फ़ाइल में परीक्षण वर्ग का नाम है और पूरी तरह से योग्य वर्ग नाम या मूल नाम हो सकता है।

उदाहरण:

atest FrameworksServicesTests:ScreenDecorWindowTests
atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests
atest CtsJankDeviceTestCases:CtsDeviceJankUi

कक्षा का नाम

मॉड्यूल नाम को स्पष्ट रूप से बताए बिना एकल वर्ग चलाने के लिए, वर्ग नाम का उपयोग करें।

उदाहरण:

atest ScreenDecorWindowTests
atest CtsDeviceJankUi

मॉड्यूल का उपयोग करना : जब भी संभव हो तब क्लास संदर्भ की सिफारिश की जाती है क्योंकि संभावित मॉड्यूल के लिए पूर्ण स्रोत के पेड़ को खोजने के लिए अधिक समय की आवश्यकता होती है यदि कोई मॉड्यूल नहीं कहा जाता है।

उदाहरण (सबसे तेज़ से धीमी गति से क्रमबद्ध):

atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests
atest FrameworksServicesTests:ScreenDecorWindowTests
atest ScreenDecorWindowTests

TF एकीकरण परीक्षण

ट्रेडफेड (गैर-मॉड्यूल) में सीधे परीक्षण को चलाने के लिए, नाम को इनपुट करें क्योंकि यह tradefed.sh list configs के आउटपुट में प्रकट होता है। tradefed.sh list configs कमांड को tradefed.sh list configs । उदाहरण के लिए:

reboot.xml परीक्षण चलाने के लिए :

atest example/reboot

native-benchmark.xml परीक्षण चलाने के लिए:

atest native-benchmark

फ़ाइल पथ

आप मॉड्यूल-आधारित परीक्षण और एकीकरण-आधारित परीक्षण दोनों को अपनी परीक्षण फ़ाइल या निर्देशिका में पथ के रूप में उपयुक्त रूप से चला सकते हैं। आप क्लास की जावा फ़ाइल के लिए पथ निर्दिष्ट करके एक एकल वर्ग भी चला सकते हैं। सापेक्ष और निरपेक्ष दोनों रास्ते समर्थित हैं।

उदाहरण: पथ के माध्यम से CtsJankDeviceTestCases मॉड्यूल को चलाने के दो तरीके

  1. Android repo-root से मॉड्यूल चलाएं:

    atest cts/tests/jank
    
  2. एंड्रॉइड repo-root / सीटीएस / टेस्ट / जंक से:

    atest .
    

उदाहरण: पथ के माध्यम से CtsJankDeviceTestCases मॉड्यूल के भीतर एक विशिष्ट वर्ग चलाएं। एंड्रॉइड repo-root :

atest cts/tests/jank/src/android/jank/cts/ui/CtsDeviceJankUi.java

उदाहरण: पथ के माध्यम से एकीकरण परीक्षण चलाएँ। एंड्रॉइड repo-root :

atest tools/tradefederation/contrib/res/config/example/reboot.xml

पैकेज का नाम

Atest पैकेज नाम से खोज परीक्षणों का समर्थन करता है।

उदाहरण:

atest com.android.server.wm
atest android.jank.cts

निर्दिष्ट करने के चरण: निर्माण, स्थापित या चलाना

आप निर्दिष्ट कर सकते हैं कि -b , -i , और -t विकल्पों का उपयोग करके कौन से चरण चलते हैं। यदि आप कोई विकल्प निर्दिष्ट नहीं करते हैं, तो सभी चरण चलते हैं।

  • केवल लक्ष्य बनाएं: atest -b test-to-run
  • केवल परीक्षण चलाएं: atest -t test-to-run
  • APK स्थापित करें और परीक्षण चलाएं: atest -it test-to-run
  • बनाएँ और चलाएँ, लेकिन इंस्टॉल न करें: atest -bt test-to-run

एटेस्ट एक टेस्ट को क्लीनअप / टियरडाउन स्टेप को छोड़ने के लिए मजबूर कर सकता है। कई परीक्षण, जैसे कि सीटीएस, परीक्षण चलाने के बाद डिवाइस को साफ करते हैं, इसलिए -t साथ अपने परीक्षण को फिर से शुरू करने की कोशिश कर सकते हैं --disable-teardown पैरामीटर के बिना विफल हो जाएगा। का प्रयोग करें -d से पहले -t iteratively परीक्षण स्वच्छ ऊपर कदम और परीक्षण को छोड़ने के लिए।

atest -d test-to-run
atest -t test-to-run

विशिष्ट विधियाँ चलाना

आप एक परीक्षण वर्ग के भीतर विशिष्ट तरीके चला सकते हैं। हालांकि पूरे मॉड्यूल का निर्माण करने की आवश्यकता है, इससे परीक्षणों को चलाने के लिए आवश्यक समय कम हो जाता है। विशिष्ट विधियों को चलाने के लिए, वर्ग की पहचान के लिए समर्थित किसी भी तरीके का उपयोग करके वर्ग की पहचान करें (मॉड्यूल: कक्षा, फ़ाइल पथ, आदि) और विधि के नाम को जोड़ दें।

atest reference-to-class#method1

आप कॉमा के साथ कई तरीके निर्दिष्ट कर सकते हैं।

atest reference-to-class#method1,method2,method3

उदाहरण:

atest com.android.server.wm.ScreenDecorWindowTests#testMultipleDecors
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval

निम्नलिखित दो उदाहरण एकल विधि, testFlagChange चलाने के लिए पसंदीदा तरीके testFlagChange । इन उदाहरणों को केवल कक्षा के नाम का उपयोग करने पर पसंद किया जाता है क्योंकि मॉड्यूल या जावा फ़ाइल स्थान को निर्दिष्ट करने से एटेस्ट परीक्षण को बहुत तेज़ी से खोजने की अनुमति देता है:

  1. मॉड्यूल का उपयोग करना: कक्षा

    atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange
    
  2. एंड्रॉइड repo-root

    atest frameworks/base/services/tests/servicestests/src/com/android/server/wm/ScreenDecorWindowTests.java#testFlagChange
    

विभिन्न तरीकों को विभिन्न वर्गों और मॉड्यूल से चलाया जा सकता है:

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors

कई कक्षाएं चल रही हैं

कई कक्षाएं चलाने के लिए, उन्हें कई परीक्षणों को चलाने के समान रिक्त स्थान के साथ अलग करें। एटेस्ट कक्षाओं को कुशलतापूर्वक बनाता और चलाता है, इसलिए एक मॉड्यूल में कक्षाओं के सबसेट को निर्दिष्ट करने से पूरे मॉड्यूल को चलाने में प्रदर्शन में सुधार होता है।

उदाहरण:

  • एक ही मॉड्यूल में दो वर्ग:

    atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests
    
  • विभिन्न मॉड्यूल में दो वर्ग:

    atest FrameworksServicesTests:ScreenDecorWindowTests CtsJankDeviceTestCases:CtsDeviceJankUi
    

देशी परीक्षण चल रहा है

Atest देशी परीक्षण चला सकते हैं।

उदाहरण:

  • इनपुट परीक्षण:

    atest -a libinput_tests inputflinger_tests
    

सभी उपलब्ध डिवाइस आर्किटेक्चर के लिए परीक्षण का उपयोग करने के लिए -a , इस उदाहरण में armeabi-v7a (ARM 32-bit) और arm64-v8a (ARM 64-bit) हैं।

चलाने के लिए एक विशिष्ट देशी परीक्षण का चयन करने के लिए, बृहदान्त्र का उपयोग करें (:) परीक्षण नाम और हैशटैग (#) को निर्दिष्ट करने के लिए एक अलग विधि निर्दिष्ट करें। उदाहरण के लिए, निम्नलिखित परीक्षण परिभाषा के लिए:

TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)

आप

atest inputflinger_tests:InputDispatcherTest
का उपयोग करके संपूर्ण परीक्षण चला सकते हैं

या

atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents
का उपयोग करके एक व्यक्तिगत परीक्षण विधि

मैट्रिक्स प्रतिगमन का पता लगाना

आप प्रतिगमन पता लगाने के बिना प्री-पैच या पोस्ट-पैच मैट्रिक्स उत्पन्न कर सकते हैं। आप पुनरावृत्तियों की संख्या निर्दिष्ट कर सकते हैं, लेकिन डिफ़ॉल्ट पांच है।

उदाहरण:

atest test-to-run --generate-baseline [optional-iteration]
atest test-to-run --generate-new-metrics [optional-iteration]

स्थानीय प्रतिगमन का पता लगाने को तीन विकल्पों में चलाया जा सकता है:

  1. बेसलाइन (प्री-पैच) मीट्रिक उत्पन्न करें और उन्हें एक फ़ोल्डर में रखें। Atest निर्दिष्ट पुनरावृत्तियों के माध्यम से परीक्षण चलाता है, पोस्ट-पैच मैट्रिक्स उत्पन्न करता है, और मौजूदा मैट्रिक्स के खिलाफ तुलना करता है।

    उदाहरण:

    atest test-to-run --detect-regression /path/to/baseline --generate-new-metrics [optional-iteration]
    
  2. पहले से जेनरेट किए गए पोस्ट-पैच मेट्रिक्स वाले फ़ोल्डर का उपयोग करते हुए, Atest परीक्षण n पुनरावृत्तियों को चलाता है, प्री-पैच मेट्रिक्स का एक नया सेट उत्पन्न करता है, और प्रदान किए गए लोगों के खिलाफ तुलना करता है।

    उदाहरण:

    atest test-to-run --detect-regression /path/to/new --generate-baseline [optional-iteration]
    
  3. प्री-पैच और पोस्ट-पैच मेट्रिक्स दोनों युक्त दो फ़ोल्डरों का उपयोग करते हुए, एटेस्ट बिना किसी परीक्षण के प्रतिगमन पहचान एल्गोरिथ्म चलाता है।

    उदाहरण:

    atest --detect-regression /path/to/baseline /path/to/new