2015-06-26 12 views
40

मैं एंड्रॉयड यूआई स्वचालन के लिए परीक्षण चौखटे के लिए मांग कर रहा था और मैं UI Automator और Espresso पर ठोकर खाई और इस हिस्से के बारे में मैं उलझन में हूँ है -एंड्रॉयड परीक्षण: UIAutomator बनाम एस्प्रेसो

  1. दोनों गूगल
  2. द्वारा
  3. रखा जाता है दोनों कार्यात्मक यूआई परीक्षण
  4. के लिए उपयोग किया जाता है दोनों हैं Android केवल चौखटे

तो मेरे सवालों का/संदेह यहाँ हैं -

  • UI Automator और Espresso के बीच बड़ा अंतर क्या है?
  • क्या इनमें से किसी भी ढांचे को एकीकृत करने के लिए स्रोत कोड को संशोधित किया जाना चाहिए?
  • क्या एक ढांचा दूसरे पर कोई लाभ नहीं रखता है? यदि हां, तो एंड्रॉइड ऐप के यूआई स्वचालन के लिए कौन सा ढांचा सबसे उपयुक्त है?

उत्तर

9

यदि आप केवल एक आवेदन का परीक्षण कर रहे हैं, तो एस्प्रेसो।

यदि आप एक से अधिक एप्लिकेशन या अन्य अनुप्रयोगों या सिस्टम के साथ इसके एकीकरण का परीक्षण कर रहे हैं, तो UiAutomator।

+1

मैं परीक्षण के अंतर्गत अनुप्रयोग के लिए प्रणाली के साथ एकीकरण की आवश्यकता हो सकती है, लेकिन 'UIAutomator' का एक संयोजन और' Espresso' संभव है? – Shikhar

+1

हां, दोनों का उपयोग किया जा सकता है –

1

UIAutomator का उपयोग करते समय आप एक 18 + एपीआई का उपयोग करना चाहिए, जबकि एस्प्रेसो के साथ, आप एपीआई 8.

Android दस्तावेज़ राज्यों के रूप में, बहु आवेदन परीक्षण UIAutomator से किया जाना चाहिए जितनी कम जा सकते हैं, जबकि अगर केवल आप अपने स्वयं के ऐप पैकेज के अंदर परीक्षण चलाने के लिए चाहते हैं, आप एस्प्रेसो का उपयोग कर सकते हैं।

this documentation's page के तल पर, आप परिचय, साथ ही इन दोनों परीक्षण शैलियों के उदाहरण भी पा सकते हैं।

+0

न्यूनतम API स्तर समर्थन कोई समस्या नहीं है, लेकिन क्या यह एक सुरक्षित धारणा है कि 'एस्प्रेसो' के मामले में, परीक्षण के तहत ऐप का स्रोत कोड संशोधित किया जाना चाहिए? – Shikhar

33

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

एस्प्रेसो - यूई ऑटोमेटर की तुलना में थोड़ा हल्का वजन है और 2.2 फरोयो का समर्थन करता है और इसके साथ शक्तिशाली हैमक्रिस्ट (https://github.com/hamcrest) के साथ एक धाराप्रवाह एपीआई भी है) एकीकरण बनाने कोड अधिक पठनीय और एक्स्टेंसिबल (यह यूआई ऑटोमेटर से नया है)। इसमें सिस्टम एकीकरण परीक्षणों तक पहुंच नहीं है लेकिन आंतरिक देखने के लिए इसका उपयोग है। एक वेबव्यू का परीक्षण कर सकते हैं (हाइब्रिड ऐप परीक्षण के लिए उपयोगी, या वेबव्यू भारी परीक्षण)। यूआई ऑटोमेटर की तुलना में थोड़ा अधिक ग्रे-बॉक्स परीक्षण। "एकल ऐप के लिए परीक्षण यूआई" के लिए developer.android.com पर इसकी अनुशंसा की जाती है। एंड्रॉइड स्टूडियो 2.2 के रूप में यह अब यूआई परीक्षण रिकॉर्डिंग (जैसे यूआईयूटॉमेटर)

+1

न्यूनतम एपीआई स्तर समर्थन कोई समस्या नहीं है लेकिन मुझे लगता है कि मुझे परीक्षण के दौरान किसी भी सिस्टम एकीकरण की आवश्यकता नहीं है, क्या समान कार्यक्षमताओं को 'यूआईयूयूटोमेटर' का उपयोग करके हासिल नहीं किया जा सकता है? – Shikhar

+2

नहीं। यदि आप सिस्टम/क्रॉस-ऐप का परीक्षण नहीं कर रहे हैं तो मैं व्यक्तिगत रूप से एस्प्रेसो के लिए जाऊंगा। जैसे एस्प्रेसो-वेब 2.2 अभी जारी किया गया था जो वेबव्यू का परीक्षण करने की अनुमति देता है जो यूआई ऑटोमेटर द्वारा समर्थित नहीं है। प्रतीत होता है कि एस्प्रेसो बहुत अधिक ध्यान आकर्षित कर रहा है। Https://code.google.com/p/android-test-kit/wiki/ReleaseNotes –

25

वास्तव में, आपको चुनने की आवश्यकता नहीं है। UIAutomator और Espresso एक ही उपकरण रनर का उपयोग करते हैं, ताकि आप दोनों एक ही परीक्षण में कमांड का उपयोग कर सकें। एस्प्रेसो matchers, दावे और यूआई पर कार्रवाई की विविधता है, कि स्वचालक नहीं है:

Espresso 2.1 Cheat Sheet

एस्प्रेसो अलग थ्रेड में चल रहा है और यह वास्तव में तेजी से अन्य परीक्षण चौखटे की तुलना में है।

सारांश के रूप में: उन दोनों का परीक्षण अपने परीक्षणों में करें, एस्प्रेसो मुख्य और यूआईयूयूटोमेटर ओएस एकीकरण के लिए एक अतिरिक्त उपकरण के रूप में है।

+0

+1 देखें यह उल्लेख करने के लिए कि आप दोनों का उपयोग कर सकते हैं। भले ही आप एक ही परीक्षण मामले में यूआईयूयूटोमेटर और एस्प्रेसो दोनों का उपयोग न करें, आप निश्चित रूप से एक ही सूट में अलग-अलग परीक्षण मामलों में उनका उपयोग कर सकते हैं। –

4

मुझे एक दिलचस्प लेख मिला है, जो इस बारे में बात करता है कि आपको इन दोनों का उपयोग क्यों करना चाहिए। पर एक नज़र डालें:

http://qathread.blogspot.com/2015/05/espresso-uiautomator-perfect-tandem.html

पहले से ही Espresso मेरे लिए काफी है, लेकिन परीक्षण एप्लिकेशन सूचनाएं जैसे कुछ कारणों के लिए मैं में बस कुछ ही हफ्तों uiautomator सीखना होगा।

  • करने के लिए कुछ समय व्यतीत गूगल के उदाहरण देखने के इन चौखटे का उपयोग करने का:

:

https://github.com/googlesamples/android-testing/tree/master/ui

1

एक त्वरित धारणा कैसे दोनों बातें चलो एक उदाहरण देता हूँ काम पाने के लिए। के UIAutomator और Espresso का उपयोग कर लॉलीपॉप पर खोजने के लिए और के साथ शीर्षक "प्रारंभ" एक बटन क्लिक करने के लिए कोशिश करते हैं:

  • UIAutomator: आपको अपर केस "स्टार्ट" क्योंकि पर लॉलीपॉप बटन अपरकेस गाया जाता है के लिए खोज करने के लिए की है। device.findObject(new UiSelector().text("START")).click();
  • एस्प्रेसो: तुम बस R.string.start का प्रयोग करेंगे और देखभाल करने के लिए कैसे स्ट्रिंग वास्तव में मंच द्वारा प्रदान की गई है की जरूरत नहीं होगी। आपको परवाह नहीं है कि दृश्य में textAllCaps=true है या यह लंबित है। onView(withText(R.string.start)).perform(click());

टी एल: डॉ; इंस्ट्रुमेंटेशन तंत्र और देखने पदानुक्रम के AccessibilityNodeInfo पेड़ traversing के माध्यम से -

UIAutomator एस्प्रेसो से निचले स्तर शैली में देखा गया खोज करता है। एस्प्रेसो अपनी बारी पर आम तौर पर दृश्य पदानुक्रम को पार करता है।

0

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

एस्प्रेसो परीक्षण ढांचा एक उपकरण-आधारित एपीआई है और AndroidJUnitRunner परीक्षण धावक के साथ काम करता है।

स्रोत: https://developer.android.com/training/testing/ui-testing/espresso-testing.html

संबंधित मुद्दे