Android Compatibility Program, Android नेटवर्क के लिए सकारात्मक सुझाव/राय पाने या शिकायतें करने का मुख्य ज़रिया है. CTS, बड़े पैमाने पर यह पक्का करने के लिए मुख्य टूल है कि डिवाइस पर सुविधा काम करती है या नहीं. Android टीम, CTS टूल को लगातार बेहतर बना रही है. साथ ही, टेस्ट कवरेज को भी बेहतर बना रही है. टेस्ट केस को नियमित तौर पर जोड़ने से, साथ काम करने वाले डिवाइसों की क्वालिटी में काफ़ी सुधार हुआ है.
सामान्य सवाल
इस सेक्शन में, सीटीएस के बारे में अक्सर पूछे जाने वाले सामान्य सवालों के जवाब दिए गए हैं.
CTS किस तरह की चीज़ों की जांच करता है?
सीटीएस, यह जांच करता है कि Android के साथ काम करने वाले सभी स्ट्रॉन्ग-टाइप्ड एपीआई मौजूद हैं और सही तरीके से काम कर रहे हैं. सीटीएस, एपीआई के अलावा सिस्टम के अन्य व्यवहारों की भी जांच करता है. जैसे, ऐप्लिकेशन का लाइफ़साइकल और परफ़ॉर्मेंस.
सीटीएस को किस तरह का लाइसेंस मिला है?
सीटीएस को उसी Apache Software License 2.0 के तहत लाइसेंस दिया गया है जिसका इस्तेमाल ज़्यादातर Android डिवाइसों में किया जाता है.
क्या कोडेक की पुष्टि CTS से की जाती है?
हां. सभी ज़रूरी कोडेक की पुष्टि, CTS करता है.
परीक्षा से जुड़े सवाल
इस सेक्शन में, अक्सर पूछे जाने वाले ऐसे सवाल दिए गए हैं जिनसे सीटीएस टेस्ट को ज़्यादा असरदार तरीके से चलाने में मदद मिलती है.
सीटीएस शार्डिंग और टीएफ़ शार्डिंग में क्या अंतर है?
CTS Sharding और TF Sharding, दोनों अलग-अलग टेस्ट प्लान हैं. ये अलग-अलग टेस्ट इंफ़्रास्ट्रक्चर कोडबेस पर काम करते हैं. अलग-अलग वर्शन में रन कमांड एक जैसी होती है. हालांकि, शार्डिंग का नतीजा अलग-अलग होता है. CTS शार्डिंग, टेस्ट किए जा रहे डिवाइसों (डीयूटी) को टेस्ट केस इस तरह असाइन करती है:
- कमांड: run cts
- Android 8.1 और इससे पहले के वर्शन के लिए कॉन्फ़िगरेशन: /tools/cts-tradefed/res/config/cts.xml
TF Sharding, उपलब्ध DUT को टेस्ट केस इस तरह से डाइनैमिक तौर पर असाइन करता है:
- कमांड: run cts
- Android 9 के लिए कॉन्फ़िगरेशन: /platform/test/suite_harness/+/pie-cts-dev/tools/cts-tradefed/res/config/cts-suite.xml
एक से ज़्यादा एबीआई के साथ काम करने वाले डिवाइस से क्या उम्मीद की जाती है?
डिवाइस को हर एबीआई मोड के लिए, सभी CTS और CTS Verifier टेस्ट पास करने होंगे. इसलिए, किसी खास एबीआइ के लिए ऐप्लिकेशन को एक्ज़ीक्यूट करना ज़रूरी है. एक से ज़्यादा एबीआई के लिए दिशा-निर्देश यहां दिए गए हैं:
- CTS और CTS Verifier के लिए, हर आर्किटेक्चर के लिए ARM और x86 रिलीज़ उपलब्ध हैं. इनमें से हर एक, 32-बिट या 64-बिट मोड के साथ काम कर सकता है.
- अगर कोई डिवाइस ARM और x86, दोनों को सपोर्ट करता है, तो उसे CTS टेस्ट के लिए, ARM और x86, दोनों को रन करना होगा और पास करना होगा.
सीडीडी 3.3.1 देखें. ऐप्लिकेशन बाइनरी इंटरफ़ेस एबीआई से जुड़ी सीडीडी की ज़रूरी शर्तों के लिए.
क्या टेस्ट को सिर्फ़ प्राइमरी एबीआई (उदाहरण के लिए, 64 बिट) पर चलाने से, टेस्ट को पूरा होने में लगने वाला समय कम हो जाता है?
नहीं. Android ऐप्लिकेशन, अपने 32-बिट या 64-बिट रनटाइम पर चलता है. मशीन कोड, कोड पाथ, और स्थिति 32 और 64 के बीच अलग-अलग होती है. अगर आपने किसी एक मोड को छोड़ दिया, तो इसका मतलब है कि आपने डिवाइस के एबीआई का सिर्फ़ 50% हिस्सा कवर किया है.
इतने सारे टेस्ट केस को 'लागू नहीं किया गया' के तौर पर क्यों मार्क किया गया है?
आपको Module Done नंबर देखना चाहिए, न कि Not Executed नंबर.
पिछले वर्शन में, CTS मॉड्यूल के पूरा होने से पहले ही उन्हें Module Done के तौर पर रिपोर्ट किया जाता था. इसलिए, पूरे किए गए मॉड्यूल की संख्या तब भी रिपोर्ट की गई, जब सभी टेस्ट केस पूरे नहीं हुए थे. ऐसा तब हुआ, जब कुछ डिवाइसों में समस्याएं थीं. नया टेस्ट हार्नेस ज़्यादा सुरक्षित है. साथ ही, समस्या होने पर लागू नहीं किया गया टेस्ट की ज़्यादा संख्या रिपोर्ट करता है.
मॉड्यूल के पूरा होने पर, रिपोर्ट में मॉड्यूल पूरा नहीं हुआ दिखता है. ऐसा तब होता है, जब रिपोर्ट में सबसे हाल ही के इनवॉकेशन (done="false") के दौरान:
- डिवाइस के कनेक्शन से जुड़ी समस्या की वजह से, मॉड्यूल का टेस्ट रन पूरा नहीं हो सका.
- मॉड्यूल के लिए, उम्मीद के मुताबिक सभी टेस्ट रन नहीं किए गए.
फ़िल्टर करने के अतिरिक्त विकल्पों के साथ,
-r/--retryविकल्प का इस्तेमाल करके फिर से कोशिश की गई. जैसे:- --include-filter
- --exclude-filter
- -t/--test (यह विकल्प, फिर से कोशिश करने पर काम नहीं करता)
- --retry-type failed
- --subplan
इन मॉड्यूल के लिए, Module Done (done="true") स्टेटस पाने के लिए, सबसे हाल ही के इनवॉकेशन के लिए, यह तरीका फिर से आज़माएं:
run retry --retry <session_id> for Android 9 and later versionsrun cts --retry <session_id> for Android 8.1 and previous versionsअगर किसी मॉड्यूल को ऊपर बताई गई किसी भी समस्या के बिना पूरा किया जाता है, तो नई रिपोर्ट में उसे मॉड्यूल पूरा हुआ के तौर पर मार्क किया जाता है. भले ही, उसमें कोई टेस्ट बाकी न हो.
अपवाद
- CtsNNAPITestCases में एक जानी-पहचानी समस्या है. इसकी वजह, Linux/OS में आर्ग्युमेंट की सीमा है.
इस मॉड्यूल को
run cts -m CtsNNAPITestCasesके ज़रिए सीधे तौर पर अलग से फिर से चलाया जा सकता है.
मैं कॉर्पोरेट फ़ायरवॉल के पीछे टेस्ट की तैयारी को कैसे रोकूं?
सभी ऑटोमेटेड टेस्ट सुइट, रनटाइम के दौरान सीटीएस मीडिया फ़ाइलें या कारोबारी नियम फ़ाइलें डाउनलोड करने की कोशिश करते हैं. कई कॉर्पोरेट एनवायरमेंट में, फ़ायरवॉल और प्रॉक्सी का इस्तेमाल किया जाता है. इस वजह से, टेस्ट की तैयारी नहीं हो पाती. नीचे दी गई लाइन को चलाएं या इसे .profile (Ubuntu पर) में जोड़ें.
export JAVA_TOOL_OPTIONS='-Djava.net.useSystemProxies=true'क्या मुझे Secure Element के लिए, CTS के लिए सिम कार्ड की ज़रूरत है?
टेस्ट के लिए सिम कार्ड की ज़रूरत है या नहीं, यह इस बात पर निर्भर करता है कि टेस्ट के लिए डिवाइस में यह सुविधा काम करती है या नहीं.
- अगर आपके डिवाइस को, सुरक्षित एलिमेंट ऐक्सेस करने वाले Android ऐप्लिकेशन के साथ काम करने की ज़रूरत नहीं है, तो HIDL मेनिफ़ेस्ट को कॉन्फ़िगर किया जा सकता है.ऐसा करने पर,
android.hardware.secure_elementHAL एलिमेंट शामिल नहीं किया जाएगा. सुरक्षित एलिमेंट, मोबाइल नेटवर्क ऑपरेटर (कैरियर) की ओर से डिस्ट्रिब्यूट किए गए यूआईसीसी (जैसे, सिम कार्ड) में मौजूद होते हैं या डिवाइस में एम्बेड किए जाते हैं. इस मामले में, android.se.omapi.SEService.getReaders() API, खाली सूची दिखाता है. साथ ही, CTS टेस्ट अपने-आप पास हो जाता है और CTS के लिए पास होने की रिपोर्ट दिखाता है. - अगर आपके डिवाइस को Android ऐप्लिकेशन के लिए, सुरक्षा चिप ऐक्सेस करने की सुविधा देनी है, तो आपको सुरक्षा चिप को सही तरीके से लागू करना होगा.साथ ही, इसकी जांच भी करनी होगी. सुरक्षा चिप, मोबाइल नेटवर्क ऑपरेटर (कैरियर) की ओर से डिस्ट्रिब्यूट किए गए यूआईसीसी (जैसे, सिम कार्ड) में मौजूद हो सकती है या डिवाइस में एम्बेड की जा सकती है. सुरक्षित एलिमेंट के लिए सीटीएस टेस्ट में, सीटीएस टेस्ट चलाने की तैयारी करने का तरीका बताया गया है. इन टेस्ट से यह पक्का किया जाता है कि Android 9 में जोड़ा गया android.se.omapi एपीआई पैकेज काम कर रहा है. हमारा यह भी सुझाव है कि आप खुद भी कुछ और टेस्ट करें, क्योंकि सीटीएस टेस्ट का कवरेज बहुत कम होता है.
मुझे Secure Element के लिए, CTS के सिम कार्ड कहां से मिलेंगे?
अपने पसंदीदा सिम वेंडर से संपर्क करें.
टोकन शार्डिंग के साथ सीटीएस एक्ज़ीक्यूशन के दौरान, लॉक स्क्रीन पर Orange सिम क्यों दिख रहा है?
सिम कार्ड की जांच करने की सुविधा लॉक होने की वजह से, टेस्ट केस शुरू नहीं होता. टोकन शार्डिंग के साथ सीटीएस चलाने से पहले, **सिम कार्ड लॉक सेटिंग में जाकर सिम कार्ड लॉक करें को बंद करें.
यह टेस्ट तब चलता है, जब डिवाइस में सुविधा के फ़्लैग बंद होते हैं
रिलीज़ बिल्ड में मौजूद सभी फ़्लैग के लिए, @RequiresFlagsEnabled या @RequiresFlagsDisabled एनोटेशन, डिवाइस रिलीज़ कॉन्फ़िगरेशन से नहीं, बल्कि सीटीएस बाइनरी रिलीज़ कॉन्फ़िगरेशन से फ़्लैग की वैल्यू का इस्तेमाल करता है. डिवाइस पर फ़्लैग बंद करने से, जांच बंद नहीं होती है. ऐसा इसलिए, क्योंकि किसी रिलीज़ के लिए चलने वाले सीटीएस टेस्ट का सेट, AOSP प्लैटफ़ॉर्म के रिलीज़ किए गए कॉन्फ़िगरेशन के हिसाब से तय होता है.