2012-05-23 12 views
5

लगभग डेढ़ साल तक, मैं सिल्कटेस्ट के साथ काम कर रहा हूं, जो डेस्कटॉप और वेब अनुप्रयोगों दोनों के लिए एक जीयूआई स्वचालन उपकरण है। यह माउस और कीबोर्ड इनपुट को अनुकरण करता है, जो अंततः अंतिम उपयोगकर्ता व्यवहार का अनुकरण करता है। हालांकि, मुझे लगता है कि यह थोड़ा सा flaky है; बटन। क्लिक करें() या DialogBox.Close() विधि कॉल जो पंक्ति में 9 गुना ठीक काम करती है, 10 वीं कॉल पर असफल लगती है, केवल 11 वें काम पर वापस जाने के लिए। आम तौर पर मैं इसे सिल्कटेस्ट (या टेस्ट, या ओएस, या आपके पास क्या है) के साथ एक क्विर्क पर ले जाऊंगा, लेकिन फिर मुझे लगता है कि सेलेनियम जैसे अन्य जीयूआई स्वचालन उपकरण के साथ समान समस्याएं हैं:स्वचालित जीयूआई उपकरण इतने बेकार क्यों हैं?

Selenium Click() fails with Anchor Elements

Selenium Click() fails clicking button object

मैं जानता हूँ कि डेस्कटॉप क्षुधा के लिए, प्रत्येक जीयूआई नियंत्रण/संवाद इसके साथ जुड़े (कम से कम Windows आधारित GUIs में) एक टैग तत्व है और वेब पृष्ठों के लिए के डोमेन ऑब्जेक्ट मॉडल पदानुक्रम है कि वहाँ पेज तत्व मेरा अनुमान है कि ये उपकरण कभी-कभी इन पदानुक्रमों को नेविगेट करने और अद्वितीय तत्वों और नियंत्रणों को ढूंढने के मुद्दों में भाग लेते हैं। लेकिन यहाँ क्या चल रहा है? सिल्कटेस्ट अपेक्षाकृत पुराना, वाणिज्यिक सॉफ्टवेयर पैकेज है जबकि सेलेनियम अपेक्षाकृत नया, खुला स्रोत और लगातार विकसित होता है। तथ्य यह है कि वे दोनों समान समस्याएं पैदा कर सकते हैं मेरे साथ कुछ झंडे उठाते हैं।

इसके अलावा, क्या यह अन्य जीयूआई परीक्षण उपकरण के साथ है? या क्या मुझे बस कुछ असामान्य अनुभव था?

उत्तर

6

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

दूसरी बात यह है कि स्वचालन स्वयं यादृच्छिक रूप से विफल क्यों होता है, क्योंकि उपकरण ने यह नहीं बताया है कि इसे नियंत्रण नहीं मिला है, तो इसे यह सोचना चाहिए कि उसने एप्लिकेशन को उचित कार्रवाई भेजी है, उदाहरण के लिए एक क्लिक या एक प्रकार। यह हो सकता है कि एप्लिकेशन उस क्रिया को स्वीकार करने के लिए तैयार नहीं है जिसे आप भेज रहे हैं, यह आपके जैसा कुछ भी "तैयार होने से पहले" पर क्लिक करने का प्रयास करने जैसा है, इस मामले में एप्लिकेशन इनपुट को बफर करने या त्यागने का निर्णय ले सकता है इनपुट।

तो, आप इसे कैसे ठीक करते हैं? एक तरीका यह होगा कि उपकरण की क्षमताओं का उपयोग करने के लिए जब एप्लिकेशन इनपुट के लिए इनपुट तैयार हो, तो इनपुट की धारा को अंधाधुंध भेजने के बजाय। सिल्कटेस्ट की क्षमताएं हैं जो आपको ऐसा करने की अनुमति देती हैं (जैसा कि टेस्टपार्टनर करता है)। मैं सेलेनियम पर टिप्पणी नहीं कर सकता क्योंकि यह ऐसा कुछ है जिसका मैंने उपयोग नहीं किया है।

इसका परीक्षण करने का एक आसान तरीका अपमानजनक कार्रवाई से पहले कुछ सेकंड के लिए एक विराम डालना होगा, फिर यह एक लूप में यह देखने के लिए चलाएगा कि यह समस्या हल करता है, अगर ऐसा है तो यह आपकी समस्या है । यदि यह समस्या को ठीक नहीं करता है तो कुछ और चल रहा है कि आपको परीक्षण उपकरण के विक्रेता से संपर्क करने की आवश्यकता है।

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

उम्मीद है कि मदद करता है।

+0

मैं मानता हूं कि विभिन्न मुद्दे हैं: 1) परीक्षण स्थिर बनाते हैं (हमेशा जांचें कि नियंत्रण इनपुट प्राप्त कर सकते हैं - कुछ ऑपरेशन भी मनमाने ढंग से लंबे समय तक लेते हैं) 2) टूल सीमाएं - जहां कुछ चीजें संभव नहीं होती हैं। इसके अलावा कई टूल कुछ चालाक आंतरिक तर्क 1) के लिए प्रयास करते हैं और 2 के लिए) आपको बस खरीदारी करना है, सिल्क टेस्ट सबसे अच्छा नहीं है। –

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