ऐप्लिकेशन टेस्टिंग एजेंट (Android)

ऐप्लिकेशन टेस्टिंग एजेंट, टेस्ट केस जनरेट करने, मैनेज करने, और लागू करने वाला एजेंट है. यह Firebase में Gemini की मदद से काम करता है. टेस्ट के लक्ष्यों को नैचुरल लैंग्वेज में तय किया जाता है. इसके बाद, एजेंट एआई का इस्तेमाल करके आपके ऐप्लिकेशन को समझता है और उसे नेविगेट करता है. साथ ही, उपयोगकर्ता के इंटरैक्शन का सिम्युलेट करता है और टेस्ट के बारे में पूरी जानकारी देता है.

ऐप्लिकेशन टेस्टिंग एजेंट आपके डेटा का इस्तेमाल कैसे करता है

ऐप्लिकेशन टेस्टिंग एजेंट की सुविधा, Firebase में Gemini देता है. इस पर भी वही शर्तें लागू होती हैं. Firebase में Gemini आपके डेटा का इस्तेमाल कैसे करता है, इस बारे में ज़्यादा जानने के लिए, Firebase में Gemini आपके डेटा का इस्तेमाल कैसे करता है लेख पढ़ें.

शुरू करने से पहले

अगर आपने अब तक अपने ऐप्लिकेशन को Firebase के साथ रजिस्टर नहीं किया है, तो ऐसा करें.

अगर Firebase के किसी अन्य प्रॉडक्ट का इस्तेमाल नहीं किया जा रहा है, तो आपको सिर्फ़ एक प्रोजेक्ट बनाना होगा और अपने ऐप्लिकेशन को रजिस्टर करना होगा. आपको अपने ऐप्लिकेशन में कोई एसडीके टूल जोड़ने की ज़रूरत नहीं है. हालांकि, अगर आपको आने वाले समय में अन्य प्रॉडक्ट का इस्तेमाल करना है, तो पक्का करें कि आपने Firebase कंसोल का इस्तेमाल करके Firebase जोड़ने के सभी चरण पूरे कर लिए हों.

टेस्ट केस बनाना

एआई की मदद से टेस्ट चलाने के लिए, App Testing एजेंट, नैचुरल लैंग्वेज में लिखे गए आपके टेस्ट केस का इस्तेमाल करता है. इससे आपके ऐप्लिकेशन के ख़िलाफ़ टेस्ट किए जाते हैं.

हर टेस्ट केस को चरणों में बांटा जाता है. इन चरणों को क्रम से पूरा किया जाता है. चरणों की मदद से, अपने टेस्ट केस को कई फ़ेज़ में बांटा जा सकता है. हर फ़ेज़ में अपना दावा होता है. एजेंट, किसी भी एक चरण के दौरान कई कार्रवाइयां कर सकता है.

टेस्ट केस बनाने के दो तरीके हैं: YAML फ़ाइल का इस्तेमाल करके या Firebase कंसोल का इस्तेमाल करके. YAML फ़ाइलों की मदद से, टेस्ट केस खुद मैनेज किए जा सकते हैं. आम तौर पर, ऐसा वर्शन वाले सोर्स कोड रिपॉज़िटरी में किया जाता है. इसके अलावा, Firebase कंसोल आपके टेस्ट केस को दूर से ही सेव कर सकती है. साथ ही, यह App Distribution के डेटा को भी सेव कर सकती है.

वाईएएमएल फ़ाइलों का इस्तेमाल करना

इस उदाहरण में, दो टेस्ट केस तय करने वाली वाईएएमएल फ़ाइल दिखाई गई है:

tests:
- displayName: Login as guest
  id: login-as-guest
  steps:
  - goal: Log in as a guest
    finalScreenAssertion: The home screen is visible
- displayName: View biography card birth date
  prerequisiteTestCaseId: login-as-guest
  steps:
  - goal: Open the article on "Bob Dylan"
    hint: Use the search function to find it
    finalScreenAssertion: >-
      The article is opened and the title "Bob Dylan" is visible.
  - goal: Find Bob Dylan's birthday in the article
    hint: >-
      Look for the "Born" section in the infobox on the right side of the page.
    finalScreenAssertion: >-
      The text "May 24, 1941" is visible on the screen.

टेस्ट के ग्रुप को एक फ़ाइल में व्यवस्थित किया जा सकता है. साथ ही, इन टेस्ट सुइट को अलग-अलग फ़ाइलों में रखा जा सकता है. टेस्ट में आईडी जोड़कर, ज़रूरी टेस्ट केस जोड़ा जा सकता है. इसके बाद, prerequisiteTestCaseId का इस्तेमाल करके उस आईडी को रेफ़रंस किया जा सकता है.

App Distribution कंसोल का इस्तेमाल करके

इसके अलावा, Firebase कंसोल में जाकर, अपने टेस्ट केस बनाए और मैनेज किए जा सकते हैं. टेस्ट केस बनाने के लिए, Firebase कंसोल का App Distribution पेज खोलें और यह तरीका अपनाएं:

  1. टेस्ट केस टैब पर, नया टेस्ट केस पर क्लिक करें. अगर आपको अपना टेस्ट केस नहीं बनाना है, तो दिए गए उदाहरण टेस्ट केस में बदलाव किया जा सकता है या उसका इस्तेमाल किया जा सकता है.
  2. टेस्ट केस जोड़ें डायलॉग में, टेस्ट केस को कोई नाम दें. इसका इस्तेमाल टेस्ट की पहचान करने के लिए किया जाता है. हालांकि, एजेंट इसे अनदेखा कर देता है.
  3. (ज़रूरी नहीं) ज़रूरी शर्तें पूरी करने वाला टेस्ट केस चुनें. इसमें मुख्य टेस्ट से पहले चलाने के लिए, सेट-अप के चरण शामिल होते हैं. अगर ज़रूरी शर्तें पूरी न होने पर किया गया टेस्ट फ़ेल हो जाता है, तो पूरे टेस्ट को फ़ेल के तौर पर मार्क कर दिया जाएगा. ज़रूरी शर्तें पूरी करने वाले टेस्ट और मुख्य टेस्ट के चरण और नतीजे, टेस्ट के नतीजों में एक साथ दिखाए जाएंगे.
  4. एक और चरण जोड़ें बटन पर क्लिक करके, अपने टेस्ट को कई चरणों में बांटें.
  5. हर चरण के लिए एक लक्ष्य तय करें. इससे यह पता चलेगा कि App Testing एजेंट को उस चरण के दौरान क्या करना है.
  6. (ज़रूरी नहीं) सुझाव जोड़ें, ताकि ऐप्लिकेशन की जांच करने वाले एजेंट को ज़्यादा जानकारी मिल सके. इससे उसे उस चरण के दौरान, आपके ऐप्लिकेशन को समझने और उसे इस्तेमाल करने में मदद मिलेगी.
  7. फ़ाइनल स्क्रीन असर्शन जोड़ें, ताकि ऐप्लिकेशन टेस्टिंग एजेंट को यह पता चल सके कि चरण कब पूरा हुआ. इस दावे में सिर्फ़ स्क्रीन पर दिखने वाले कॉन्टेंट के बारे में बताया जाना चाहिए.
  8. टेस्ट को पसंद के मुताबिक बनाने के बाद, सेव करें पर क्लिक करें.

टेस्ट केस का उदाहरण

यहां App Testing एजेंट का इस्तेमाल करके, टेस्ट केस बनाने का उदाहरण दिया गया है:

जांच का टाइटल

मेन पेज लोड हो रहा है

लक्ष्य

होम पेज लोड करना

संकेत

ऑनबोर्डिंग की पिछली स्क्रीन पर जाएं. सभी पॉप-अप खारिज करें. साइन इन न करें.

फ़ाइनल स्क्रीन असर्शन

स्क्रीन पर ऐप्लिकेशन का मुख्य होम पेज दिख रहा हो, सभी इमेज लोड हो गई हों, और कोई गड़बड़ी न दिख रही हो.

टेस्ट चलाना

टेस्ट चलाने का तरीका, टेस्ट केस बनाने और मैनेज करने के तरीके पर निर्भर करता है. अगर YAML फ़ाइलों का इस्तेमाल करके टेस्ट केस तय किए जाते हैं, तो Firebase CLI का इस्तेमाल करके उन टेस्ट को चलाया जाएगा. अगर आपने App Distribution कंसोल में टेस्ट केस बनाए हैं, तो उन्हें कंसोल से या App Distribution CLI टूल में से किसी एक की मदद से चलाया जा सकता है.

वाईएएमएल फ़ाइलों का इस्तेमाल करना

YAML फ़ाइलों में तय किए गए टेस्ट केस, Firebase CLI का इस्तेमाल करके लागू किए जा सकते हैं.

  1. Firebase CLI का नया वर्शन इंस्टॉल करें या उस पर अपडेट करें. हमारा सुझाव है कि आप अपने ओएस के लिए, सीएलआई का स्टैंडअलोन बाइनरी डाउनलोड करें.
  2. साइन इन करें और जांच करें कि आपके पास अपने प्रोजेक्ट ऐक्सेस करने की अनुमति है या नहीं. ध्यान दें कि अगर सीआई एनवायरमेंट में Firebase सीएलआई का इस्तेमाल किया जा रहा है, तो सेवा खाते से पुष्टि की जा सकती है. इसके अलावा, login:ci का इस्तेमाल करके भी पुष्टि की जा सकती है.
  3. apptesting:execute कमांड चलाएं. उदाहरण के लिए:

    firebase apptesting:execute \
      --app=1:1234567890:android:0a1b2c3d4e5f67890 \
      --test-dir=./mytests \
      ./app/build/outputs/apk/debug/app-debug.apk
    
apptesting:execute [options] [/path/to/app/binary]
--app

ज़रूरी है: आपके ऐप्लिकेशन का Firebase ऐप्लिकेशन आईडी. आपको ऐप्लिकेशन आईडी, Firebase कंसोल में सामान्य सेटिंग पेज पर मिलेगा.

--app 1:1234567890:android:0a1b2c3d4e5f67890

--test-dir

उस डायरेक्ट्री का पाथ जिसमें टेस्ट केस की YAML फ़ाइलें मौजूद हैं. यह कमांड, इस डायरेक्ट्री में बार-बार खोज करेगी. इसलिए, फ़ाइलों को सबडायरेक्ट्री में व्यवस्थित किया जा सकता है. अगर इसे सेट नहीं किया गया है, तो डिफ़ॉल्ट रूप से "./tests" का इस्तेमाल किया जाता है.

--test-devices या
--test-devices-file

जिन डिवाइसों पर टेस्ट किए जाने हैं.

टेस्ट डिवाइसों को, डिवाइस की खास जानकारी के तौर पर सेमीकोलन लगाकर अलग की गई सूची में शामिल किया जा सकता है:

--test-devices "model=tokay,version=36,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

इसके अलावा, डिवाइस की खास बातों की सूची वाली सादे टेक्स्ट फ़ाइल का पाथ तय किया जा सकता है. इस सूची में, डिवाइस की खास बातों को सेमीकोलन से अलग किया जाता है:

--test-devices-file "/path/to/test-devices.txt"

gcloud CLI का इस्तेमाल करके, उपलब्ध डिवाइस मॉडल देखे जा सकते हैं.

--test-username

टेस्ट के दौरान, अपने-आप लॉगिन होने के लिए इस्तेमाल किया जाने वाला उपयोगकर्ता नाम.

--test-password या
--test-password-file

टेस्ट के दौरान, अपने-आप लॉगिन होने के लिए इस्तेमाल किया जाने वाला पासवर्ड.

इसके अलावा, पासवर्ड वाली सादे टेक्स्ट फ़ाइल का पाथ भी दिया जा सकता है:

--test-password-file: "/path/to/test-password.txt"
--test-non-blocking

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

--results-bucket

Google Cloud Storage (GCS) का कस्टम बकेट, जिसमें टेस्ट के नतीजे सेव किए जाते हैं. अगर इसे खाली छोड़ दिया जाता है, तो डिफ़ॉल्ट बकेट का इस्तेमाल किया जाता है. बकेट का मालिकाना हक, बिलिंग की सुविधा वाले प्रोजेक्ट के पास होना चाहिए. बकेट तय करने पर, इस्तेमाल किए गए स्टोरेज के लिए बिलिंग शुल्क लगता है.

--test-file-pattern

रेगुलर एक्सप्रेशन पैटर्न. सिर्फ़ उन फ़ाइलों में मौजूद टेस्ट को लागू किया जाएगा जो इस पैटर्न से मैच करती हैं.

--test-name-pattern

रेगुलर एक्सप्रेशन पैटर्न. सिर्फ़ उन टेस्ट को एक्ज़ीक्यूट किया जाएगा जिनके डिसप्ले नेम इस पैटर्न से मेल खाते हैं.

/path/to/app/binary

ज़रूरी नहीं: आपके ऐप्लिकेशन के बाइनरी का पाथ. अगर इस विकल्प को शामिल नहीं किया जाता है, तो एजेंट, App Distribution पर अपलोड किए गए आखिरी रिलीज़ का इस्तेमाल करेगा. ऐसा सिर्फ़ उस ऐप्लिकेशन के लिए किया जाएगा जिसके बारे में बताया गया है.

App Distribution कंसोल का इस्तेमाल करके

App Distribution में सेव किए गए टेस्ट केस चलाने के लिए, Firebase कंसोल, Firebase CLI या App Distribution के Gradle या fastlane प्लगिन का इस्तेमाल किया जा सकता है.

YAML फ़ाइलों की मदद से टेस्ट केस इंपोर्ट और एक्सपोर्ट करना

अगर आपको Firebase कंसोल के बाहर टेस्ट केस मैनेज करने हैं, तो YAML फ़ाइलों से टेस्ट केस इंपोर्ट करने की सुविधा आपके काम आ सकती है. टेस्ट केस को एक्सपोर्ट करने से, उन्हें एक प्रोजेक्ट से दूसरे प्रोजेक्ट में ले जाने में भी मदद मिल सकती है. एलएलएम का इस्तेमाल करके, मौजूदा टेस्ट केस को बेहतर बनाया जा सकता है या नए टेस्ट केस बनाए जा सकते हैं. Firebase कंसोल में मौजूद 'टेस्ट केस' पेज से, टेस्ट केस इंपोर्ट और एक्सपोर्ट किए जा सकते हैं. इसके अलावा, Firebase CLI का इस्तेमाल करके प्रोग्राम के हिसाब से भी ऐसा किया जा सकता है. YAML टेस्ट केस के उदाहरण के लिए, YAML टेस्ट केस बनाना लेख पढ़ें.

टेस्ट के नतीजे देखना

टेस्ट के नतीजे देखने के लिए, रिलीज़ के ऐप्लिकेशन टेस्टिंग एजेंट टैब में जाकर, रिलीज़ पेज पर जाएं. जानकारी देखें बटन पर क्लिक करने से, जांच के नतीजों का डायलॉग बॉक्स खुलेगा. इसमें आपको समस्याएं, ऐप्लिकेशन के स्क्रीनशॉट, और जांच के दौरान Gemini की ओर से की गई कार्रवाइयां दिखेंगी.

अगर किसी टेस्ट में रीप्ले किए गए ऐक्शन शामिल हैं, तो एआई की मदद से किए गए ओरिजनल टेस्ट रन को देखा जा सकता है या कैश मेमोरी को मिटाया जा सकता है.

जांच के नतीजों के बारे में ज़्यादा जानने के लिए, इस टेबल का इस्तेमाल करें:

आइकॉन नाम ब्यौरा
spark एआई ऐक्शन इससे पता चलता है कि App Testing एजेंट ने कोई कार्रवाई करने या चरण को खत्म करने का फ़ैसला लेने के लिए, Gemini का इस्तेमाल किया है.
replay कार्रवाई फिर से की गई इससे पता चलता है कि ऐप्लिकेशन टेस्टिंग एजेंट ने टेस्ट के पिछले सफल रन से किसी कार्रवाई को फिर से चलाया है.
spark एआई के दावे इससे पता चलता है कि App Testing एजेंट ने Gemini का इस्तेमाल करके, फ़ाइनल स्क्रीन के दावे की पुष्टि की है. ऐसा तब किया गया, जब उसी टेस्ट के पिछले सफल रन से कार्रवाइयों को फिर से चलाया गया.

टेस्ट के नतीजों को डीबग करना

अगर जांच के नतीजे आपकी उम्मीद के मुताबिक नहीं हैं, तो जांच के नतीजों वाले पेज पर जाकर, जानकारी देखें में मौजूद एजेंट व्यू दिखाएं टॉगल का इस्तेमाल करके, अपनी जांच को डीबग किया जा सकता है. एजेंट व्यू में, आपको स्क्रीन पर मौजूद वे एलिमेंट दिखते हैं जिन्हें ऐप्लिकेशन की टेस्टिंग करने वाले एजेंट ने ऐप्लिकेशन की सुलभता से जुड़ी जानकारी का इस्तेमाल करते समय पता लगाया था. अगर आपको यह देखना है कि एजेंट को क्या जानकारी दिखी, तो कार्रवाई वाले ओवरफ़्लो मेन्यू से उस जानकारी को डाउनलोड किया जा सकता है.

टेस्ट के नतीजों के पेज पर मौजूद, आर्टफ़ैक्ट देखें बटन का इस्तेमाल करके भी, टेस्ट के नतीजों से जुड़े सभी वीडियो, लॉग, और अन्य Cloud आर्टफ़ैक्ट देखे जा सकते हैं.

आम तौर पर होने वाली समस्याएं और सीमाएं

ऐप्लिकेशन टेस्टिंग एजेंट की झलक की कुछ सीमाएं हैं:

  • एआई की मदद से किए जाने वाले टेस्ट में, पांच मिनट का टाइम आउट होता है. टेस्ट शुरू होने के बाद, उसे तय समय में पूरा करना ज़रूरी है. अगर ऐसा नहीं होता है, तो टेस्ट समय से पहले खत्म हो जाएगा और उसे टेस्ट के फ़ेल होने के तौर पर गिना जाएगा.
  • App Testing एजेंट, आपके ऐप्लिकेशन को टेस्ट करने के लिए जनरेटिव एआई का इस्तेमाल करता है. इसलिए, यह एक ही निर्देश का पालन करते हुए भी कभी-कभी अलग-अलग कार्रवाइयां करेगा.
  • App Testing एजेंट सिर्फ़ ये कार्रवाइयां कर सकता है: टैप करना, टेक्स्ट डालना, ऊपर/नीचे/बाएं/दाएं स्वाइप करना, दबाकर रखना, खींचकर छोड़ना, वापस जाना, और इंतज़ार करना.
  • App Testing एजेंट को ऐसे टेस्ट को पूरा करने में समस्या आती है जिनमें सिर्फ़ एक चरण होता है और उसे पूरा करने के लिए कई कार्रवाइयां करनी पड़ती हैं. यह तब बेहतर तरीके से काम करता है, जब मुश्किल टास्क को छोटे-छोटे कई चरणों में बांटा जाता है.
  • कभी-कभी, ऐप्लिकेशन की टेस्टिंग करने वाला एजेंट, स्क्रीन पर मौजूद अन्य एलिमेंट को दिखाने के लिए स्क्रोल नहीं करता है. ऐसा अक्सर तब होता है, जब स्क्रोल करने की सुविधा के बारे में कोई विज़ुअल इंडिकेशन नहीं होता. इसके बजाय, "hints" फ़ील्ड का इस्तेमाल करके स्क्रोल करने का सुझाव दिया जा सकता है.
  • कभी-कभी App Testing एजेंट को गिनती करने में समस्या आती है. उदाहरण के लिए, किसी कार्रवाई को तय संख्या में करना.
  • अगर FLAG_SECURE चालू है, तो App Testing एजेंट आपके ऐप्लिकेशन पर नेविगेट नहीं कर सकता. उसे आपके ऐप्लिकेशन के स्क्रीनशॉट के बजाय, सिर्फ़ एक खाली स्क्रीन दिखेगी.

टेस्टिंग कोटा

झलक के दौरान, एआई की मदद से किए जाने वाले टेस्ट बिना किसी शुल्क के उपलब्ध कराए जाएंगे. हालांकि, इसके लिए एक कोटा तय किया गया है. डिफ़ॉल्ट रूप से, हर Firebase प्रोजेक्ट के लिए, हर महीने 200 टेस्ट किए जा सकते हैं.

ध्यान दें कि अगर आपको एक से ज़्यादा टेस्ट केस चलाने हैं या एक ही टेस्ट केस को कई डिवाइसों पर चलाना है, तो इसे कई टेस्ट माना जाएगा. उदाहरण के लिए, अगर आपने दो डिवाइसों पर दो टेस्ट केस चलाए हैं, तो इसे कुल चार टेस्ट माना जाएगा.

डिफ़ॉल्ट सीमा से ज़्यादा कोटे का इस्तेमाल करने के लिए, इस्तेमाल के उदाहरण के साथ Firebase की सहायता टीम से संपर्क करें.