2013-05-10 10 views
9

पहले मैंने अनुप्रयोगों के परीक्षण को स्वचालित करने के लिए रोबोट फ्रेमवर्क का उपयोग किया था, लेकिन एक नए ग्राहक ने स्पॉक + जीईबी पर ध्यान दिया। मैंने कभी इसका इस्तेमाल नहीं किया है, लेकिन मुझे इन उपकरणों में से दो की तुलना करने और एक विकल्प बनाने की आवश्यकता है। कृपया मुझे यह समझने में सहायता करें कि वे कैसे भिन्न हैं और प्रत्येक की ताकत/कमजोरियां क्या हैं।स्पॉक + जीईबी बनाम रोबोट फ्रेमवर्क

+0

क्या आप साझा कर सकते हैं कि आपने कौन सी पसंद की और – binithb

+0

पहली पसंद आरएफ थी। यूआई के धुएं परीक्षण करने में शुरू करना और त्वरित परिणाम प्राप्त करना आसान है। यह पायथन की स्क्रिप्ट के साथ विस्तारित है इसलिए हम वेब सेवा के माध्यम से एक्सएमएल फाइलों को लोड करने में सफलतापूर्वक परीक्षण करने में सक्षम हैं और डीबी/फाइल में डेटा के साथ आवेदन में डेटा की तुलना कर सकते हैं। अब हम गेब + स्पॉक पर स्विच करने जा रहे हैं। समझने में यह और मुश्किल है। यह मेरा निर्णय नहीं है, यह परियोजना + जीबी + स्पॉक का उपयोग करने की दिशा है। मैंने अभी इस पर काम करना शुरू कर दिया है और इस तरह कम प्रोमिंग नहीं दिखता है। इसके अलावा मुझे भार परीक्षण करने के लिए लोडयूआई से जीबी की स्क्रिप्ट लॉन्च करने की संभावना मिली, इसलिए, यह एक अच्छा प्लस हो सकता है। – Evgeniy

+1

हमने कुछ परियोजनाओं के लिए जीईबी और रोबोट दोनों का उपयोग किया है; और हाल ही में रोबोट का उपयोग जारी रखा है। हमने पाया है कि हमारी परीक्षा टीम रोबोट परीक्षणों को सहज लिख रही है, और इसलिए हमारे परीक्षण अब टेस्टर्स और डेवलपर्स (जहां जीईबी के साथ ही यह पूरी तरह डेवलपर्स थे) द्वारा लिखे गए हैं। हमारे लिए, हमारे परीक्षक अब अन्य परियोजनाओं (मुख्य रूप से वेब सर्विसेज का परीक्षण) के लिए रोबोट का उपयोग कर रहे हैं, इसलिए उनके लिए प्रत्येक के लिए एक नया टूल सीखने के बिना परियोजनाओं के बीच माइग्रेट करना आसान है। लेखन रोबोट परीक्षण सरल है और उन्हें क्रॉस-ब्राउजर चलाने में आसान है जो भी अच्छा है। – Bryce

उत्तर

10

मैं आपको Geb के बारे में बताता हूं, मैं वेब-अनुप्रयोगों का परीक्षण करने के लिए gebish का उपयोग 6 महीने अधिक करता हूं।

  • क्रॉस ब्राउज़र स्वचालन
  • jQuery की तरह एपीआई
  • पृष्ठ ऑब्जेक्ट्स
  • Asynchronicity
  • परीक्षण
  • सिस्टम इंटीग्रेशन का निर्माण

अब के बारे में विवरण: यह उसके सारे लाभ उनमें से हर एक।

  • क्रॉस ब्राउज़र स्वचालन

Geb ब्राउज़र स्वचालन के लिए WebDriver पुस्तकालय का लाभ उठाता है। इसका अर्थ यह है कि जीबी वेब ब्राउवर के साथ काम करने वाले किसी भी ब्राउज़र के साथ काम करता है, और वेबड्राइवर के साथ काम करने वाले ब्राउज़रों की सूची हर समय बढ़ रही है।

कोर समर्थित ब्राउज़र में हैं:

  • फ़ायर्फ़ॉक्स
  • इंटरनेट एक्सप्लोरर
  • गूगल क्रोम
  • ओपेरा

वहाँ भी प्रयोगात्मक समर्थन है:

  • Android पर Chrome
  • सफारी iPhone पर & आईपैड

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

  • jQuery की तरह एपीआई

Geb सामग्री पर प्राप्त करने के लिए एक संक्षिप्त और प्रभावी तरीका प्रदान करने के लिए jQuery से प्रेरणा लेता है। इसे नेविगेटर एपीआई कहा जाता है।

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

// CSS 3 selectors 
$("div.some-class p:first[title='something']") 

// Find via index and/or attribute matching 
$("h1", 2, class: "heading") 
$("p", name: "description") 
$("ul.things li", 2) 

// 'text' is special attribute for the element text content 
$("h1", text: "All about Geb") 

// Use builtin matchers and regular expressions 
$("p", text: contains("Geb")) 
$("input", value: ~/\d{3,}-\d{3,}-\d{3,}/) 

// Chaining 
$("div").find(".b") 
$("div").filter(".c").parents() 
$("p.c").siblings() 
  • पृष्ठ ऑब्जेक्ट्स

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

import geb.Page 

class LoginPage extends Page { 
    static url = "http://myapp.com/login" 
    static at = { heading.text() == "Please Login" } 
    static content = { 
     heading { $("h1") } 
     loginForm { $("form.login") } 
     loginButton(to: AdminPage) { loginForm.login() } 
    } 
} 

class AdminPage extends Page { 
    static at = { heading.text() == "Admin Section" } 
    static content = { 
     heading { $("h1") } 
    } 
} 
  • Asynchronicity

आधुनिक वेब पृष्ठों AJAX अनुरोध और एनिमेशन की तरह अतुल्यकालिक संचालन से भरे हुए हैं। जीबी जीवन के इस तथ्य के लिए समर्थन में निर्मित प्रदान करता है।

कोई भी सामग्री लुकअप, या ऑपरेशन को प्रतीक्षा में क्लॉफ किया जा सकता है।

waitFor { 
    $("p.status").text() == "Asynchronous operation complete!" 
} 

इस बार की एक निश्चित राशि के लिए शर्त का परीक्षण (जो विन्यास योग्य है) जब तक यह गुजरता रखेंगे। सामग्री का इंतजार करने के लिए एक ही तकनीक का उपयोग किया जा सकता है, सामग्री के लिए जरूरी नहीं कि कुछ विशेषता हो।

def dynamicParagraph = waitFor { $("p.dynamically-added") } 
dynamicParagraph.text() == "Added dynamically!" 

तुम भी परिभाषित कर सकते हैं कि सामग्री परोक्ष के लिए पेज के लिए सामग्री डीएसएल में वस्तुओं

import geb.Page 

class DynamicPage extends Page { 
    static content = { 
     dynamicParagraph(wait: true) { $("p.dynamically-added") } 
    } 
} 
इस परिभाषा के साथ

, जब dynamicParagraph अनुरोध किया जाता है Geb implictly समय की एक निश्चित राशि के लिए इंतजार करेंगे इंतजार कर रहे थे किया जाना चाहिए इसके लिए प्रकट होने के लिए।

  • परीक्षण

Geb इस तरह के स्पोक्स, JUnit, TestNG, EasyB और ककड़ी (Cuke4Duke के माध्यम से)

Geb इन सभी के साथ अच्छा काम करता है जबकि के रूप में लोकप्रिय परीक्षण चौखटे के लिए एकीकरण मॉड्यूल प्रदान करता है ढांचे, यह वास्तव में स्पॉक के साथ चमकता है। स्पॉक एक अभिनव परीक्षण ढांचा है जो Geb के साथ उपयोग करने के लिए एक महान मैच है। स्पॉक + जीबी का उपयोग करके आप बहुत कम प्रयास के साथ परीक्षण विनिर्देशों को समझने के लिए बहुत स्पष्ट, संक्षिप्त और आसान प्रदान करते हैं।

import geb.Page 
import geb.spock.GebSpec 

class LoginSpec extends GebSpec { 
    def "login to admin section"() { 
     given: 
     to LoginPage 

     when: 
     loginForm.with { 
      username = "admin" 
      password = "password" 
     } 

     and: 
     loginButton.click() 

     then: 
     at AdminPage 
    } 
} 
  • बिल्ड सिस्टम इंटीग्रेशन

Geb किसी भी निर्माण सिस्टम में एकीकृत करने के लिए आसान है, और सूचना और निम्नलिखित निर्माण/परियोजना इस प्रणाली के साथ एकीकृत करने पर उदाहरण उपलब्ध है:

  • ग्रेड
  • Grails
  • Maven

तुम मेरे उदाहरण (स्पॉक + GEB) यहाँ देख सकते हैं: github

यहाँ geb के बारे में और अधिक पढ़ें: Official Site

धन्यवाद !!!

+0

इस तरह की पूर्ण और विस्तृत प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। लेकिन, दुर्भाग्य से, मैं इन सब में एक पूर्ण नोब हूं और निम्नलिखित प्रश्न अभी भी मेरे लिए प्रासंगिक हैं: 1. जीईबी कैसे स्पॉक के साथ बातचीत करता है? मैंने आधिकारिक साइटों को देखा, लेकिन मुझे ऐसी जानकारी नहीं मिली है जिसे मुझे Geb + Spock के साथ काम करने के लिए सेट करने की आवश्यकता है? कैसे शुरू करना है मेरे पीसी पर एक सरल परीक्षण लिखना। 2. जैसा कि मैं समझता हूं कि सभी परीक्षण ग्रोवी में लिखे गए हैं और परीक्षण अनुप्रयोगों के उद्देश्य से जावा में लिखा गया है। लेकिन मुझे समझ में नहीं आता कि रोबोट ढांचे की तुलना में इसकी मजबूत/कमजोर पक्ष क्या है? आपकी मदद के लिए धन्यवाद। – Evgeniy

+0

उत्तर: 1) शुरुआत के लिए आपको अपने पीसी (ग्रेडल, मैवेन, ग्रिल) पर ऑटोमेशन बनाने की आवश्यकता है, मैं धीरे-धीरे उपयोग करता हूं, क्योंकि - डीएसएल भाषा। इसके बाद जीबीबी होम पेज पर जाएं और देखें कि कैसे कॉन्फ़िगर बिल्ड फ़ाइल (pom.xml - maven, build.gradle - gradle) [यहां] (http://www.gebish.org/manual/current/build-integrations.html) – plsgogame

+0

2) सभी परीक्षण ग्रोवी - 99% जावा पर लिखते हैं, आपके परीक्षणों में आप जीयूआई (वेब-ड्राइवर) + अन्य जांच सकते हैं (डीबी जांचें, आरईएसटी और अन्य जांचें)। मुझे लगता है कि यह इस ढांचे के मजबूत पक्ष है। – plsgogame

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