इंस्ट्रुमेंटेशन परीक्षण

सबसे पहले development.android.com पर अपने ऐप का परीक्षण करें पढ़ें। ध्यान दें कि प्लेटफ़ॉर्म परीक्षण में उपकरण परीक्षण का उपयोग कैसे किया जाता है, इसमें कुछ अंतर हैं।

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

महत्वपूर्ण अवधारणाएं

  • एक इंस्ट्रूमेंटेशन को एप्लिकेशन पैकेज में घोषित किया जाना चाहिए, जिसमें एप्लिकेशन पैकेज मेनिफेस्ट के <manifest> टैग के तहत एक <instrumentation> टैग नेस्टेड हो।
  • एक एप्लिकेशन पैकेज मेनिफेस्ट में तकनीकी रूप से कई <instrumentation> टैग शामिल हो सकते हैं, हालांकि इसका आमतौर पर इस तरह से उपयोग नहीं किया जाता है।
  • प्रत्येक <instrumentation> में शामिल होना चाहिए:
    • एक android:name विशेषता: यह परीक्षण एप्लिकेशन में शामिल Instrumentation के उपवर्ग का नाम होना चाहिए, जो आम तौर पर परीक्षण धावक है जिसका उपयोग किया जा रहा है, उदाहरण के लिए: android.support.test.runner.AndroidJUnitRunner
    • एक android:targetPackage विशेषता परिभाषित की जानी चाहिए। इसका मान परीक्षण के तहत एप्लिकेशन पैकेज पर सेट किया जाना चाहिए।

चरणों का सारांश

  1. फ़्रेमवर्क सेवाओं के विरुद्ध हर्मेटिक परीक्षणों के लिए सामान्य गंतव्य नीचे दिए गए हैं:

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    यदि आप अपने घटक के लिए बिल्कुल नया इंस्ट्रुमेंटेशन मॉड्यूल जोड़ रहे हैं, तो देखें

  2. यदि आप उपरोक्त स्थानों में से किसी एक में परीक्षण जोड़ रहे हैं तो मौजूदा परंपरा का पालन करें। यदि आप एक नया परीक्षण मॉड्यूल स्थापित कर रहे हैं, तो कृपया उपरोक्त स्थानों में से किसी एक में AndroidManifest.xml और Android.mk के सेटअप का पालन करें।

  3. उदाहरण के लिए फ्रेमवर्क/बेस/कोर/टेस्ट/कोरटेस्ट/ देखें। ध्यान दें कि ये पंक्तियाँ अतिरिक्त ऐप्स इंस्टॉल करती हैं:

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. अपने परीक्षण को @SmallTest , @MediumTest या @LargeTest के रूप में चिह्नित करना न भूलें

  5. एम के साथ परीक्षण मॉड्यूल बनाएं, उदाहरण के लिए:

    m FrameworksCoreTests
    
  6. परीक्षण चलाएँ:

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. यदि ट्रेडफेड का उपयोग नहीं कर रहे हैं, तो मैन्युअल रूप से परीक्षण स्थापित करें और चलाएं:

    1. जनरेट किया गया एपीके इंस्टॉल करें:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    
    1. विभिन्न विकल्पों के साथ परीक्षण चलाएँ:

      1. एपीके में सभी परीक्षण

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. सभी परीक्षण एक विशिष्ट जावा पैकेज के अंतर्गत

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. सभी परीक्षण एक विशिष्ट वर्ग के अंतर्गत

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. एक विशिष्ट परीक्षण विधि

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

आपका परीक्षण JUnit API का उपयोग करके पास या असफल होने पर स्पष्ट दावा कर सकता है; इसके अलावा, कोई भी न पकड़ा गया अपवाद भी कार्यात्मक विफलता का कारण बनेगा।

प्रदर्शन मेट्रिक्स उत्सर्जित करने के लिए, आपका परीक्षण कोड कुंजी-मूल्य जोड़े की सूची भेजने के लिए Instrumentation#sendStatus कॉल कर सकता है। यह ध्यान रखना महत्वपूर्ण है कि:

  1. मेट्रिक्स पूर्णांक या फ़्लोटिंग पॉइंट हो सकते हैं
  2. किसी भी गैर-संख्यात्मक मान को हटा दिया जाएगा
  3. आपका परीक्षण एपीके या तो कार्यात्मक परीक्षण या मेट्रिक्स परीक्षण हो सकता है, हालांकि दोनों का मिश्रण वर्तमान में समर्थित नहीं है