एक परीक्षा

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

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

Atest की समग्र संरचना के बारे में जानकारी के लिए, देखें atest डेवलपर मार्गदर्शिका

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

और atest करने के लिए एक सुविधा को जोड़ने का, पालन atest डेवलपर कार्यप्रवाह

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

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

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

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

envsetup.sh . चलाएँ

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

source build/envsetup.sh

दोपहर का भोजन चलाएं

भागो lunch समर्थित डिवाइस की मेनू लाने के लिए आदेश। डिवाइस ढूंढें और उस कमांड को चलाएं।

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

lunch aosp_arm64-eng

यह विभिन्न वातावरण atest चलाने के लिए आवश्यक चर सेट और अपने को atest आदेश कहते हैं $PATH

मूल उपयोग

एटेस्ट कमांड निम्नलिखित रूप लेते हैं:

atest test-to-run [optional-arguments]

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

नीचे सबसे अधिक इस्तेमाल किए जाने वाले तर्क दिए गए हैं। एक पूरी सूची के माध्यम से उपलब्ध है atest --help

विकल्प लंबा विकल्प विवरण
-b --build परीक्षण लक्ष्य बनाता है। (चूक जाना)
-i --install डिवाइस पर परीक्षण कलाकृतियां (APK) स्थापित करता है। (चूक जाना)
-t --test परीक्षण चलाता है। (चूक जाना)
-s --serial निर्दिष्ट डिवाइस पर परीक्षण चलाता है। एक समय में एक डिवाइस का परीक्षण किया जा सकता है।
-d --disable-teardown टेस्ट टियरडाउन और क्लीनअप को अक्षम करता है।
--info निर्दिष्ट लक्ष्यों और निकास की प्रासंगिक जानकारी दिखाता है।
--dry-run ड्राय वास्तव में परीक्षण के निर्माण, स्थापित और चलाने के बिना प्रमाणित होता है
-m --rebuild-module-info बलों के पुनर्निर्माण एक module-info.json फ़ाइल।
-w --wait-for-debugger निष्पादन से पहले डीबगर की प्रतीक्षा करता है। केवल इंस्ट्रूमेंटेशन टेस्ट के लिए।
-v --verbose DEBUG स्तर लॉगिंग प्रदर्शित करता है।
--iterations लूप-रन परीक्षण जब तक अधिकतम पुनरावृत्ति तक नहीं पहुंच जाता है। (डिफ़ॉल्ट रूप से 10)
--rerun-until-failure [COUNT=10] विफलता होने या अधिकतम पुनरावृत्ति तक पहुंचने तक सभी परीक्षणों को फिर से चलाता है। (10 डिफ़ॉल्ट रूप से)
--retry-any-failure [COUNT=10] उत्तीर्ण होने तक या अधिकतम पुनरावृत्ति तक पुन: विफल परीक्षण। (10 डिफ़ॉल्ट रूप से)
--start-avd स्वचालित रूप से एक AVD बनाता है और वर्चुअल डिवाइस पर परीक्षण चलाता है।
--acloud-create का उपयोग कर AVDs बनाता acloud command.
--[CUSTOM_ARGS] परीक्षण धावकों के लिए कस्टम आर्ग निर्दिष्ट करता है।
-a --all-abi सभी उपलब्ध डिवाइस आर्किटेक्चर के लिए परीक्षण चलाता है।
--host बिना डिवाइस के होस्ट पर पूरी तरह से टेस्ट चलाता है.
(नोट: एक मेजबान परीक्षण है कि के साथ एक उपकरण की आवश्यकता है चल रहा है --host असफल हो जायेगी।)
--flakes-info फ्लेक्स जानकारी के साथ परीक्षा परिणाम दिखाता है।
--history कालानुक्रमिक क्रम में परीक्षा परिणाम दिखाता है।
--latest-result नवीनतम परीक्षा परिणाम प्रिंट करता है।

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

चलाने के लिए परीक्षण

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

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

यहां कुछ उदाहरण दिए गए हैं:

atest FrameworksServicesTests
atest example/reboot
atest FrameworksServicesTests CtsVideoTestCases
atest FrameworksServicesTests:ScreenDecorWindowTests

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

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

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

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

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

उदाहरण:

atest FrameworksServicesTests
atest CtsVideoTestCases

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

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

उदाहरण:

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

कक्षा का नाम

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

उदाहरण:

atest ScreenDecorWindowTests
atest VideoEncoderDecoderTest

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

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

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

टीएफ एकीकरण परीक्षण

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

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

atest example/reboot

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

atest native-benchmark

फ़ाइल पथ

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

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

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

    atest cts/tests/video
    
  2. से एंड्रॉयड repo-root / सीटीएस / परीक्षण / वीडियो:

    atest .
    

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

atest cts/tests/video/src/android/video/cts/VideoEncoderDecoderTest.java

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

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

पैकेज का नाम

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

उदाहरण:

atest com.android.server.wm
atest com.android.uibench.janktests

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

आप निर्दिष्ट कर सकते हैं जो का उपयोग करके चलाने के लिए कदम -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 । इन उदाहरणों को केवल वर्ग नाम का उपयोग करने पर प्राथमिकता दी जाती है क्योंकि मॉड्यूल या जावा फ़ाइल स्थान निर्दिष्ट करने से एटेस्ट को परीक्षण को बहुत तेज़ी से ढूंढने की अनुमति मिलती है:

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

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

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

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

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors

कई कक्षाएं चलाना

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

उदाहरण:

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

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

    atest FrameworksServicesTests:ScreenDecorWindowTests CtsVideoTestCases:VideoEncoderDecoderTest
    

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

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

उदाहरण:

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

    atest -a libinput_tests inputflinger_tests
    

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

TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)

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

atest inputflinger_tests:InputDispatcherTest

या एक व्यक्ति के परीक्षण विधि का उपयोग कर

atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents

TEST_MAPPING में परीक्षण चल रहे हैं

Atest TEST_MAPPING फ़ाइलों में परीक्षण चला सकता है।

  1. वर्तमान, मूल या विशिष्ट निर्देशिकाओं में TEST_MAPPING फ़ाइलों में निहित रूप से पूर्व सबमिट परीक्षण चलाएँ।

    वर्तमान और माता पिता निर्देशिका में TEST_MAPPING फाइलों में चलाने presubmit परीक्षण:

    atest
    

    TEST_MAPPING फाइलों में में चलाएँ presubmit परीक्षण /path/to/project : और उसकी मूल निर्देशिका

    atest --test-mapping /path/to/project
    

  2. फ़ाइलों TEST_MAPPING में एक निर्धारित परीक्षण समूह चलाने के लिए; उपलब्ध परीक्षण समूह हैं: presubmit (डिफ़ॉल्ट), postsubmit , mainline-presubmit और all

    • वर्तमान और माता पिता निर्देशिका में TEST_MAPPING फाइलों में चलाने postsubmit परीक्षण:

      atest :postsubmit
      

    • सभी समूहों से चलाने के लिए परीक्षण TEST_MAPPING फाइलों में:

      atest :all
      

    • TEST_MAPPING फाइलों में में चलाएँ postsubmit परीक्षण /path/to/project और उसकी मूल निर्देशिका

      atest --test-mapping /path/to/project:postsubmit
      

    • TEST_MAPPING फाइलों में में मुख्य लाइन परीक्षण चलाने /path/to/project और उसकी मूल निर्देशिका

      atest --test-mapping /path/to/project:mainline-presubmit
      

  3. उप-निर्देशिकाओं सहित TEST_MAPPING फ़ाइलों में परीक्षण चलाएँ।

डिफ़ॉल्ट रूप से, atest केवल ऊपर की ओर TEST_MAPPING फ़ाइलों में परीक्षणों की खोज करता है (वर्तमान से या इसकी मूल निर्देशिका को दिया गया)। आप भी एक उप-निर्देशिका में TEST_MAPPING फाइलों में परीक्षण चलाने के लिए चाहते हैं, आप विकल्प का उपयोग कर सकते हैं --include-subdirs atest मजबूर करने के लिए और साथ ही उन परीक्षणों में शामिल करने के लिए।

वर्तमान में, माता पिता में TEST_MAPPING फ़ाइलों और उप-निर्देशिका में चलाने presubmit परीक्षण:

atest --include-subdirs /path/to/project

पुनरावृति में चल रहे परीक्षण

यात्रा में परीक्षण चलाने के लिए, बस पारित --iterations तर्क। चाहे वह पास हो या विफल, अधिकतम पुनरावृत्ति तक पहुंचने तक परीक्षण बंद नहीं होगा।

उदाहरण:

डिफ़ॉल्ट रूप से 10 बार पुनरावृत्त होता है, पुनरावृत्ति के दौर को बदलने के लिए एक पूर्णांक देता है।

atest test-to-run --iterations
atest test-to-run --iterations 5

दो दृष्टिकोण जो उपयोगकर्ताओं को परतदार परीक्षणों का पता लगाने में सहायता करते हैं:

दृष्टिकोण 1: विफलता होने तक या अधिकतम पुनरावृत्ति तक पहुंचने तक सभी परीक्षण चलाएं।

  • जब कोई विफलता होती है या पुनरावृत्ति 10वें (डिफ़ॉल्ट रूप से) दौर तक पहुंच जाती है, तो रुकें।
    atest test-to-run --rerun-until-failure
    
  • जब कोई विफलता होती है या पुनरावृत्ति 100वें दौर तक पहुंच जाती है तो रुकें।
    atest test-to-run --rerun-until-failure 100
    

दृष्टिकोण 2: केवल विफल परीक्षण तब तक चलाएं जब तक कि पास न हो जाए या अधिकतम पुनरावृत्ति न हो जाए।

  • मान लें test-to-run पाँच परीक्षण मामलों और परीक्षणों में से एक विफल रहता है। केवल असफल परीक्षण को 10 बार या परीक्षण पास होने तक चलाएं।
    atest test-to-run --retry-any-failure
    
  • जब यह पास हो जाए या 100वें दौर में पहुंच जाए तो असफल परीक्षा को चलाना बंद कर दें।
    atest test-to-run --retry-any-failure 100
    

AVDs पर चल रहे परीक्षण

Atest नव निर्मित AVD के साथ परीक्षण चलाने में सक्षम है। Atest चल के साथ कलाकृतियों का निर्माण कर सकते acloud create , और AVD के बाद रन परीक्षण सफलतापूर्वक बनाया गया है।

उदाहरण:

  • कि नव निर्मित डिवाइस पर परीक्षण चलाने से पहले एक AVD शुरू करें:

    acloud create && atest test-to-run
    
    : अब से सरल किया जा सकता
    atest test-to-run --start-avd
    

  • Specifing द्वारा AVDs शुरू acloud create कि नव निर्मित डिवाइस पर बहस और चलाने के परीक्षण।

    atest test-to-run --acloud-create "--build-id 6509363 --build-target aosp_cf_x86_phone-userdebug --branch aosp_master"
    

बहस के बारे में उपयोग विवरण देखने हेतु चला acloud create --help

मॉड्यूल के लिए विकल्प पास करें

एटेस्ट मॉड्यूल के लिए विकल्प पास करने में सक्षम है। TradeFed कमांड लाइन विकल्प जोड़ने के लिए atest कमांड लाइन में संक्षिप्त स्वरूप है

atest test-to-run -- [CUSTOM_ARGS]
[CUSTOM_ARGS] Tradefed आदेश पंक्ति विकल्प स्वरूपों का पालन करना चाहिए।

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

atest test-to-run -- --module-arg module-name:option-name:option-value
atest GtsPermissionTestCases -- --module-arg GtsPermissionTestCases:ignore-business-logic-failure:true

रनर टाइप या क्लास में पासिंग ऑप्शंस के उदाहरण:

atest test-to-run -- --test-arg test-class:option-name:option-value
atest CtsVideoTestCases -- --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true

परीक्षण केवल विकल्पों पर अधिक जानकारी के लिए, देखें मॉड्यूल को पास विकल्प