मुझे स्वचालित UI परीक्षण उपकरण का उपयोग करना होगा और मैं रोबोटियम बनाम Google एस्प्रेसो का उपयोग करने के बीच भ्रमित हूं।
दोनों के बीच प्रमुख अंतर क्या हैं? क्या ऐसी विशेषताएं हैं जो एक में मौजूद हैं लेकिन दूसरे में नहीं?
मुझे स्वचालित UI परीक्षण उपकरण का उपयोग करना होगा और मैं रोबोटियम बनाम Google एस्प्रेसो का उपयोग करने के बीच भ्रमित हूं।
दोनों के बीच प्रमुख अंतर क्या हैं? क्या ऐसी विशेषताएं हैं जो एक में मौजूद हैं लेकिन दूसरे में नहीं?
जवाबों:
पूर्ण प्रकटीकरण: मैं एस्प्रेसो के लेखकों में से एक हूं।
एस्प्रेसो और रोबोटियम दोनों इंस्ट्रूमेंटेशन-आधारित फ्रेमवर्क हैं, जिसका अर्थ है कि वे परीक्षण के तहत गतिविधियों के साथ निरीक्षण और बातचीत करने के लिए एंड्रॉइड इंस्ट्रूमेंटेशन का उपयोग करते हैं ।
Google में, हमने रोबोटियम का उपयोग करके शुरुआत की क्योंकि यह स्टॉक इंस्ट्रूमेंटेशन (इसे बनाने के लिए रोबोटियम डेवलपर्स से हैट्स) की तुलना में अधिक सुविधाजनक था। हालांकि, इसने एक ऐसे ढांचे की हमारी आवश्यकता को पूरा नहीं किया, जिसने डेवलपर्स के लिए विश्वसनीय परीक्षण को आसान बना दिया ।
रोबोटियम पर एस्प्रेसो में प्रमुख प्रगति:
तादात्म्य। डिफ़ॉल्ट रूप से, इंस्ट्रूमेंटेशन टेस्ट तर्क यूआई संचालन (यूआई थ्रेड पर संसाधित) की तुलना में एक अलग (इंस्ट्रूमेंटेशन) धागे पर चलता है। यूआई अपडेट के साथ परीक्षण संचालन के सिंक्रनाइज़ेशन के बिना, परीक्षण चंचलता के लिए प्रवण होंगे - अर्थात समय के मुद्दों के कारण यादृच्छिक रूप से विफल हो जाएंगे। अधिकांश परीक्षण लेखक इस तथ्य को अनदेखा करते हैं, कुछ नींद / पुन: प्रयास तंत्र जोड़ते हैं और यहां तक कि कम परिष्कृत थ्रेड सुरक्षा कोड को लागू करते हैं। इनमें से कोई भी आदर्श नहीं है। एस्प्रेसो टेस्ट के तहत यूआई के साथ परीक्षण कार्यों और अभिकथनों को मूल रूप से सिंक्रनाइज़ करके थ्रेड सुरक्षा का ख्याल रखता है। रोबोटियम नींद / पुन: प्रयास तंत्र के साथ इसे संबोधित करने का प्रयास करता है, जो न केवल अविश्वसनीय हैं, बल्कि आवश्यक से धीमी गति से चलाने के लिए परीक्षण का कारण बनते हैं।
एपीआई। एस्प्रेसो में एक छोटा, अच्छी तरह से परिभाषित और पूर्वानुमानित एपीआई है, जो अनुकूलन के लिए खुला है। आप मानक हैमरेस्ट मैचर्स का उपयोग करके एक यूआई तत्व का पता लगाने के तरीके के बारे में बताते हैं और फिर उसे निर्देश देते हैं कि या तो एक क्रिया करें या लक्ष्य तत्व पर एक जाँच करें। आप रोबोटियम के एपीआई के साथ इसके विपरीत हो सकते हैं, जहां परीक्षण लेखक को 30+ क्लिक विधियों से चुनने की उम्मीद है। इसके अलावा, रोबोटियम खतरनाक तरीकों जैसे एक्सपर्टस एक्टीविटी (वर्तमान में वर्तमान में क्या होता है?) और गेटव्यू को उजागर करता है, जो आपको मुख्य धागे के बाहर की वस्तुओं पर काम करने की अनुमति देता है (ऊपर बिंदु देखें)।
विफलता की स्पष्ट जानकारी। एस्प्रेसो विफलता होने पर समृद्ध डिबगिंग जानकारी प्रदान करने का प्रयास करता है। इसके अलावा, आप अपनी खुद की विफलता हैंडलर के साथ एस्प्रेसो द्वारा जिस तरह से विफलताओं को नियंत्रित कर सकते हैं उसे अनुकूलित कर सकते हैं। मैंने इसे कुछ समय में आज़माया नहीं है, लेकिन रोबोटियम के पूर्व संस्करणों में असंगत विफलता से सामना करना पड़ा (उदाहरण के लिए क्लिकऑन व्यू पद्धति SecurityException को निगल जाएगी)।
पिछले उत्तर के विपरीत, एस्प्रेसो को सभी एपीआई संस्करणों पर उपयोगकर्ताओं की महत्वपूर्ण संख्या के साथ समर्थित किया गया है (देखें: http://developer.android.com/about/dashboards/index.html )। यह कुछ पुराने संस्करणों पर काम करता है, लेकिन उन पर परीक्षण करना संसाधनों की बर्बादी होगी। परीक्षण के बारे में बोलते हुए ... एस्प्रेसो को एक व्यापक परीक्षण सूट (95% से अधिक कवरेज) के साथ-साथ Google द्वारा विकसित किए गए अधिकांश एंड्रॉइड अनुप्रयोगों द्वारा परीक्षण किया जाता है।
एस्प्रेसो रोबोटियम की तुलना में बहुत तेज है, लेकिन केवल कुछ एसडीके संस्करणों पर काम करता है।
इसलिए यदि आप एक परीक्षण चाहते हैं जो सभी उपकरणों पर काम करता है, तो रोबोइटम पर जाएं। यदि नहीं, तो एस्प्रेसो के लिए जाओ, और मत भूलो कि आप अभी भी कुछ समय के लिए एक बीटा परीक्षक होंगे।