טיפים וטריקים ל-Squish Qt: עבודה עם אובייקטים ללא מאפיינים ייחודיים
ב-Spyrosoft, אנו יודעים שכשמדובר בבדיקות תוכנה, יעילות ודיוק הם קריטיים. כאן נכנס Squish, מסגרת רב-תכליתית לבדיקת GUI אוטומטית. במאמר זה, אנו חולקים טיפים וטריקים לכמה מהבעיות הנפוצות ביותר ב-Squish בעבודה על פרויקטי אוטומציה של בדיקות Qt. אנו גם בוחנים כיצד להתמודד עם אובייקטים שאין להם את המאפיינים הרגילים שבודקי תוכנה בדרך כלל מסתמכים עליהם.
מהן אפליקציות Qt?
אפליקציות Qt מפותחות באמצעות מסגרת Qt.Qt היא מסגרת חוצת-פלטפורמות מבוססת C++ המספקת מגוון רחב של כלים וספריות ליצירת ממשקי משתמש גרפיים (GUI) ורכיבי תוכנה אחרים עבור יישומי שולחן עבודה, מובייל ואינטרנט.
הגדול ביותר היתרון של אפליקציות Qt היא היכולת שלהם לפעול על מערכות הפעלה מרובות, כולל Windows, macOS, Linux, Android ו-iOS. עם אפליקציות Qt, מפתחים יכולים לכתוב קוד פעם אחת ולפרוס אותו על פני פלטפורמות שונות. אין צורך להתמודד עם שינויים משמעותיים בקוד.
בגלל הרבגוניות הזו, Qt נמצא בשימוש נפוץ בתעשיות שונות. הוא פופולרי במיוחד לבניית אפליקציות חוצות-פלטפורמות עם ממשקים גרפיים עשירים.
מהו Squish?
Squish הוא כלי בדיקה אוטומטי. הוא משמש בעיקר לבדיקת ממשקי משתמש גרפיים (GUIs) ביישומים שפותחו עם Qt. Squish הוא אחד מכלי הבדיקה העיקריים שלנו, בעיקר בשל היתרונות המשמעותיים שהכלי הזה מציע:
- יכולות חוצות-פלטפורמות: Squish תומך במגוון רחב של פלטפורמות, כולל Windows, macOS, Linux/Unix, iOS, Android ומערכות משובצות שונות. כתוצאה מכך, אנו יכולים להשתמש באותם תהליכי בדיקה across פלטפורמות שונות.
- תמיכה במגוון טכנולוגיות GUI: אנו משתמשים ב-Squish לבדיקת יישומים הבנויים בטכנולוגיות GUI שונות, כגון Qt, Java, Windows Forms, Web (HTML5/JavaScript) ועוד.
- בדיקות אוטומטיותSquish יכול להשתלב בתהליכי CI/CD, מה שמאפשר בדיקות אוטומטיות ויעילות. בדרך זו נוכל להתמודד עם בעיות פוטנציאליות בשלב מוקדם של תהליך הפיתוח.
- Squish GUI TesterSquish GUI Tester הוא כלי רב-תכליתי להרצת בדיקות אוטומטיות בתרחישים שונים, לרבות בדיקות אצווה מבוזרות ויישומים היברידיים. הוא תומך במספר שפות תסריט ומציע סביבה אינטואיטיבית להקלטה ולניגון חוזר, ובכך משפר את תהליך הבדיקה.
רוצים ללמוד עוד על הצעת שירותי Qt שלנו?
מידע נוסףSquish for Qt – התמודדות עם מכשולים באוטומציה של QA
כעת, לאחר שסקרנו את היסודות, נבחן אתגר נפוץ באוטומציה של בדיקות. מדובר במצב שבו לאובייקט שברצוננו להשתמש בו בסקריפט אין מזהה ייחודי.
הפקת סקריפטים לבדיקה יציבים ועוצמתיים היא קריטית להתגברות על מכשולי האוטומציה של QA אלה. סקריפטים אלה מפשטים את יצירת הבדיקות, התחזוקה ופתרון התקלות, במיוחד כאשר עושים שימוש במפות אובייקטים ובכלי זיהוי אובייקטים.
בעבודה עם Squish, אנו יכולים לחפש מאפיינים ייחודיים אחרים של אובייקטים ולהשתמש בהם כדי ליצור אוטומציה מדויקת ואמינה. עם זאת, לעתים אנו מפספסים את שני המרכיבים הקריטיים הללו לאוטומציה מוצלחת. לדוגמה, זה יכול להתרחש עקב חוסר שיתוף פעולה מצד מפתחים או פשוט בגלל שחלק מהספציפי QML מאפיינים הגורמים לתופעת הלוואי של ריבוי אלמנטים עם אותם מאפיינים.

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

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

כפי שאנו יכולים לראות, קיים מזהה גנרי, הזהה עבור כל המתגים בתפריט זה. אין באפשרותנו להשתמש בו, מכיוון שתכונת המופע גורמת לחוסר יציבות בבדיקות ברגע שמשהו מתווסף לתפריט זה.
עבודה עם בדיקות ממשק משתמש גרפי ב-Squish עבור Qt
בעבר, הבלוג של Froglogic פרסם קוד למעבר על עץ ה-QML כדי למצוא צאצאים של האובייקט הנבחר ושל אובייקטים צפויים. הפוסט עצמו היה מועיל מאוד, אך עם שיפור קטן הוא יכול להפוך לכלי מצוין להתמודדות עם בעיות כגון זו שבדוגמה לעיל.
הנה הקוד לאיתור ילדים אלה עם השיפור, שעבורו אנו מספקים הסבר להלן:

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

העץ הבינארי של זה נראה כך:

הרצת הקוד שלהלן יכולה לספק לנו הפניה מדויקת למתג הרצוי שלנו:

שלב אחר שלב: כיצד פועל מעבר האובייקטים
כעת, הבה נבחן מקרוב את התהליך כולו:
- אנו עוברים במעלה עץ ה-QML לשורה 0 עם parent_container.parent ו-parent_count=1
- לאחר מכן, אנו יוצרים את הרשימה שלנו לאחסון הילדים שאנו מוצאים.
- לבסוף, אנו עוברים בלולאה על הילדים במכולה, ומחפשים את הסוג או המאפיינים הרצויים. אנו שומרים את כל האובייקטים המתאימים ברשימה, ולאחר מכן משתמשים ברקורסיה כדי לרדת לעומק, ולחפש נכדים וכו'.
- אנו מפיקים את התוצאות כרשימה (השתמשנו ב-[0] מכיוון שציפינו לילד יחיד המתאים לדרישות הרצויות שלנו).
![A simple QML hierarchy diagram illustrating a single Row 0 node with two children: the button_switch_0 switch component and the Text_1 element labelled ‘Menu item 1.’ This visualisation is used in Squish Qt testing to explain why a list-style query returns a single matching child, accessed with index [0].](/wp-content/uploads/2024/08/image-hmi-squish-qt-8.jpg)
התגברות על מגבלות באוטומציה של ממשק משתמש עקב מזהים חסרים
שימוש במזהים או במאפיינים ייחודיים הוא תמיד הדרך הטובה ביותר לעבוד. עם זאת, ישנם מקרים שבהם, בין אם בשל חוב טכני או לוחות זמנים צפופים, איננו יכולים לגרום למפתחים להוסיף את הדברים החסרים הללו שחיוניים עבור סקריפטים של אוטומציה של בדיקות.
אמנם הפתרון האמור המשלב את Squish עם QT אינו מושלם, אך הוא עדיין מספק כלים להתמודד עם חלק מהבעיות ויכול להוות שיפור מצוין לאוטומציה של בדיקות אם משתמשים בו בזהירות.
תקציר
לסיכום, גם Qt וגם Squish הם כלים עוצמתיים לפיתוח תוכנה יעיל ולבדיקתה. Qt הוא מסגרת רב-תכליתית לפיתוח חוצה-פלטפורמות, בעוד ש-Squish מבצע אוטומציה ומשפר נהלי בדיקה.
שילוב הכלים הללו מייעל את הפיתוח ומבטיח תוכנה באיכות גבוהה על ידי אוטומציה של בדיקות, ותורם באופן טבעי לחיסכון משמעותי בזמן ובעלויות.
מחפשים צוות מנוסה שיכול לעזור לכם לפתח אפליקציית Qt או לבדוק אותה באמצעות Squish? אנחנו לשירותך. כדי ללמוד עוד על Squish for Qt, עיין ב- שירותי Qt או צרו איתנו קשר ישירות באמצעות הטופס שלהלן.
שאלות נפוצות
אם לאובייקטים של ה-GUI שלך אין מזהים ייחודיים או מאפיינים יציבים, עדיין ניתן להפוך אותם לאוטומטיים על ידי מעבר על עץ ה-QML באמצעות סקריפטים רקורסיביים משופרים. שיטה זו מאפשרת לאתר אלמנטים לפי היררכיה, סוג או יחסי אחים – תוך הימנעות מהסתמכות על מאפייני מופע לא יציבים ושיפור האמינות של אוטומציית הבדיקות שלך.
בעוד ששיתוף פעולה של מפתחים מסייע באמצעות אספקת מאפיינים או מזהים ייחודיים לאובייקטים, Squish עדיין מאפשר לבודקים ליצור סקריפטים לאוטומציה ללא קלט זה. באמצעות שימוש בטכניקות מעבר חכמות, בודקים יכולים לתקשר עם רכיבי GUI בהתבסס על ההקשר או המבנה שלהם – אפילו בסביבות מוגבלות טכנית.
שלא כמו כלי אוטומציה לשימוש כללי, Squish נבנה במיוחד לבדיקות GUI ובעל אינטגרציה עמוקה עם Qt. הוא תומך ב-QML, ב-Qt Widgets ובממשקים היברידיים, ומספק תכונות סקריפטינג מתקדמות ב-Python, JavaScript ושפות נוספות. Froglogic (כיום חלק מ-The Qt Company) מבטיחה תמיכה מקורית ועדכונים תכופים המותאמים ל-Qt.
בהחלט. ניתן לשלב את Squish בכלי CI/CD פופולריים כגון Jenkins, GitLab CI או Azure DevOps. הדבר מאפשר בדיקות GUI רציפות ואיתור באגים מוקדם, מאיץ לולאות משוב בסביבות פיתוח אג'יליות ומשפר את איכות התוכנה הכוללת.
arrow_circle_rightצור קשר
בואו ניצור קשר כדי לבדוק כיצד נוכל לתמוך בפרויקט שלכם
arrow_circle_right מאמרים נוספים