स्वचालित परीक्षण अवसंरचना

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

वास्तुकला

वीटीएस स्वचालित परीक्षण अवसंरचना निम्नलिखित वास्तुकला का उपयोग करती है:

Automated test architecture

चित्र 1. वीटीएस स्वचालित परीक्षण अवसंरचना वास्तुकला

जब कोई परीक्षण शुरू होता है, तो वीटीएस स्वचालित परीक्षण अवसंरचना निम्नलिखित कार्य करती है:

  1. फ़ेच विभिन्न स्थानों से कलाकृतियाँ बनाते हैं और संसाधनों का परीक्षण करते हैं:
    • पार्टनर एंड्रॉइड बिल्ड (पीएबी) । जीएसआई, वीटीएस फ्रेमवर्क और कुछ अन्य बिल्ड के लिए।
    • स्थानीय फ़ाइल सिस्टम, Google क्लाउड स्टोरेज, या अन्य विक्रेता-विशिष्ट बिल्ड सिस्टम । उन साझेदारों के लिए जो Google के क्लाउड में बिल्ड संग्रहीत नहीं करते हैं।
  2. फ़्लैश कनेक्टेड डिवाइस पर कलाकृतियों (डिवाइस से) और जीएसआई (एओएसपी से) का निर्माण करते हैं।
  3. स्थानीय ट्रेडफेड या क्लाउड में ट्रेडफेड का उपयोग करके वीटीएस परीक्षण चलाता है।
  4. वीटीएस डैशबोर्ड पर परीक्षण परिणामों की रिपोर्ट करता है

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

संसाधन प्रदाता

स्वचालित परीक्षण के लिए सिस्टम बिल्ड, परीक्षण फ़ाइलें और वीटीएस कलाकृतियों जैसे संसाधनों की आवश्यकता होती है। हालाँकि इन्हें स्रोत से बनाना संभव है, लेकिन इन्हें नियमित रूप से टिप-ऑफ-ट्री से बनाना और फिर कलाकृतियों को डाउनलोड के लिए पोस्ट करना आसान है।

भागीदार निम्नलिखित स्थानों का उपयोग करके स्वचालन संसाधनों तक पहुँच सकते हैं:

  • पार्टनर एंड्रॉइड बिल्ड । प्रति-खाता आधार पर प्रोग्रामेटिक पहुंच प्रदान की गई।
  • स्थानीय फ़ाइल सिस्टम (या समान)। उन साझेदारों के लिए जो पार्टनर एंड्रॉइड बिल्ड का उपयोग नहीं करते हैं।

बाद में उपकरणों को फ्लैश करने में उपयोग के लिए, संसाधनों में दोनों विकल्पों के लिए बिल्ड प्रदाता शामिल होते हैं, जो एकल build_provider.py से विस्तारित होते हैं जो स्थानीय अस्थायी निर्देशिकाओं में बिल्ड को संग्रहीत करता है।

पार्टनर एंड्रॉइड बिल्ड

Android 8.1 और इससे पहले के रिलीज़ में, Android साझेदारों को पार्टनर Android बिल्ड वेबसाइट ( https://partner.android.com/build ) पर जाना, अपने खाते पर नेविगेट करना और उपयोगकर्ता इंटरफ़ेस के माध्यम से नवीनतम सिस्टम छवियां प्राप्त करना आवश्यक था। भागीदारों को इस धीमी और श्रम-गहन प्रक्रिया से बचने में मदद करने के लिए, एंड्रॉइड 9 में उचित क्रेडेंशियल प्रदान किए जाने पर पीएबी से इन संसाधनों को स्वचालित रूप से डाउनलोड करने के लिए समर्थन शामिल है।

पहुंच स्थापित करें

आवश्यक RPC तक पहुँचने के लिए प्रोग्रामेटिक एक्सेस Google API पर OAuth2 का उपयोग करता है। OAuth2 क्रेडेंशियल उत्पन्न करने के लिए मानक दृष्टिकोण का उपयोग करते हुए, भागीदार को Google के साथ एक क्लाइंट आईडी/गुप्त जोड़ी स्थापित करनी होगी। जब PartnerAndroidBuildClient को पहली बार उस रहस्य की ओर इशारा किया जाता है, तो यह उपयोगकर्ता के लिए अपने Google खाते में लॉग इन करने के लिए एक ब्राउज़र विंडो खोलता है, जो आगे बढ़ने के लिए आवश्यक OAuth2 क्रेडेंशियल उत्पन्न करता है। क्रेडेंशियल (एक्सेस टोकन और रिफ्रेश टोकन) स्थानीय रूप से संग्रहीत किए जाते हैं, जिसका अर्थ है कि भागीदारों को केवल एक बार लॉगिन करना होगा।

यूआरएल के लिए पोस्ट अनुरोध

PAB में किसी संसाधन लिंक पर क्लिक करने से एक POST अनुरोध भेजा जाता है जिसमें उस संसाधन के लिए आवश्यक डेटा शामिल होता है, जिसमें शामिल हैं:

  • आईडी बनाएं, लक्ष्य बनाएं
  • संसाधन का नाम
  • शाखा
  • उम्मीदवार का नाम जारी करें और उम्मीदवार आंतरिक निर्माण है या नहीं

POST अनुरोध buildsvc आरपीसी की downloadBuildArtifact विधि द्वारा प्राप्त किया जाता है, जो एक यूआरएल लौटाता है जिसका उपयोग संसाधन तक पहुंचने के लिए किया जा सकता है।

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

यूआरएल प्राप्त करें

क्रॉस-साइट अनुरोध जालसाजी से बचने के लिए, buildsvc आरपीसी को अन्य मापदंडों के साथ पोस्ट किए जाने वाले XSRF टोकन की आवश्यकता होती है। जबकि यह टोकन प्रक्रिया को अधिक सुरक्षित बनाता है, यह प्रोग्रामेटिक एक्सेस को भी अधिक कठिन बनाता है क्योंकि टोकन (जो केवल पीएबी पेज के जावास्क्रिप्ट में उपलब्ध है) अब एक्सेस के लिए भी आवश्यक है।

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

स्थानीय फ़ाइल सिस्टम

कलाकृतियों की सूची (या ज़िप फ़ाइल) वाली एक निर्देशिका को देखते हुए, बिल्ड प्रदाता निर्देशिका में मौजूद चीज़ों के आधार पर प्रासंगिक छवियां सेट करता है। आप Google क्लाउड स्टोरेज से फ़ाइलों को स्थानीय निर्देशिका में कॉपी करने के लिए gsutil टूल का उपयोग कर सकते हैं।

फ़्लैश बनाता है

नवीनतम डिवाइस छवियों को होस्ट पर डाउनलोड करने के बाद, उन छवियों को डिवाइस पर फ्लैश किया जाना चाहिए। यह बिल्ड प्रदाताओं द्वारा संग्रहीत अस्थायी फ़ाइल पथों के आधार पर मानक adb और fastboot कमांड और पायथन उपप्रक्रियाओं का उपयोग करके किया जाता है।

समर्थित क्रियाएँ:

  • केवल जीएसआई चमका रहा है
  • मुख्य सिस्टम से अलग-अलग छवियों को चमकाना (उदाहरण के लिए, fastboot flash boot boot.img )
  • मुख्य सिस्टम से सभी छवियों को फ्लैश करना। उदाहरण:
    • fastboot flashall (अंतर्निहित flashall उपयोगिता का उपयोग करके)
    • fastboot flash (एक समय में एक)

परीक्षण चलाएँ

एंड्रॉइड 9 में, वीटीएस स्वचालित परीक्षण बुनियादी ढांचा केवल ट्रेडफेड परीक्षण हार्नेस का समर्थन करता है लेकिन भविष्य में अन्य हार्नेस का समर्थन करने के लिए इसे बढ़ाया जा सकता है।

उपकरण तैयार होने के बाद, आप निम्नलिखित विकल्पों में से किसी एक का उपयोग करके परीक्षण शुरू कर सकते हैं:

  • स्थानीय रूप से ट्रेडफेड का उपयोग करते समय, होस्ट नियंत्रक में test कमांड का उपयोग करें, जो वीटीएस परीक्षण योजना का नाम लेता है (उदाहरण के लिए vts-selftest ) और परीक्षण चलाता है।
  • ट्रेडफेड क्लस्टर (वैकल्पिक रूप से एमटीटी से जुड़ा) का उपयोग करते समय, होस्ट कंट्रोलर कंसोल में lease कमांड का उपयोग करें, जो अधूरे परीक्षण रन की तलाश करता है।

यदि ट्रेडफेडक्लस्टर का उपयोग कर रहे हैं, तो ट्रेडफेड स्थानीय रूप से एक दूरस्थ प्रबंधक के रूप में चलता है। यदि नहीं, तो परीक्षण पायथन उपप्रक्रियाओं का उपयोग करके लागू किए जाते हैं।

परिणाम रिपोर्ट करें

परीक्षण के परिणाम स्वचालित रूप से VtsMultiDeviceTest द्वारा कुछ VTS डैशबोर्ड प्रोजेक्टों को रिपोर्ट किए जाते हैं।