LOGIN
התחברות או הרשמה
Avatar
להמשך הרשמה ידנית – לחץ על כפתור ההרשמה, להרשמה/כניסה מהירה בעזרת חשבון רשת חברתית – לחץ על הלוגו בכותרת

אפס סיסמה - שכחתי את שם המשתמש

שם משתמש
סיסמה
זכור אותי

he icon   en icon

בכדי להוסיף פוסט בבלוג יש להרשם או להתחבר - ההרשמה/כניסה מתבצעת מכותרת האתר.

Selenium Grid – התקנה, הגדרה והרצה

נכתב על ידי 
חמישי, 04 דצמבר 2014 06:34
דרגו כתבה זו
(2 הצבעות)

ה-Grid הוא חלק מסוויטת המוצרים של Selenium שכוללת בין היתר גם את ה-WebDriver ,ה-IDE וה-Appium הוא בא לתת פתרון להרצות מקבילות וכיסויים נרחבים יותר על סביבות שונות, מבחינה הירארכית ניתן להסתכל על ה-Grid כשכבה מעל ה-WebDriver.

עם ה-Grid נוכל בלחיצת כפתור להריץ את אותם סטים של בדיקות בו זמנית על מערכות שנות כמו למשל Chrome/Win 7 , IE/Win XP , Safari/iOS , Firefox/Linux , Chrome/Android ועוד ועוד ועוד ...

כך השימושים העיקריים של ה-Grid נעשים בעיקר בכיסוי רחב יותר של סביבות, חיסכון בזמן הכללי של הריצה וכן בדיקות עומסים.

הארכיטקטורה מבוססת על שרת לקוח או בשפה המקומית: Hub – Nodes, כך שהפעלת הטסטים יתבצעו על ה-Hub והרצתם בפועל תתבצע על כל ה-Nodes שהוגדרו במערכת, למשל Node 1 יותקן על סביבת לינוקס עם דפדפן FireFox , Node 2 יותקן על סביבת iOS עם דפדפן ספארי וכו'.

ניתן לראות את האכיטקטורה כאן :

Grid1

התמונה נלקחה מהאתר: http://grid.selenium.googlecode.com/git-history/22ed3ff910401af083bf06a4d13514f4c6a623ca/src/main/webapp/diagrams/Requesting%20a%20Specific%20Environment.png

 

ל-Grid יש 2 גרסאות נכון להיום, אתמקד בגרסה השנייה המעודכנת יותר – Grid 2, ההבדלים ביניהם גדולים, בין היתר Grid 2:

- יכול לתמוך בעד 5 דפדפנים לכל Remote Control , ב Grid 1 - רק דפדפן אחד

- תומך בטסטים הכתובים ב-WebDriver , ב Grid 1 רק ב-RC

- מכיל את ה-Selenium Server

 

שלב 1 – התקנת Java

וודאו כי על מחשבכם מותקן Java (כל מחשב שיריץ הן Hub והן Nodes), לבדיקה האם מותקן או לא, פתחו את ה-Command Line והקישו : Java -Version . במידה ולא מותקן, היכנסו לאתר של Oracle , הורידו והתקינו את ה-JDK (הגרסה האחרונה)

* שימו לב, גם אם אינכם עובדים עם JAVA , הפלטפורמה ומערך הבדיקות שלכם כתובים בטכנולוגיה אחרת אין זה אומר כי אתם יכולים לדלג על שלב זה, ללא התקנת JAVA לא תוכלו להתקין את ה-Grid.

 

שלב 2 – התקנת ה-Selenium Grid Server או ה-Hub

לשם כך עלינו תחילה להיכנס לדף ההורדות של פרוייקט סלניום (http://docs.seleniumhq.org/download) ומשם להוריד את ה- Selenium Server (לינק ישיר: http://selenium-release.storage.googleapis.com/2.44/selenium-server-standalone-2.44.0.jar) שהוא למעשה קובץ jar.

פתחו את ה-Command Line והכניסו את הפקודה הבאה:

java -jar selenium-server-standalone-2.44.0.jar -role hub -port 4444 -nodeTimeout 600

מה עשינו פה ?

ביקשנו להתקין את קובץ ה-Jar שהורדנו (במקרה שלנו הגרסה היא 2.44.0), הגדרת ה-Role מבדילה בין התקנת Hub או Node , פה אנחנו מגדירים לו להתקין Hub , עם Port 4444 שהוא ה-Port ברירת המחדל (כשמפעילים את ה-Hub הוא מתחיל אוטומטית להאזין לPort זה. הגדרנו לו עוד שדה (רשות) של TimeOut ל-600 שניות (10 דקות).

* אופציה נוספת: את ה Hub אוכל להגדיר דרך קובץ חיצוני, (בד"כ JSON או YAML), כמו בדוגמא המתוארת בלינק הזה: https://code.google.com/p/selenium/source/browse/java/server/src/org/openqa/grid/common/defaults/DefaultHub.json

והקריאה להפעלת קובץ זה תהיה כך:

java -jar selenium-server-standalone-2.25.0.jar -role hub -hubConfig <File Name>.json

כעת ניתן להיכנס לדפדפן ולבדוק את הגדרת ה-Hub שלנו על ידי הכנסת הכתובת הבאה: http://localhost:4444/grid/console , הקלקה על View Config תציג לנו מידע מפורט יותר על ה-Server שהתקנו.

המסך שיופיע אמור להיראות כך:

Grid2 

נלקח מהאתר: http://i.stack.imgur.com/B2kS8.png

 

שלב 3 – התקנת ה- Selenium Grid Nodes

* על כל סביבת הרצה בה נרצה לעבוד עם ה-Grid נצטרך לבצע את השלב הזה.

בשביל לחבר את ה-Node ל-Hub כאשר הNode יוגדר לוקאלית על המכונה (Node + Hub יושבים על אותה מכונה) נפתח את ה-Command Line ונכניס את הפקודה הבאה:

java -jar selenium-server-standalone-2.44.0.jar -role node –hub http://localhost:4444/grid/register

ואילו Node היושב במכונה מרוחקת יוגדר כך:

java -jar selenium-server-standalone-2.44.0.jar -role node -hub http:// <IP Address>:4444/grid/register

<IP Address> = כתובת ה-IP שבו יושב ה-Hub תוגדר פה

חיבור Node עם הגדרה ספציפית של פרמטרים:

java -jar selenium-server-standalone-2.44.0.jar -role node -hub http:// <IP Address>:4444/grid/register -browser browserName="internet explorer",version=11,maxInstances=4,platform=WINDOWS -port 5556

בדוגמא זו הראתי חיבור של Node מעל מכונה בעלת מערכת הפעלה Windows , בעלת דפדפן מסוג IE , גרסה 11 , ניתן להריץ עד 4 דפדפנים לחיבור זה שיושב על Port 5556 ומאזין לו.

* שימו לב כי ערך ה-Role בספרות יופיע פעם כ-Node , פעם כ- WebDriver ופעם כ-RemoteControl וזה למה ? סיבה היסטורית לתמיכה לאחור. כשיצא Grid 1 עבדו עם החיבור של RC בלבד , Grid 2 הביא איתו גם את התמיכה ב-WD ואילו ה-Node מכיל את שניהם. כך שאם אני משתמש ב-Grid 1 אוכל להשתמש ב -role remotecontrol או ב –role node ואם אני מריץ את Grid 2 אוכל להשתמש ב –role webdriver או –role node

* אופציה נוספת: גם את ה Nodes אוכל להגדיר דרך קובץ חיצוני, (בד"כ JSON או YAML), כמו בדוגמא המתוארת בלינק הזה: https://code.google.com/p/selenium/source/browse/java/server/src/org/openqa/grid/common/defaults/DefaultNode.json

והקריאה להפעלת קובץ זה תהיה כך:

java -jar selenium-server-standalone-2.25.0.jar -role node -nodeConfig <File Name>.json

בסיום הגדרת ה Nodes , ניכנס לדפדפן ונכניס את הכתובת: http://localhost:4444/grid/console

המסך שיופיע אמור להיראות כך:

 Grid3

נלקח מהאתר: http://www.ibm.com/developerworks/library/wa-selenium2/fig02.jpg

 

שלב 4 – הרצת הטסטים אל מול ה-Grid

עכשיו, אחרי שהגדרנו את ה-Hub וה Nodes נותר לנו להריץ את הבדיקות, אך רגע לפני ההרצה, נצטרך להגדיר עוד 2 דברים: קובץ קונפיגורציה ומתודת Setup בקוד שלנו .

 

יצירת קובץ הקונפיגורציה:

הקובץ יוצג כ-XML והוא למעשה יכיל את הטסטים של ה Grid (לא הטסטים שלנו ב-QA) , שיורכבו מהגדרות של משתני סביבה בעיקר. פה נגדיר איפה נריץ בהרצה מקבילית בפרוייקט שלנו.

תחילה נגדיר את ה-Suite :

<suite name="Parallel Tests" verbose="1" thread-count="3" parallel="tests">
</suite>

(הגדרנו פה הרצה מקבילית על 3 Threads שונים)

ואח"כ את ה tests וה parameters שלהם:

<tests>
      <test name="Windows+IE11 Test">
            <parameters>
                  <parameter name="platform" value="Windows" />
                  <parameter name="browser" value="Internet Explorer" />
                  <parameter name="version" value="11" />
                  <parameter name="url" value="http://www.Google.com"/>
            </parameters>
            <classes>
                  <class name="GridTest" />
            </classes>
      </test>

      <test name="Adroid Test">
            <parameters>
                  <parameter name="platform" value=" Android"" />
                  <parameter name="browser" value="Chrome" />
                  <parameter name="version" value="39.0.2171.71" />
                 <parameter name="url" value="http://www.google.com"/>
            </parameters>
            <classes>
                  <class name="GridTest" />
            </classes>
      </test>
</tests>

בדוגמא זו ראינו הגדרת 2 סביבות , הראשונה על Windows עם IE 11 והשניה על Android עם Chrome, בשני המקרים אני מאתחל את הדפדפן עם אתר הבית של Google , שימו לב כי הגדרנו את שם ה class כ- GridTest (נחזור אליו אח"כ).

הוספת מתודת Setup:

הוספת המתודה הזו ל-Class שלנו תיתן לנו את היכולת להתממשק עם ה Grid (כתוב ב-C#):

public void SetupTest()

{

      DesiredCapabilities capabilities = new DesiredCapabilities();

      capabilities = DesiredCapabilities.Firefox();

      capabilities.SetCapability(CapabilityType.BrowserName, "firefox");

      capabilities.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));

      capabilities.SetCapability(CapabilityType.Version, "21.0");

      driver = new RemoteWebDriver(new URL ("http://<Machine IP>:5556/wd/hub"), capabilities);    //<Machine IP> belongs to the second machine IP Address

       baseURL = "https://www.google.com";

       verificationErrors = new StringBuilder();

}

* שימו לב - מכיוון שבקובץ הקונפיגורציה הגדרנו כי <class name="GridTest" /> , לכן את המתודה שלנו נכתוב תחת אותו שם class (או לחילופין נשנה את השם בקובץ הקונפיגורציה).

כתיבת הטסט:

זהו, כמעט סיימנו, כל מה שנותר הוא לכתוב את הטסט עצמו ב-Selenium , הנה דוגמא לכניסה למנוע החיפוש של גוגל וחיפוש המילה Test:

[Test]

public void GoogleTest()

{

      driver.Navigate().GoToUrl(baseURL + "/");

      driver.FindElement(By.Id("gbqfq")).Clear();

      driver.FindElement(By.Id("gbqfq")).SendKeys("Test");

      driver.FindElement(By.Id("gbqfb")).Click();

}

* שימו לב כי ה- baseURL מוגדר אצלינו תחת ה- SetupTest()

עכשיו כאשר נריץ טסט זה הוא יורץ תחת כל אותם Nodes שהגדרנו בשלבים הקודמים .

 

תוספות:

* באה חברת Codoid , הגדילה לעשות ושיחררה כלי GUI להתקנה והגדרה של Selenium Grid , אז לאלו מכם שלא אוהבים את החלון השחור של ה Command Line, יש לכם אלטרנטיבה שנקראת VisGrid אותה ניתן להוריד כאן (http://www.codoid.com/products/view/2/30)

* ישנן כמה חברות מסחריות שמציעות את טכנולוגיית ה-Grid כשירות אצלם בענן, כך שאת כל נושא האינפלמנטציה הם מסדרים, אתם נחשפים מהם לדף dashboard configuration page , מגדירים את הנתונים שלכם ובלחיצת כפתור מתחיל להריץ. השירות אינו חינמי אך יכול לחסוך לכם זמן רב בהתעסקות עם תחזוקת השרתים, הגדרות והתקנות. הנה כמה מהן:

https://saucelabs.com/selenium/selenium-grid

http://www.perfectomobile.com

https://testingbot.com

https://gridlastic.com

http://www.browserstack.com

 

--------------------------------------------------------------

לכתבות נוספות, טיפים וכל מה שקשור לבדיקות אוטומטיות

היכנסו לאתר שלי: http://atidcollege.co.il

יוני פלנר.

 

שונה לאחרונה ב רביעי, 26 ספטמבר 2018 05:55

חובה להיות משתמש רשום במערכת בכדי להגיב - ההרשמה/כניסה בכותרת האתר

חדשות מעולם הבדיקות

  • SpecSync v3.2 released / display iteration and step results in ADO!

    Learn how the SpecSync product is tested. The post SpecSync v3.2 released / display iteration and step results in ADO! appeared first on Gáspár Nagy on software.

    26.01.2021 | 10:07 קרא עוד...
  • Back to Basics – Test Bed

    Back to Basics – Test Bed In this post, let's go back to basics.😇 What is Test Bed? It's the Test Execution environment configured for Testing. Before we (Software Testers) start the Test Execution, it is highly important to ensure that the Test Bed (Hardware, System Software, Application Software, Network Configuration/Setup, Application under Test, Test Data, Reference Documents, People, and anything else that can contribute to Testing) is set up appropriately. It helps us to keep the focus on Testing (rather than dealing with the issues which slows down the Testing activities). Below is the Mind Map I have created about Test Bed. I am sure; additional information can be added in the above mind map. Feel free to comment below with your inputs. Keep learning, keep sharing, and yes, stay safe. 😇

    26.01.2021 | 7:26 קרא עוד...
  • Tips to Win Your First Test Automation Job

    Tips to Win Your First Test Automation Job Almost every online forum or social media network you can find has plenty of posts with people looking for a change in their work at the start of every new year. While many posts come from those with long careers looking to stay in their existing roles elsewhere, a large portion comes from workers looking to enter a new field.In software testing and QA forums, I've noticed an influx of people wanting to get into test automation for the first time. These posts come from people at all levels, from testers with QA experience but no hands-on automation work to those with zero experience in testing. With more organizations looking to get into automation these days, many people are looking to join the field.Unfortunately for these people, getting into the field is a lot more complicated than expected. One of the main pain points I've seen is that almost every entry-level automation job posting seeks testers with at least a year or two of experience. Without any hands-on experience, many would-be automation testers feel entirely stuck.It's understandable to want to hire someone with some experience from the start from a business perspective. Taking someone in with little to no experience for a specific role requires a decent investment of time, with tons of hand-holding to guide them at the start. Many organizations don't have the resources or the desire to deal with this, so they want someone who can get started with minimal effort.Without on-the-job experience, yet no one wanting[…]

    26.01.2021 | 5:00 קרא עוד...

טיפים

  • חשוב לנתח באגים שהתגלו ע"י הלקוח
    חשוב לנתח באגים שהתגלו ע"י הלקוח חשוב לנתח באגים שהתגלו ע"י הלקוח בכדי להבין למה לא נמצאו הבאגים האלו לפני ששוחרר המוצר, כמו גם - מהיכן נבע הבאג מלכתחילה.   אין כאן תהליך של חיפוש אשמים - אלא תהליך של ארגון לומד…
    קרא עוד...
  • בודקים - זכרו כי מדובר באנשים
    בודקים - זכרו כי מדובר באנשים בודקים - זכרו כי מדובר באנשים "זכרו כי מדובר באנשים" (Tony Bruce) – בסופו של יום – כל מוצר ותוכנה מיועד לשרת צרכי אנשים. לעיתים מדובר בקהל אבסטרקטי שאיננו מכירים באופן אישי ואין לנו גישה אליו,…
    קרא עוד...
לרשימה המלאה >>