Development/UITests/he

זה התיעוד הראשוני לתשתית בדיקות מנשק משתמש עם התמקדות מיוחדת בצד של ה־Python.

מבנה
בדיקות מנשק המשתמש מורכבות משני חלקים, חלק ב־C++‎ שעוטף את מנשק המשתמש של LibreOffice בספריה שבוחנת את המערכת פנימה ותשתית Python עם קוד בדיקה ממשי. החיבור בין שני החלקים נעשה דרך מנשק UNO פשוט שטרם הוקלד.

ספריית הבחינה פנימה ב־C++‎
ספריית הבחינה הפנימית ב־C++‎ מורכבת מ־UNO API שמשמש לתקשורת עם החלק של ה־Python של התשתית והחלקים העוטפים למגוון פריטי מנשק משתמש. למנשק UNO יש מגוון מצומצם של שיטות ורוב התקשורת מתרחשת דרך משתני מחרוזות.

החלקים העוטפים לרכיבי מנשק המשתמש הם בערך אותן שיטות כמו מנשק UNO, בנוסף למספר שיטות מסייעות.

כתיבת בדיקות
המצגת של שיסקו פאולי מ־FOSDEM 2021, אבטחת איכות של LibreOffice - איך לכתוב את הבדיקה הראשונה שלך, עוברת על תהליך יצירת בדיקות.

Xisco's presentation from FOSDEM 2022 shows Things you can test in a UITest.

החלק של ה־Makefile
קובץ makefile פשוט לבדיקות מנשק משתמש נראה כמו ה־makefile לדוגמה. החלק החשוב הוא להשתמש במחלקה UITest של gbuild ולאפשר ל־„gb_UITest_add_module” להצביע לתיקיות עם קובצי הבדיקות.

בדרך כלל לא צריך לעשות שום דבר מעבר לזה והרוב מטופל במסגרת מחלקת ה־UITest של gbuild.

המשתנה range_name (שם טווח) הוא שם יעד הבדיקה. ‎$(SRCDIR/sc/qa/uitest היא תיקיית הבסיס והמשתנים בחלק הזה מציגים את התיקיות בהן יתבצע החיפוש אחר הבדיקות.

ניתן להריץ את הבדיקה עם קובץ registrymodifications.xcu מסוים כדי לתמוך בהרצה עם הגדרות תצורה מסוימות. לכל בדיקה יש פרופיל משתמש משלה תחת workdir/UITest/test_name/user/‎. עם מקטע הקוד הבא כ־Makefile ניתן להעתיק קובץ לתיקייה הזאת.

פעולה זו תעתיק את הקובץ sc/qa/uitest/range_name/registrymodifications.xcu לפרופיל המשתמש והבדיקה תרוץ עם ההגדרות האלו.

טיפול במצב רכיבי מנשק משתמש
השיטה לקבלת מצב פריט מנשק המשתמש מסופקת על ידי כלל רכיבי מנשק המשתמש. השיטה מחזירה את המצב כרצף של PropertyValue.

תשתית בדיקת מנשק המשתמש מספקת שיטה להמרת הרצף שמוחזק של PropertyValue למילון (dict) ב־Python.

פעולות מילות מפתח
דוגמה:

קודים של מקשים:



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


 * 1) יש להשתמש בפקודות האלו ב־‎.bashrc או ב־‎.cshrc:
 * 2) להפעיל את LibreOffice עם
 * 3) לדמות מה מעניין אותך לעשות עם העכבר
 * 4) לסגור את LibreOffice
 * 5) לפתוח את הקובץ שמתקבל תחת instdir/uitest/test.log
 * 6) להיכנס לתיקיית מתעד מנשק המשתמש עם הפקודה הבאה:
 * 7) לוודא של־python יש את ספריית textX מותקנת
 * 8) להשתמש בפקודה הבאה   את <נתיב_לקובץ_תיעוד> יש להחליף במשהו כמו SourceDirectory/core/instdir/uitest/test.log ואילו <נתיב_לקובץ_python_חדש> יכול להיות המיקום לבחירתך בו עדיף לך לצפות בקוד שנוצר.

ניתן לעקוב אחר כל השלבים האלו בסרטון ה־YouTube הבא:

הרצת הבדיקה
לפני דחיפת (push) הבדיקה ל־master כדאי לבדוק שהבדיקה עובדת. הדרך הפשוטה היא להפעיל את כל בדיקות מנשק המשתמש במודול uitest דרך make uitest.uicheck. עם זאת, עדיף לראות את מנשק המשתמש בזמן הפעלת הבדיקה והבדיקות רצות ללא תצוגה כבררת מחדל. אפשר לעשות זאת על ידי הרצת הרצף הבא בתיקיית הליבה:

אפשר גם להשתמש בסקריפט shell להתחלת בדיקה.

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

Note that you have to run this script from the source directory of LibreOffice core.

במקרה שהבדיקה קוראת ל־‚get_url_for_data_file’ (קבלת כתובת עבור קובץ נתונים) כדי לפתוח קובץ, יש לשנות את המשתנה TDOC בהתאם כך שיצביע לתיקייה בה נמצא הקובץ. בעת הפעלת הבדיקה עם מנשק המשתמש הגלוי ניתן לראות שהבדיקה מהירה מדי ואי אפשר לראות מה קורה. פתרון מהיר ומלוכלך לכך הוא להוסיף את הפונקציה time.sleep ב־Python שעוצרת את הפעולה לזמן קצר. המקומות האחרים הם uitest.debug.sleep. השיטה הזאת לא חלה אלמלא הבדיקה הופעלה במצב ניפוי שגיאות (debug) על ידי העברת המשתנה ‎--debug לבדיקה.

כשעליך להריץ בדיקה אחת בקובץ סקריפט בדיקות, יש להפעיל את הפקודה הבאה:

למשל

פריטי מנשק משתמש שאינם נתמכים

 * תמיכה ב־Base
 * מסדר השקופיות ב־Impress
 * לחיצה כפולה בטפסים. לפרטים: https://bugs.documentfoundation.org/show_bug.cgi?id=133641
 * אשפי קבצים
 * Impress - ממזער המצגות
 * תיעוד ( LO_COLLECT_UIINFO) תחת Windows
 * לחיצה כפולה
 * תיעוד תרשימים
 * סרגל המידע התחתון ב־Calc
 * תמיכה טובה יותר בקיצורי דרך (tdf124931)

רשימה של בדיקות מנשק משתמש ב־master
ניתן לעיין ברשימת בדיקות מנשק המשתמש שכבר הוטמעו.

איתור תקלות
מילת המפתח needUITest בבאגזילה קיימת כדי לעקוב אחר כל התקלות שדורשות בדיקה אוטומטית עם UITest:

מידע נוסף

 * רשומה בבלוג של מרקוס מורהרד: בדיקת מנשק משתמש ב־LibreOffice


 * רשומה בבלוג של מרקוס מורהרד: כתיבת בדיקת מנשק משתמש ל־LibreOffice Calc


 * רשומה בבלוג של מרקוס מורהרד: מדריך לבדיקת מנשק המשתמש ב־LibreOffice (חלק 1): הוספת בדיקה פשוטה.


 * רשומה בבלוג של מרקוס מורהרד: מדריך לבדיקת מנשק משתמש ב־LibreOffice (חלק 2): שיפור ספריית הבחינה הפנימית


 * GSOC 2018 הבלוג של סאורב צ׳ירניה


 * GSOC 2019 הבלוג של אחמד א־שריף


 * איך ליצור מקרה בוחן באמצעות התיעוד שערכת (סרטון YouTube)