בעולם האוטומציה של בדיקות, תבנית Page Object Model (POM) היא בסיסית ליצירת בדיקות אוטומטיות עמידות, ניתנות לתחזוקה וניתנות להרחבה. מקורה בקהילת Selenium, תבנית POM הפכה לפרקטיקה מומלצת שאומצה באופן נרחב במגוון מסגרות וכלים לאוטומציה של בדיקות לבדיקת ממשקי משתמש, כולל HMI.

מהו Page Object Model?

בליבתו, Page Object Model הוא תבנית עיצוב שמקדמת אנקפסולציה של רכיבי דף אינטרנט והאינטראקציות שלהם בתוך Page Objects ייעודיים. Page Objects אלו משמשים כשכבת הפשטה בין קוד אוטומציית הבדיקות לבין ממשק המשתמש (UI) של האפליקציה. על ידי ייצוג כל דף או רכיב באפליקציה כ-Page Object, בודקים יכולים לכתוב בדיקות אוטומטיות קריאות, מודולריות ותחזוקתיות יותר.

Page Object Model diagram

עקרונות מרכזיים של מודל Page Object

  • אנקפסולציהPage Objects עוטפים את המבנה וההתנהגות של דפי אינטרנט או רכיבי UI, ומסתירים את פרטי המימוש מתסריטי הבדיקה. הדבר מקדם שימוש חוזר בקוד ומפחית כפילות קוד.
  • הפשטהPage Objects מפשטים את המורכבויות של ממשק המשתמש הבסיסי, ומספקים ממשק פשוט ואחיד לאוטומציה של בדיקות. תסריטי בדיקה מתקשרים עם Page Objects באמצעות מתודות ברמה גבוהה, במקום לתפעל ישירות רכיבי ממשק משתמש.
  • הפרדת אחריויותמודל אובייקט העמוד (Page Object Model) מקדם הפרדה ברורה בין לוגיקת הבדיקה לבין אינטראקציות עם ממשק המשתמש. תסריטי הבדיקה מתמקדים בהגדרת תרחישי בדיקה ואימות תוצאות, בעוד שאובייקטי העמוד מטפלים בפרטים של האינטראקציה עם ממשק המשתמש.

Page Object Model על דוגמה של ממשק אדם-מכונה

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

yacht control HMI

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

yacht control HMI components

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

HMI page object model source code

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

בפינה השמאלית העליונה, רכיב מזג אוויר מציג את מצב מזג האוויר, כיוון הרוח ומידע על מהירותה, כפי שנאסף על ידי WeatherPageObject.

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

לבסוף, רכיב ה-UI העליון ביותר מציג את השעה והתאריך הכלואים ב-TimeAndDatePageObject.

בפינות הימנית והשמאלית התחתונות נמצאים הפקדים של לשוניות הצד השמאלי והימני. כל אחד מהם מציין את מיקום הלשונית ומאפשר למשתמש להנמיך או להרים את החרטום המתאים. שניהם מיוצגים באובייקטי עמוד נפרדים בשם PortTabPageObject ו-StarboardTabPageObject.

בתחתית, תפריט עם שלושה כפתורים מאפשר למשתמשים לעבור לתצוגת לוח בקרה, לנווט ולגשת להגדרות. תפריט זה מיוצג על ידי MenuPageObject.

דוגמה זו מדגימה כיצד ניתן להשתמש בתבנית Page Object Model כדי להגדיר אובייקטי עמוד לשימוש בבדיקות. כדי לחקור דוגמה מקיפה וללמוד עוד על התהליך, שקלו להירשם ל קורס Qt Academy, מודל אובייקט עמוד ב-Squish.

היתרונות של שימוש במודל Page Object

  • שימוש חוזר בקוד: ניתן לעשות שימוש חוזר ב-Page Objects across multiple test scripts, promoting modular test design and reducing redundancy.
  • תחזוקתיות הקוד: שינויים בממשק המשתמש יכולים להיות ממוקדים בתוך אובייקטי עמוד (Page Objects), ובכך מצטמצמת ההשפעה על סקריפטי הבדיקה ומפושטת עבודת התחזוקה.
  • קריאות משופרת: סקריפטי בדיקה הופכים לקריאים ומובנים יותר כאשר אינטראקציות ממשק המשתמש מופשטות לשיטות בתוך אובייקטי עמוד.
  • מדרגיות משופרת: המבנה המודולרי של Page Objects מאפשר הרחבה קלה של מאמצי אוטומציית הבדיקות ככל שהיישום מתפתח.
  • כיסוי בדיקות מוגברעם Page Objects, בודקים יכולים להתמקד בכתיבת סקריפטים ברמה גבוהה שמתקשרים עם ממשק המשתמש של האפליקציה ברמה פונקציונלית, ומאפשרים כיסוי בדיקות מקיף.

שיטות עבודה מומלצות ליישום Page Object Model

  • צור Page Objects עבור כל רכיב UI: פרקו דפי אינטרנט או רכיבי ממשק משתמש לאובייקטי Page Objects קטנים וניתנים לניהול, שכל אחד מהם מייצג אזור מובחן בממשק המשתמש.
  • השתמשו בשמות מתודות תיאוריים: הגדירו שמות מתודות ברורים ותיאוריים בתוך Page Objects כדי לאפשר הבנה ושימוש קלים על ידי כותבי סקריפטי בדיקה.
  • מזעור תלויות: שמרו על עצמאותם של אובייקטי העמוד (Page Objects) זה מזה כדי להימנע מצימוד הדוק ולהפחית את הסיכון לשינויים מדורגים.
  • עדכנו את אובייקטי העמוד באופן יזום: יש לסקור ולעדכן באופן קבוע את אובייקטי העמוד (Page Objects) כדי לשקף שינויים בממשק המשתמש של האפליקציה, ולהבטיח שהם נשארים מדויקים ומעודכנים.
  • ניצול ירושת Page Object: יש להשתמש בירושה כדי להרחיב אובייקטי עמוד ולקדם שימוש חוזר בקוד עבור פונקציונליות משותפת במספר עמודים או רכיבים.

סיכום

תבנית Page Object Model מציעה גישה מובנית ואפקטיבית לאוטומציה של בדיקות, ומעצימה צוותים לבנות חבילות בדיקות אוטומטיות ברות-תחזוקה ומדרגיות. על ידי עטיפת אינטראקציות UI בתוך Page Objects ייעודיים, בודקים יכולים לכתוב תסריטי בדיקה קריאים, מודולריים וברי-תחזוקה יותר, מה שמוביל לשיפור ביעילות ובאמינות במאמצי בדיקות תוכנה.

לסיכום, שליטה בתבנית Page Object Model היא חיונית לכל מהנדס אוטומציה של בדיקות המבקש לשדרג את מאמצי הבדיקה שלו ולספק תוכנה באיכות גבוהה בביטחון.

הירשמו לקורס כדי ללמוד עוד

אם ברצונכם להעמיק ביישום המעשי של תבנית Page Object Model באוטומציה של בדיקות, שקלו להירשם לקורס שלנו "Page Object Model in Squish". הוא מותאם לספק לכם הדרכה מעשית שלב אחר שלב ליישום יעיל של Page Object Model בתוך Qt Squish מסגרת.

צברו ניסיון מעשי ושלטו בטכניקות הנדרשות כדי למנף ביעילות את העוצמה של Page Objects בפרויקטי אוטומציה של בדיקות. לחצו כאן כדי ללמוד עוד ולהצטרף לקורס עוד היום!