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://YoniFlenner.Net

יוני פלנר.

שונה לאחרונה ב רביעי, 11 פברואר 2015 02:51

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

טיפים

לרשימה המלאה >>