בדרך כלל אני מרבה לדבר כאן בבלוג על Selenium WebDriver או Appium שהן סביבות לבדיקות עבור קליינטים בעיקר (רוב הקליינטים של המוצרים כתובים על פלטפורמות ה-Web Browsers או כ-Mobile Apps), אך המוצר שאנו בודקים יכול לכלול גם רכיבים אחרים כגון WebSevices , Servers , Back Office , DataBases , Backup & Restore וכו’.
Selenium WebDriver אינו יכול לעבוד על מערכת Back Office שכתובה כ-WinForms למשל. בפוסט זה החלטתי לסקור את הכלים בהם נוכל להטמיע בדיקות אוטומטיות על אפליקציות Desktop אשר נכתבו בטכנולוגיות WinForms / WPF . ישנם כמה סוגים שונים של כלים רלוונטים לשוק זה, חלקם מסחריים , חלקם פתוחים (Open Source) , ישנם כאלו שעובדים בטכנולוגיה של זיהוי אובייקטים וכאלו שעובדים בטכנולוגיה של זיהוי תמונה.
בפוסט זה רק אציין כמה מן הכלים המסחריים המסוגלים לבצע בדיקות אוטומטיות על Desktop Apps כמו : TestComplete , UFT , Ranorex , TestStudio, CodedUI , EggPlant. וארחיב יותר על הכלים הפתוחים.
ה-AutoIT הוא כלי קטן יחסית וקל משקל , מגיע כ-Stand Alone (ללא צורך בשיוך קבצי DLL נוספים או עידכונים ברג’יסטרי), יודע לסמלץ בשבילנו הקלקות על העכבר ופעולות על המקלדת. מפעיל מאחורי הקלעים את קבצי האסמבלי של האפליקציה ודרכם יודע לבצע Reflection על הפקדים השונים (שדות טקסט , כפתורים , רשימות וכו’). ה-AutoIT מגיע עם Editor משלו והוא תומך הן בהקלטות והן בקידוד בשפת סקריפטינג משלו דמוי סינטקס ה-BASIC.
ניתן לייצא ממנו קובץ Executable – אותו אח”כ נוכל לפעיל עצמאית מחוץ לפרוייקט (מצויין אם נרצה לממשק אותו לסביבת הסלניום שלנו).
אם אתם כבר משתמשים ב-Selenium WebDriver ורגילים לעבוד עם ה-API שלו (ורוב הסיכויי שכן…) המעבר ל-Winium יהיה חלק וברור.
נתקלתי עימו בלא מעט קשיים, אני מאמין שאלו חבלי לידה של מוצר חדש. בכל מקרה ה-API שלו עדיין לא מושלם ובטח שלא בשל כמו של הכלים האחרים פה ברשימה.
ה-White היא ספרייה עימה ניתן לעבוד בשביל לאטמט אפליקציות דסקטופיות , התחילה את דרכה כפרוייקט קטן של קוד פתוח ובשלב מסויים נבלעה תחת פרוייקט TestStack המכיל פרוייטקים שונים של קוד פתוח לבדיקות ידניות ואוטומטיות.
ה-White תומכת במגוון טכנולוגיות לאוטומציה: Win32, WinForms, WPF, Silverlight ו-SWT בג’אווה, את הבדיקות עם White ניתן לכתוב בכל שפה שנתמכת ב-NET.
ה-LDTP הן ראשי תיבות של Linux Desktop Testing Project , אך אל תתנו לשם להטעות אתכם, אמנם הפרוייקט החל את דרכו במערכת לינוקס, אך כיום הוא כבר נתמך גם במחשבי MAC (גרסת PyATOM) וגם במערכות הפעלה Windows (גרסת Cobra). ה-LDTP מגיע עם Editor משל עצמו ובין השאר הכלי תומך גם בהקלטות.
מבין כל הכלים הנסקרים כאן, Sikuli הוא היוצא דופן, למה ? כי הוא עובד על שיטת זיהוי אלמנטים לפי זיהוי תמונה, כאשר כל שאר הכלים ברשימה הזו מזהים את האלמנטים לפי המאפיינים שנכתבו להם בזמן הפיתוח (Object Properties). כמובן שישנם חסרונות ויתרונות לכאן ולכאן. זיהוי התמונה פועל ע”י מנוע להשוואת תמונות שיושב מאחורי הקלעים, המנוע יודע להשוות פיקסל לפיקסל ברמת ה-BitMap , בעבודה עם Sikuli עלינו תחילה ליצור Repository של תמונות (צילומי מסך מהאפליקציה) שהם יהוו את מקור ההשוואה (מה שנקרא – Expected Result) ללקבוע נקודות וריפיקציה אותם נפעיל בזמן ריצת התוכנית (Actual Result).
הכלי מגיע עם IDE משל עצמו הכולל גם שפת סקריפטים ייחודים וגם כ-API אליו ניתן להתממשק (ב-Java וב-#C).
עם Sikuli ניתן לבצע הן בדיקות ויזואליזציה והן בדיקות פונקציונליות.
ה-pyWinAuto היא ספריה בפיית’ון אשר חושפת בפנינו אוסף של פונקציונליות המטפלות בפעולות שניתן לבצע על חלונות Windows (כמו windows dialogs ו-controls), הספריה מציגה סט די גדול של פעולות והיא ברורה ונוחה לשימוש.
למי שלא מגיע מעלם הפיית’ון, מן הסתם, יצרטך להקים פרויקט חדש במערכת שלו שיטפל בבדיקות אלו.
האחרונים ברשימה קצת שונים מכל השאר מכיוון שהם לא בדיוק כלים של בדיקות אלא מחלקות לסימלוץ פעולות של המקלדת והעכבר, כאשר ה-Robot Class ישמש אותנו במידה ונרצה לכתוב קוד ב-Java ואילו ה-Win.form כשנכתוב את הקוד שלנו ב-NET.