आकर्षण-एंड्रॉयड। मोबाइल स्वचालन के लिए सूचनात्मक रिपोर्ट

यह लेख एंड्री इवानोव और एकातेरिना बेटेवा , निफेमेटस की ओर से प्रकाशित हुआ है

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

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

इसलिए हमने सोचा, जब तक हमें निम्न कमियों की खोज नहीं हो जाती:
  • Appium सर्वर की कम स्थिरता
  • आप गतिविधि के सार्वजनिक तरीकों के साथ बातचीत नहीं कर सकते हैं (2018 में, निकोलाई अबालोव ने बुश ने अपने लेख में अप्पियम में एक पिछले दरवाजे बनाने के बारे में बात की, आप यहां पढ़ सकते हैं)
  • एस्प्रेसो परीक्षणों की गति में बहुत हीनता

हमारे लिए, ये क्षण महत्वपूर्ण थे, इसलिए मोबाइल अनुप्रयोगों के परीक्षण के लिए एक पारिस्थितिकी तंत्र का निर्माण करने के लिए एस्प्रेसो के चारों ओर हमारे अपने उपकरणों को एक साथ रखने का निर्णय लिया गया।

इसलिए, ढांचे का चयन किया गया था, यह शेष घटकों को खोजने के लिए बना रहा:
  1. धावक - समानांतर और कॉन्फ़िगर डिवाइस पूल में परीक्षण चलाने की अनुमति देनी चाहिए
  2. रिपोर्टर - एक पठनीय रिपोर्ट प्रदान करनी चाहिए जो किसी भी टीम के सदस्य द्वारा उपयोग की जा सकती है


उपकरण


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

छवि

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

लुभाना लग रहा था समस्या का सबसे इष्टतम समाधान:
  • उन चरणों का घोंसला बनाना जो आपको रिपोर्ट की संरचना करने की अनुमति देते हैं
  • कस्टम परीक्षण डेटा (स्क्रीनशॉट, वीडियो, कार्य संख्या, परीक्षण मापदंडों) को रिकॉर्ड करने की क्षमता
  • रिपोर्ट का संक्षिप्त दृश्य

लेकिन एक चेतावनी थी, एल्योर बस एंड्रॉइड पर शुरू नहीं होता है।

आकर्षण-एंड्रॉयड


उपरोक्त के संबंध में, एक पुस्तकालय लिखने का फैसला किया गया था जो कोटलिन की सादगी और लालित्य को जोड़ती है, एल्यूर फ्रेमवर्क के फायदे और एंड्रॉइड फोन पर काम कर सकते हैं। लाइब्रेरी को जोड़ने के लिए, उस इंस्ट्रूमेंट को उस मॉड्यूल से जोड़ें जिसमें इंस्ट्रूमेंटेशन टेस्ट स्थित हैं:
dependencies { androidTestImplementation "ru.tinkoff.allure:allure-android:$allureVersion@aar" androidTestImplementation "ru.tinkoff.allure:allure-common:$allureVersion" androidTestImplementation "ru.tinkoff.allure:allure-model:$allureVersion" } 


निर्भरता स्थापित करने के बाद, हमें Android परीक्षण चलाने के लिए जिम्मेदार वर्ग को AllureRunListener को पंजीकृत करना होगा।

ऐसा करने के तीन तरीके हैं:
  1. Build.gradle में जोड़ें
     testInstrumentationRunner "ru.tinkoff.allure.android.AllureAndroidRunner" 
  2. धावक onCreate में बहस के लिए श्रोता जोड़ें (तर्क: बंडल)
     arguments.putCharSequence("listener", AllureAndroidListener::class.java.name) 
  3. सीधे AllureAndroidRunner से विरासत में मिला


लुभाना रिपोर्ट कदम पर आधारित है - एक कदम, एक परमाणु कार्रवाई जो एक परीक्षण के दौरान किया जाता है। Allure Step और Parameter फ्रेमवर्क एनोटेशन को चरण () फ़ंक्शन के लिए डायरेक्ट कॉल के साथ बदल दिया गया है।
 inline fun <T : Any?> step(description: String, vararg params: Parameter, block: () -> T): T 

यह फ़ंक्शन न केवल एक बार में दो एनोटेशन की जगह लेता है, बल्कि तर्क को परखने के लिए एक लैम्ब्डा को भी स्वीकार करता है। उदाहरण के लिए:
छवि

परीक्षण शुरू करने के बाद, Allure2 के लिए तैयार किए गए json प्रारूप में रिपोर्ट / sdcard / allure-results फ़ोल्डर में फ़ोन पर दिखाई देगी। परिणाम निकाला, टीम
 adb pull /sdcard/allure-results 

हम एक रिपोर्ट तैयार कर सकते हैं
 allure generate 


अतिरिक्त सुविधाओं में, हम भेद कर सकते हैं:
  • एक दूसरे में कदम निवेश करने की क्षमता
  • कहीं भी, आप डिवाइस को कॉल कर सकते हैंश्रीशॉट (टैग: स्ट्रिंग) एक स्क्रीनशॉट लेने के लिए जो वर्तमान चरण में रिपोर्ट से स्वचालित रूप से संलग्न होगा।
  • FailshotRule () - junit4 नियम, गिरने से ठीक पहले एक स्क्रीनशॉट लेगा


यह एंड्रॉइड प्लेटफॉर्म पर एल्योर का उपयोग करने का एक सिंहावलोकन है। एलिट-एंड्रॉइड समाधान GitHub पर उपलब्ध है , आप विस्तार से देख सकते हैं और विकास में भाग ले सकते हैं।

Source: https://habr.com/ru/post/hi433756/


All Articles