2012-01-30 7 views
11

मैं वर्तमान में अपने उत्पादन कोड के भीतर इसे (वेबड्राइवर) ड्राइव करने के लिए एचटीएमएलयूनीट और सेलेनियम का उपयोग कर रहा हूं।एचटीएमएल यूनिट + सेलेनियम उत्पादन के भीतर

मैं scaping कर रहा हूँ और इन पुस्तकालयों के साथ प्रोग्राम के रूप में विभिन्न वेबसाइटों के साथ बातचीत और कुछ सफलता हो रहा है और स्मृति समस्याओं का सामना नहीं (सुनिश्चित सत्र हमेशा साफ कर रहे हैं)।

मैं अगर इन पुस्तकालयों उत्पादन परिवेश के लिए ठीक है या के खिलाफ सिफारिश कर रहे हैं सोच रहा हूँ। स्वचालित परीक्षण के बारे में बड़ी मात्रा में जानकारी के कारण Google के माध्यम से यह खोजना मुश्किल है कि मैं उनका उपयोग कैसे कर रहा हूं।

मुझे पता है यह एक काफी सामान्य सवाल है, लेकिन मैं इन पुस्तकालयों और संभवतः बेहतर विकल्प के बारे में सलाह की मांग कर रहा हूँ।

उत्तर

9

वेबड्रिवर और सेलेनियम उत्पादन वातावरण के लिए पूरी तरह उपयुक्त हैं। मैं उन्हें बहु-मशीनों/बहु-डेटासेंटर वितरित ग्रिड पर 2 साल के लिए काफी व्यापक रूप से उपयोग करता हूं और इसमें बिल्कुल कोई प्रदर्शन नहीं था और न ही स्थिरता की समस्याएं जिनके साथ हम सामना नहीं कर सके थे।

हमारा पसंदीदा ड्राइवर फ़ायरफ़ॉक्स एक है (HTMLUnit से अधिक, और कॉन्फ़िगर करने में कठोर), और हमें यह समझने के लिए ग्रिड को ट्विक करना पड़ा कि हम कितने उदाहरण चला सकते हैं। स्थिरता के लिए हमारा अधिकतम 1 प्रति कोर

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

हमने HTMLUnit का व्यापक रूप से उपयोग किया है, और इस पुस्तकालय से भी उतने ही संतुष्ट हैं

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

+0

धन्यवाद, यह वह जवाब था जिसे मैं ढूंढ रहा था। – Steven

2

आम तौर पर, इसके बारे में अपने परीक्षण "आंत महसूस" का उपयोग करें। वेबड्राइवर और HTMLUnit क्या करता है, यह वास्तविक उपयोगकर्ता को वेबपृष्ठ में कुछ क्रियाएं करने का अनुकरण करता है।

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

हाँ, सामान्य प्रश्न के लिए अपने सामान्य जवाब है, लेकिन इस प्रयास करें:

webapp के लिए जिम्मेदार लोगों को इकट्ठा चारों ओर और उनसे:

  • यह उत्पादन पर परीक्षण किया जाना चाहिए? (ताकि वहाँ हमेशा मामूली मौका है, कि कुछ ग्राहकों को उन परीक्षण डेटा देखेंगे)

  • यदि हाँ, क्या उत्पादन पर परीक्षण किया जाना चाहिए?

  • यदि हाँ, तो यह स्वचालित किया जाना चाहिए?

और फिर आप इस सवाल का जवाब है;)

+1

मैं अगर मैं webdriver के साथ अपने उत्पादन उदाहरण का परीक्षण करना चाहिए नहीं पूछ रहा हूँ parallelize करने के लिए है का उपयोग करने की सलाह देते हैं, मैं पूछ रहा हूँ अगर webdriver उत्पादन कोड के रूप में प्रयोग ठीक है। मेरे उत्पादन वातावरण webdriver का उपयोग करता है अन्य वेबसाइटों के साथ बातचीत करने के कारण वे व्यापक जावास्क्रिप्ट का उपयोग करें। – Steven

5

मैं उत्पादन में कुछ इसी तरह के लिए HtmlUnit उपयोग कर रहा हूँ और काफी मुद्दों का एक सा पड़ा है - ज्यादातर संबंधित प्रदर्शन। वर्तमान में मैंने HtmlUnit 2.10 के स्नैपशॉट संस्करण में स्विच किया है, जहां मेरे लिए कुछ महत्वपूर्ण प्रदर्शन सुधार लागू किए गए थे (उदाहरण के लिए ArrayList.contains()HashSet.contains()DomNode.addDomChangeListener() पर)।

फिर भी, सीपीयू लोड जावास्क्रिप्ट-भारी पृष्ठों पर काफी अधिक है। आम तौर पर, मैं दोहरी कोर लिनक्स बॉक्स पर एक साथ 10 से अधिक नहीं चला सकता। मेरा मानना ​​है कि HtmlUnit केवल क्रिनो मोड में राइनो (जावास्क्रिप्ट इंजन) का उपयोग कर, जो कि बहुत धीमी है। इसके अलावा, आपको स्मृति लीक से बचने के लिए HtmlUnit द्वारा उपयोग किए जाने वाले सभी संसाधनों को जारी करने से सावधान रहना होगा।

कुल मिलाकर, यह HtmlUnit अपेक्षाकृत कम परीक्षण मामलों रहते थे और लंबे समय तक नहीं चल रहा सर्वर अनुप्रयोग को चलाने के लिए डिजाइन किया गया था निश्चित रूप से ध्यान देने योग्य है कि। इसे पर्याप्त रूप से ट्विक करना संभव है ताकि यह प्रबंधनीय हो लेकिन निश्चित रूप से यह बेहतर हो सकता था।

एक अन्य दृष्टिकोण जो मुझे आशा है वह phantom-js है, जो वेबकिट ब्राउज़र का मुख्य संस्करण है, मूल ऐप जो जावास्क्रिप्ट चलाने पर बहुत तेज़ है।

+0

प्रेत-js दिलचस्प लग रहा है लेकिन htmlunit (अभी तक) के लिए एक उपयुक्त प्रतिस्थापन क्योंकि यह webdriver एकीकरण याद आ रही है नहीं है। – Steven

+0

शायद। मैं खुद वेबड्राइवर का उपयोग नहीं करता हूं। – maximdim

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