साझाकरण कॉन्फ़िगर करें

यह पृष्ठ वर्णन करता है कि शार्डिंग के माध्यम से सुइट मॉड्यूल ( AndroidTest.xml ) के लिए क्या ट्यून करना संभव है और प्रयोगशाला में निरंतर निष्पादन के दौरान सर्वोत्तम गति प्रदर्शन प्राप्त करना संभव है। हम प्रत्येक का उपयोग करने के लिए तर्कसंगत के साथ एक सामान्य तरीके से विकल्पों का वर्णन करने का प्रयास करेंगे।

प्रयोगशाला में एक सूट को लगातार चलाते समय, समग्र पूर्णता समय को कम करने के लिए आमतौर पर सूट को कई उपकरणों में विभाजित किया जाता है। हार्नेस आमतौर पर प्रत्येक शार्ड के निष्पादन समय को संतुलित करने का प्रयास करता है ताकि समग्र पूर्णता समय को कम किया जा सके (जब अंतिम शार्ड समाप्त हो जाए); लेकिन कुछ परीक्षणों की प्रकृति के कारण, हमारे पास हमेशा पर्याप्त आत्मनिरीक्षण नहीं होता है और कुछ व्यवहार को ट्यून करने के लिए मॉड्यूल स्वामी की आवश्यकता होती है।

शार्पेबल या शार्पेबल नहीं?

किसी मॉड्यूल ( AndroidTest.xml ) को <option name="not-shardable" value="true" /> के साथ टैग करना संभव है ताकि हार्नेस को शार्प नहीं किया जा सके।

एक विशिष्ट मॉड्यूल में, हार्नेस को अपने मॉड्यूल (डिफ़ॉल्ट व्यवहार) को शार्प करने देना सही काम है। लेकिन कुछ मामलों में, आप उस व्यवहार को ओवरराइड करना चाह सकते हैं:

  • जब आपके मॉड्यूल का सेटअप महंगा हो:

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

  • जब आपके मॉड्यूल में परीक्षणों की संख्या कम हो:

सभी परीक्षण मामलों में एक मॉड्यूल परिणाम साझा करना संभवतः विभिन्न उपकरणों पर स्वतंत्र रूप से निष्पादित हो रहा है। यह पहले बिंदु से संबंधित है; यदि आपके परीक्षणों की संख्या कम है, तो हो सकता है कि आपके पास एक ही परीक्षण हो या कुछ टुकड़ों में कोई परीक्षण न हो, जो तैयारी के किसी भी चरण को काफी महंगा बना देगा। उदाहरण के लिए, एकल परीक्षण मामले के लिए एपीके स्थापित करना आमतौर पर इसके लायक नहीं है।

इंस्ट्रुमेंटेशन टेस्ट: शार्क की अधिकतम संख्या?

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

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

इसलिए जब इंस्ट्रूमेंटेशन टेस्ट एपीके में परीक्षणों की संख्या कम होती है, तो मॉड्यूल को <option name="not-shardable" value="true" /> के साथ टैग करने से हार्नेस को पता चल जाएगा कि मॉड्यूल इसके लायक नहीं है।

AndroidJUnitTest रनर के पास एक विशेष विकल्प होता है जो उसे शार्ड करने के लिए अनुमत अधिकतम संख्या को निर्दिष्ट करने की अनुमति देता है: <option name="ajur-max-shard" value="5" />

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

उदाहरण के लिए, यदि आपके इंस्ट्रूमेंटेशन टेस्ट एपीके में केवल दो टेस्ट केस हैं, लेकिन आप अभी भी इसे शार्प करना चाहते हैं, तो 2 का ajur-max-shard वैल्यू होने से यह सुनिश्चित होगा कि आप खाली शार्क नहीं बना रहे हैं।