सुइट्स स्थापित करें

ट्रेडफेड में एक सूट एक सेटअप को संदर्भित करता है जहां कई परीक्षण एक सामान्य परीक्षण धावक के तहत चल रहे हैं जो समग्र निष्पादन को संचालित करता है।

ट्रेडफेड में, सुइट्स को ITestSuite क्लास के माध्यम से संचालित किया जाता है, जो परीक्षणों को चलाने के तरीके से स्वतंत्र रूप से जोड़ने और हटाने की सुविधा देता है।

परिभाषाएं

  • सुइट: एक ही आह्वान के तहत अपने परिणामों की रिपोर्ट करने के लिए समान शीर्ष-स्तरीय सेटअप के तहत चलाने के लिए कॉन्फ़िगर किए गए परीक्षण मॉड्यूल का सेट।
  • शीर्ष-स्तरीय सेटअप: किसी भी परीक्षण मॉड्यूल को चलाने से पहले उपकरणों पर सेटअप लागू किया जाता है।
  • मुख्य कॉन्फ़िगरेशन: सुइट-स्तरीय ट्रेडफेड XML कॉन्फ़िगरेशन जो बताता है कि कौन से मॉड्यूल चलने चाहिए और कौन से शीर्ष-स्तरीय सेटअप का उपयोग किया जाना चाहिए।
  • मॉड्यूल-स्तरीय सेटअप: मॉड्यूल चलाने से ठीक पहले डिवाइस पर सेटअप लागू किया जाता है। इन्हें मॉड्यूल-विशिष्ट सेटअप के रूप में भी जाना जाता है।
  • मॉड्यूल कॉन्फ़िगरेशन: AndroidTest.xml ट्रेडफेड XML कॉन्फ़िगरेशन को संदर्भित करता है जो मॉड्यूल का वर्णन करता है और कौन सा मॉड्यूल-स्तरीय सेटअप किया जाना चाहिए।
  • मॉड्यूल: परीक्षण इकाई एक सेटअप चरण ( मॉड्यूल-स्तरीय सेटअप ), एक परीक्षण निष्पादन चरण और एक टियर डाउन चरण से बनी होती है।
  • इंट्रा-मॉड्यूल पुनः प्रयास: मॉड्यूल के अंदर हार्नेस द्वारा किया गया स्वचालित पुनः प्रयास।
  • सुइट पुनः प्रयास: सुइट के पहले विफल परीक्षणों का पूर्ण पुन: संचालन।

ITestSuite संरचना

ट्रेडफेड में ITestSuite एक सुइट निष्पादन को संचालित करने वाले सामान्य बेस क्लास को संदर्भित करता है। यह सभी प्रमुख परीक्षण सुइट्स, विशेष रूप से एंड्रॉइड संगतता परीक्षण सुइट (सीटीएस) और एंड्रॉइड विक्रेता परीक्षण सुइट (वीटीएस) द्वारा साझा किया जाता है, और सभी सुइट्स में लगातार निष्पादन अनुभव सुनिश्चित करता है।

हम कभी-कभी ITestSuite को सुइट रनर के रूप में संदर्भित करते हैं।

सुइट रनर निष्पादित करते समय इन चरणों का पालन करता है:

  1. मॉड्यूल का कॉन्फ़िगरेशन लोड करें और निर्धारित करें कि कौन सा सेट चलना चाहिए।
  2. प्रत्येक मॉड्यूल चलाएँ:

    1. मॉड्यूल-स्तरीय सेटअप चलाएँ.
    2. मॉड्यूल परीक्षण चलाएँ.
    3. मॉड्यूल-स्तरीय टियर डाउन चलाएँ।
  3. परिणामों की रिपोर्ट करें.

शीर्ष स्तरीय सेटअप

ट्रेडफेड के दृष्टिकोण से, ITestSuite सिर्फ एक और परीक्षण है। यह एक जटिल है लेकिन फिर भी किसी अन्य IRemoteTest की तरह ही एक परीक्षण है। इसलिए ट्रेडफेड कॉन्फ़िगरेशन में सुइट रनर को निर्दिष्ट करते समय, ट्रेडफेड कॉन्फ़िगरेशन के सामान्य पैटर्न का पालन करता है: build_provider , target_preparer , टेस्ट (इस मामले में हमारा सूट), और target_cleaner चलाना।

ITestSuite वाले ट्रेडफेड कॉन्फ़िगरेशन में यह अनुक्रम शीर्ष-स्तरीय सेटअप है।

उदाहरण:

<configuration description="Common config for Compatibility suites">

    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
    <!-- Setup applied before the suite: so everything running in the suite will
    have this setup beforehand -->
    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put global package_verifier_enable 0" />
        <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
    </target_preparer>

    <!-- Our ITestSuite implementation -->
    <test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />

    <result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>

मॉड्यूल मेटाडेटा

हम मॉड्यूल मेटाडेटा को परीक्षण मॉड्यूल AndroidTest.xml में निर्दिष्ट अतिरिक्त जानकारी कहते हैं। यह मेटाडेटा आपको मॉड्यूल के बारे में अतिरिक्त जानकारी निर्दिष्ट करने देता है, और मेटाडेटा का उपयोग करके मॉड्यूल को फ़िल्टर किया जा सकता है।

उदाहरण मेटाडेटा:

<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

मेटाडेटा पर उदाहरण फ़िल्टर:

--module-metadata-include-filter component=framework

उपरोक्त सभी मॉड्यूल को घटक मेटाडेटा के रूप में एक ढांचे के साथ चलाएगा।

पूर्ण AndroidTest.xml उदाहरण:

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <!-- Metadata -->
    <option name="config-descriptor:metadata" key="component" value="framework" />
    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
    <!-- End: metadata -->
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>

पैरामीटरयुक्त मॉड्यूल

एक विशेष मेटाडेटा प्रकार parameter है।

<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

यह मेटाडेटा निर्दिष्ट करता है कि मॉड्यूल को एक अलग मोड में निष्पादित करने की आवश्यकता है, उदाहरण के लिए एक मानक ऐप मोड के बजाय एक त्वरित ऐप के रूप में।

सभी संभावित मोड या पैरामीटर ModuleParameters द्वारा वर्णित हैं और ModuleParametersHelper में एक संबद्ध हैंडलर है जो आपको विशेष मोड में निष्पादित करने के लिए मॉड्यूल सेटअप को बदलने की सुविधा देता है।

उदाहरण के लिए, इंस्टेंट ऐप मोड एपीके इंस्टॉलेशन को इंस्टेंट मोड के रूप में बाध्य करता है।

पैरामीटरीकरण होने के लिए, कमांड लाइन को इसे सक्षम करने की आवश्यकता है:

--enable-parameterized-modules

एकल दिए गए मोड को इसके साथ चलाना भी संभव है:

--enable-parameterized-modules --module-parameter <Mode>

--enable-parameterized-modules --module-parameter INSTANT_APP

जब किसी मॉड्यूल का पैरामीटरयुक्त संस्करण चलता है, तो यह अपने परिणामों को पैरामीटरयुक्त मॉड्यूल नाम के तहत रिपोर्ट करता है, उदाहरण के लिए CtsGestureTestCases[instant] बनाम आधार CtsGestureTestCases