אתחול קלאס pageObject

קדם Forums בית למפתחת האוטומציה אתחול קלאס pageObject

  • אתחול קלאס pageObject

    פורסם ע"י פייגי סברסקי  חברה on 02/11/2021 ב3:24 pm

    היי,

    האם נכון לאתחל את כל הקלאסים (הדפים) לפני הרצת הטסטים?

    לדוג’ במתודה beforeAll לאתחל את הקלאסים ובטסטים רק לקרוא לפונקציות?

    משהי יודעת מה המעלות והחסרונות בצורה של אתחול לפני הטסטים?

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

    אשמח לשמוע דעות לכאן לכאן,

    תודה,

    פייגי

    פייגי סברסקי הגיבה לפני 2 שנים, 5 חודשים 3 חברות · 7 תגובות
  • 7 תגובות
  • טלי רבינוביץ

    הייטק
    חברה
    02/11/2021 ב8:01 pm

    הי פייגי,

    שאלה טובה. אין בהכרח תשובה טובה.

    פעם היה נהוג להצהיר על כל המשתנים שפונקציה / מחלקה צריכה בתחילת הפונקציה.

    אחר כך זה השתנה והיום מומלץ לאתחל את המשתנים כמה שיותר קרוב לזמן המימוש. זה נחשב למסודר ונקי יותר, אבל אין השפעה מבחינת ביצועים לדוגמא.

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

    בשימוש נכון ב- PageFactory ב- Java או ב Properties ב- #C זה לא אמור לקרות, אבל לפעמים אנחנו עושים בתוך מתודות findElement וזה מקום מסוכן יותר.

    בכל מקרה, לא כדאי לשים את זה ב- BeforeAll, כי BeforeAll רץ לפני שהמחלקה (מחלקת הטסטים) נוצרת, ולכן היא בכלל מתודה שחייבת להיות סטטית.

    בהצלחה!

  • פייגי סברסקי

    חברה
    חברה
    02/11/2021 ב11:55 pm

    תודה טלי!

  • פייגי סברסקי

    חברה
    חברה
    03/11/2021 ב4:35 pm

    היי טלי,

    אני כותבת בjava עם junit5

    אכן הbeforeall אינו מתאים, אז איפה כן מקובל לאתחל?

    תודה,

    פייגי

    • טלי רבינוביץ

      הייטק
      חברה
      04/11/2021 ב1:05 pm

      הי פייגי,

      הדרך הטובה ביותר היא להשתמש במנגנון page flows .
      זה אומר שאת הדף הראשון מייצרים ב new כחלק מהטסט, אבל שאר הדפים וצרים על ידי מתודות ב page object.

      לדוגמא, בדף לוגאין, פונקציית הלוגאין תיצור דף dashboard חדש ותחזיר אותו .

      הרבה הצלחות!

  • פייגי סברסקי

    חברה
    חברה
    04/11/2021 ב3:21 pm

    היי טלי,

    ההצעה שכתבת לא מאתחלת את כל הpages במקום אחד

    כך שאין לזה משמעות מבחינת זכרון, גם מבחינת קוד נקי יותר זה לא מספק אותי מכיוון שעדיין יהיו לי תמיד דפים שלא תלויים בסטפ הקודם שלי ואצטרך לאתחל בגוף הטסט

    אני שואלת היכן אפשר לאתחל פעם אחת את כל הpages ומכיוון שאני לא משתמשת ב@findby או בwebelment class members – זה לא ייצור אצלי בעיה אלא להיפך – ייתן לי יתרון של קוד נקי יותר וביצועים טובים יותר

    האם יש למישהו רעיון היכן אני יכולה לאתחל את כל הpages ואח”כ בטסט לקרוא דרכם לפונקציות הרלוונטיות לי לטסט?

    תודה,

    פייגי

  • Nadya Yekutiel

    חברה
    חברה
    05/11/2021 ב10:10 am

    הי,

    אני מסכימה עם טלי ב 100%.

    קוד נקי – זה לא אומר קוד ללא שורות קוד.

    זה אומר: קוד שמנוהל נכון. שדברים שצריכים לשבת בתשתית – אכן קורים כחלק מהתשתית (לכן לא “מזבלים” את השכבות בקוד שהם לא שייכים לה).

    אך דפים – זה אכן חלק ממה שטסט עושה.

    הוא פותח אותם, ממלא ומבצע ולידציות. גם סוגר. אין סיבה לנסות למצוא מקום אחר בשביל לאתחל את הדפים. אלה בטסט עצמו. או כפי שטלי הציעה: את הראשון – מאתחלים בטסט, ואת השאר – בפונקציה של פעולה (בד”כ קליק) שבדף x שגרמה לפתיחת דף y. תוכלי מייד אחרי הקליק – לאתחל את הדף y ולהחזיר אותו לטסט. אבל גם אם תשאירי את הקליק להיות void ותאתחלי את הדף y בטסט – זה לא יהפוך את הקוד לקוד מזובל ולא נקי. להיפך הוא. יהיה ניתן לראות flow שהטסט עושה. יהיה ניתן לקרוא “סיפור” שמתרחש. הטסט ממש ישקף את מה שכתוב ב test case.

    יותר מזה. דיברת על קוד נקי ונכון. כי את תוכניתנית כמו כל צוות פיתוח אחר. אז בואו נחשוב על פיתוח. מה קורה שם. האם הם מאתחלים דפים שהאפליקציה עולה? לא. כל דף עולה רק אחרי קליק מסוים. רק אז הפיתוח מאתחל את הדף: עושה פניות ל db ולסרוויסים למיניהם. ורק על סמך הנתונים האלה הם יודעים להציג את הדף הבא בצורה כזאת או אחרת. או להעביר אותנו לדף שגיאות.

    לסיכום ובהמלצה חמה: לאתחל את הדפים בנפרד (לא כולם ביחד בהתחלה) ורק במקום הרלוונטי להם מבחינת ה flow. במקום שהם פיזית מופיעים באפליקציה. כי אם נאתחל על ההתחלה – נאהד את המשמעות של אתחול…

  • פייגי סברסקי

    חברה
    חברה
    09/11/2021 ב1:31 pm

    היי נדיה,

    האמת שגם אני חשבתי כמוך, וכך גם ביצעתי

    אלא שכשהראיתי למנהל את מה שעשיתי

    הוא חשב שעדיף לאתחל הכל בהתחלה בשביל ביצועים טובים יותר

    כאשר ניסיתי לבצע את זה,

    גיליתי שבעצם אני לא מוצאת איפה

    אז מי שיודעת אשמח לתשובה…

Log in to reply.

מעוניינת בפרסום

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

ניתן לפנות גם במייל ל: [email protected]

מה את מחפשת?

מילות מפתח פופולריות לפי תחומים

ניתן לחפש גם מילות מפתח , תפקידים וכישרון מיוחד שאינם מופיעים ברשימות - "נהגת", "ציור בחול" וכדומה.

דילוג לתוכן