कैस्परज / फैंटमज बनाम सेलेनियम


150

हम अपने UIपरीक्षण को स्वचालित करने के लिए सेलेनियम का उपयोग कर रहे हैं । हाल ही में हमने अपने अधिकांश उपयोगकर्ताओं को Chrome का उपयोग करते हुए देखा है। इसलिए हम जानना चाहते थे - फैंटम जेएस बनाम सेलेनियम का उपयोग करने के पेशेवरों और विपक्ष:

  • क्या प्रदर्शन के मामले में कोई वास्तविक लाभ है, उदाहरण के लिए परीक्षण मामलों को निष्पादित करने के लिए समय लिया गया है?
  • सेलेनियम पर फैंटमजस को कब पसंद करना चाहिए?

जवाबों:


183

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

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

ध्यान दें कि नवीनतम PhantomJS में हाल ही में WebDriver समर्थन के साथ दोनों के बीच की रेखा थोड़ी धुंधली हो जाती है। अब फैंटम जेएस का उपयोग करके पहले परीक्षणों को जल्दी से चलाना संभव है और फिर (यह मानते हुए कि कोई गंभीर त्रुटि नहीं है) सेलेनियम सेटअप में समान परीक्षणों को पूरी तरह से निष्पादित करना जारी रखें।


उत्तर के लिए धन्यवाद। किसी भी लिंक से मुझे यह समझने में मदद मिल सकती है कि लोग वास्तविक विश्व उत्पादन ऐप में प्रदर्शन संबंधी आंकड़े एकत्र करने के लिए प्रेत का उपयोग कैसे कर रहे हैं।
आत्मा3189

34
एरिया हिदायत फैंटमज के निर्माता के रूप में दिखती हैं
सेबस्टियन पैटन

ऐसा लगता है कि आपके द्वारा PhantomJS के साथ परीक्षण लिखना शुरू करने का आपका वर्णित वर्कफ़्लो तब सेलेनियम का उपयोग करता है परीक्षणों की कुल फिर से लिखना ... क्या आप PhantomJS स्क्रिप्ट का उपयोग सीधे सेलेनियम के साथ कर सकते हैं?
लजार्रे

1
भयानक PhantomJS, @AriyaHidayat के लिए धन्यवाद! :)
रिनोगो

49

हाल ही में वेबड्राइवर एकीकरण के साथ (जैसा कि अरिया ने उल्लेख किया है), आप अब फैंटमज को ड्राइव करने के लिए सेलेनियम का उपयोग कर सकते हैं।

यह बेहद शक्तिशाली है।

आप प्रत्येक चेक-इन पर एक हेडलेस यूनिक्स सर्वर पर अपने CI के माध्यम से पूरी तरह से स्वचालित सेलेनियम परीक्षणों (वेबड्राइवर कार्यान्वयन के रूप में फैंटम जेएस का उपयोग करके) का एक सेट चला सकते हैं। फिर यदि आप ब्राउज़र संगतता का परीक्षण करना चाहते हैं, तो आप अंतर्निहित वेबड्राइवर कार्यान्वयन को क्रोम, फ़ायरफ़ॉक्स आदि में बदलकर अपने परीक्षण स्थानीय स्तर पर चला सकते हैं।


41

मैं वर्तमान में एक वेब निष्कर्षण रूपरेखा लिख ​​रहा हूं। मेरे पास 524 परीक्षण हैं जो XPath का उपयोग करके 250 वेबसाइटों से डेटा प्राप्त करते हैं। प्रारंभ में फ्रेमवर्क ने HTML पार्सर, HTMLCleaner का उपयोग किया था, लेकिन मैं वर्तमान में सेलेनियम का उपयोग कर जांच कर रहा हूं क्योंकि मुझे जावास्क्रिप्ट समर्थन चाहिए। मैंने HtmlUnit, Chrome, Firefox और PhantomJS ड्राइवरों के खिलाफ परीक्षण चलाए हैं । यहां समय की तुलना की गई है और प्रत्येक दृष्टिकोण के लिए विफलताओं की संख्या है:

                    Failures    Time (secs) 
HtmlCleaner         0           82  
HtmlUnit            169         102 
Google Chrome       38          562 
Firefox             46          1159    
PhantomJS           40          575

कुछ टिप्पणियां:

  • कुछ मामलों में "विफलताओं" में विफलताएं बिल्कुल भी नहीं हो सकती हैं, यह हो सकता है कि निकालने वाले विफल हो रहे हैं क्योंकि जावास्क्रिप्ट डोम को फिर से लिख रहा है। मैं कारण खोजने की विफलताओं का विश्लेषण करने की प्रक्रिया में हूं।

  • उस ने कहा, HtmlUnit सबसे तेज सेलेनियम चालक है, लेकिन यह अविश्वसनीय भी है। यह अविश्वसनीयता केवल जावास्क्रिप्ट की चिंता नहीं करती है, "गड़बड़, गंदा, वास्तविक दुनिया" एचटीएमएल प्रसंस्करण में समस्याएं हैं क्योंकि टैग संतुलन एल्गोरिथ्म में कुछ टूटने लगता है। इस बारे में कुछ मुद्दों को उठाया गया है, लेकिन उन्हें तय नहीं किया गया है - HTML-UNIT 1423 और HTML-UNIT 1046 देखें

  • फ़ायरफ़ॉक्स सबसे धीमा सेलेनियम चालक है, भले ही मैं छवि लोड करने और स्टाइलशीट को अक्षम कर रहा हूं। ऐसा इसलिए है क्योंकि यह लोड करने और आरंभ करने में सबसे धीमा है, जिससे यह क्रोम की तुलना में काफी धीमा हो जाता है, और हर बार एक निष्कर्षण विफल हो जाता है, मुझे ड्राइवर को लोड करने की आवश्यकता होती है (परीक्षण में मैं सभी के लिए URL पुनर्प्राप्ति देरी को कम करने के लिए 5 ड्राइवरों का एक पूल बनाता हूं। सेलेनियम वेब ड्राइवर)।

  • PhantomJS फ़ायरफ़ॉक्स से बेहतर सटीकता प्राप्त करता है, क्रोम की तुलना में थोड़ा कम है, लेकिन फ़ायरफ़ॉक्स के लगभग आधे समय में। क्या अधिक है, मैं इसे अपने देव बॉक्स पर चला सकता हूं, यह कई ब्राउज़रों को लॉन्च करके "मेरी मशीन को नहीं लेता है" ताकि मैं काम पर निकल सकूं।

मैं PhantomJS की अत्यधिक अनुशंसा करूंगा।


1
अपने टेस्ट सूट को प्रेतराज के साथ चलाने में 9 मिनट लगते हैं? यह हमेशा के लिए महसूस करना चाहिए ...
केविन

@ केविन हां :) - लेकिन HTMLCleaner मानक परीक्षण है, मैं अन्य परीक्षणों को वैकल्पिक के रूप में चिह्नित करने के लिए JUnit श्रेणियों का उपयोग करता हूं ताकि वे मानक इकाई परीक्षणों का हिस्सा न हों
मार्क बटलर

धन्यवाद। हाँ, मैं फुल-जेएस परीक्षणों पर काम कर रहा हूँ और वे कुछ ही पृष्ठ परीक्षण के लिए 15-20 सेकंड की तरह हिमनद हैं। शायद मेरे 'हिमनद' के पैमाने को समायोजित करने की आवश्यकता है, हालांकि :) विषम हालांकि अगर मैं इसे मैन्युअल रूप से करता हूं, तो रूपों के माध्यम से क्लिक करने के लिए केवल 5 सेकंड लगते हैं।
केविन

1
@lucaswxp हाँ! और बीच में बहुत सारी अन्य परियोजनाएँ। जैसा कि मैंने ऊपर बताया कि कोई सही विकल्प नहीं है। उस समय, मैंने HtmlCleaner का उपयोग किया था, लेकिन PhantomJS का उपयोग करने के लिए एक विकल्प जोड़ा, अगर पृष्ठ को निकाला जाना चाहिए।
मार्क बटलर

1
@iconoclast नहीं - दुर्भाग्य से - पिछले नियोक्ता के पास आईपी है।
मार्क बटलर

2

सेलेनियम और फैंटमजस फैंटमजस दोनों की शक्ति का लाभ उठाने में बिना सिर वाली ब्राउज़र क्षमताएं होती हैं, इसलिए इसे सेलेनियम वाले ब्राउज़र में से एक के रूप में उपयोग करना अच्छा है (पारंपरिक ब्राउज़र जैसे IE, क्रोम आदि के अलावा) इस दृष्टिकोण के लाभ:

  1. CI में वेब अनुप्रयोगों के लिए स्वच्छता का उपयोग करने के लिए इस्तेमाल किया जा सकता है (भले ही एजेंट मशीनों में IE या क्रोम नहीं है) परीक्षण प्रभावी रूप से चलेंगे।
  2. कुछ विकास दल त्वरित परिणाम प्राप्त करने के लिए इस दृष्टिकोण का उपयोग करते हैं और समय और संसाधन की कम मात्रा का उपभोग करते हैं।
  3. फैंटम जेएस की सबसे बड़ी विशेषता स्क्रीन कैप्चरिंग है, जिसमें मल्टी थ्रेडिंग का उपयोग करके समानांतर परीक्षण चल रहा है, जिससे आपके निष्पादन का समय बहुत कम हो जाएगा।

1

PhantomJS का उपयोग करते समय मेरे सामने आने वाली चुनौतियाँ:

मेरा अनुप्रयोग वेब अनुप्रयोग का मूल्य निर्धारण कर रहा था:

  1. कुछ बिंदुओं पर, जो कि क्रोम ब्राउज़र पर ठीक काम कर रहे थे, phantomJS पर काम नहीं कर रहे हैं।
  2. कभी-कभी सेलेनियम द्वारा डबल क्लिक या संदर्भ क्लिक करते समय मुझे पहली बार इसे क्लिक नहीं करने पर संचालन coz को सत्यापित करने के लिए एक अतिरिक्त चेक लगाना होगा।
  3. कैश और कुकीज़ दृढ़ता। लॉग आउट करने के बाद और फिर लॉग इन डाटा कैश में रहता है। | इसलिए हम क्रोम पर परीक्षण करते हैं।
  4. सबसे महत्वपूर्ण समस्या में से एक मुझे "फ़ाइल अपलोडिंग समस्या" मिली। हम अपने आवेदन में प्रेत फाइल ब्राउज़र में अपलोड नहीं कर सकते हैं। हमने javascriptexcutor, jqueries में बहुत सी चीजों की कोशिश की लेकिन उनमें से किसी ने भी काम नहीं किया। इसलिए हम यह परीक्षण क्रोम पर भी करते हैं। नोट: हमने अपने फ्रेमवर्क में PhantomJS के लिए वेब तत्व के साथ बातचीत करने के लिए बड़े पैमाने पर जावास्क्रिप्ट कार्यों का उपयोग किया। एक बात सुनिश्चित है कि फैंटमज में निष्पादन का समय बहुत कम है। इसलिए यह ग्राहक की प्राथमिकता पर निर्भर करता है कि वह कार्यक्षमता / प्रदर्शन चाहता है या नहीं। यदि आप एंड टू एंड परिदृश्य का परीक्षण करना चाहते हैं तो क्रोम के लिए जाएं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.