בדרך כלל אני מרבה לדבר כאן בבלוג על 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
אתר: https://www.autoitscript.com/site/autoit
ה-AutoIT הוא כלי קטן יחסית וקל משקל , מגיע כ-Stand Alone (ללא צורך בשיוך קבצי DLL נוספים או עידכונים ברג'יסטרי), יודע לסמלץ בשבילנו הקלקות על העכבר ופעולות על המקלדת. מפעיל מאחורי הקלעים את קבצי האסמבלי של האפליקציה ודרכם יודע לבצע Reflection על הפקדים השונים (שדות טקסט , כפתורים , רשימות וכו'). ה-AutoIT מגיע עם Editor משלו והוא תומך הן בהקלטות והן בקידוד בשפת סקריפטינג משלו דמוי סינטקס ה-BASIC.
אהבתי :
ניתן לייצא ממנו קובץ Executable – אותו אח"כ נוכל לפעיל עצמאית מחוץ לפרוייקט (מצויין אם נרצה לממשק אותו לסביבת הסלניום שלנו).
תומך ב-Regular Expression
ניתן לפתח עליו תוספות מיוחדות לצרכים אישיים (דרך גרסה מיוחדת שנקראת – AutoItX)
לא אהבתי :
שפת קידוד ייחודית (שמצריכה לימוד)
שורה תחתונה:
לא סתם הוא אחד מהכלים הפופולריים ביותר בשוק כיום בתחומו
Winium
אתר: https://github.com/2gis/Winium
Winium הוא ה-Framework הצעיר והמרענן ביותר ברשימה, כמו כולם פה הוא Open Source ולהבדיל מכולם הוא מבוסס על סלניום. המפתחים כאן החליטו לפצל את הפרוייקט שלהם לשלושה כאשר הראשון תומך באוטומציה על אפליקציות Windows , השני עובד על מערכת ההפעלה Windows Phone והשלישי בודק אפליקציות על Windows Phone
אהבתי :
אם אתם כבר משתמשים ב-Selenium WebDriver ורגילים לעבוד עם ה-API שלו (ורוב הסיכויי שכן…) המעבר ל-Winium יהיה חלק וברור.
לא אהבתי :
נתקלתי עימו בלא מעט קשיים, אני מאמין שאלו חבלי לידה של מוצר חדש. בכל מקרה ה-API שלו עדיין לא מושלם ובטח שלא בשל כמו של הכלים האחרים פה ברשימה.
שורה תחתונה:
אם אתם שוקלים לעבוד עם ה-Winium , תמתינו קצת שיבשיל עוד יותר
TestStack.White
אתר: https://github.com/TestStack/White
ה-White היא ספרייה עימה ניתן לעבוד בשביל לאטמט אפליקציות דסקטופיות , התחילה את דרכה כפרוייקט קטן של קוד פתוח ובשלב מסויים נבלעה תחת פרוייקט TestStack המכיל פרוייטקים שונים של קוד פתוח לבדיקות ידניות ואוטומטיות.
ה-White תומכת במגוון טכנולוגיות לאוטומציה: Win32, WinForms, WPF, Silverlight ו-SWT בג'אווה, את הבדיקות עם White ניתן לכתוב בכל שפה שנתמכת ב-NET.
אהבתי :
ניתן לבצע אוטומציה על מגוון רחב של טכנולוגיות
תומך בכל שפות התכנות של NET. (כמו – C++ , C# , Python, Visual Basic, JavaScript ועוד…)
לא אהבתי :
דורש התקנת קדם של ספריית UI Automation Verify (לא כזה נורא, סתם מציק)
שורה תחתונה:
אחד המומלצים שלי, הופתעתי לטובה מה-API הפשוט והנרחב שלו
LDTP
אתר: https://ldtp.freedesktop.org/wiki
ה-LDTP הן ראשי תיבות של Linux Desktop Testing Project , אך אל תתנו לשם להטעות אתכם, אמנם הפרוייקט החל את דרכו במערכת לינוקס, אך כיום הוא כבר נתמך גם במחשבי MAC (גרסת PyATOM) וגם במערכות הפעלה Windows (גרסת Cobra). ה-LDTP מגיע עם Editor משל עצמו ובין השאר הכלי תומך גם בהקלטות.
אהבתי :
הספריה שלו מאוד עשירה אשר תומכת במטריצה הגדולה ביותר של סביבות \ שפות מבין כל הכלים הנסקרים פה
ניתן עם ה-LDTP לנטר אחר הביצועים של הזיכרון והמעבד בזמן בדיקות האפליקציה
לא אהבתי :
אין מספיק תיעוד. הרבה מעמודי הדוקומנטציה שלהם שבורים, כך שללמוד את ה-API הזה זו לא משימה פשוטה
שורה תחתונה:
כלי מדהים, רק שקשה ללמוד אותו
Sikuli
אתר: http://sikulix.com/
מבין כל הכלים הנסקרים כאן, Sikuli הוא היוצא דופן, למה ? כי הוא עובד על שיטת זיהוי אלמנטים לפי זיהוי תמונה, כאשר כל שאר הכלים ברשימה הזו מזהים את האלמנטים לפי המאפיינים שנכתבו להם בזמן הפיתוח (Object Properties). כמובן שישנם חסרונות ויתרונות לכאן ולכאן. זיהוי התמונה פועל ע"י מנוע להשוואת תמונות שיושב מאחורי הקלעים, המנוע יודע להשוות פיקסל לפיקסל ברמת ה-BitMap , בעבודה עם Sikuli עלינו תחילה ליצור Repository של תמונות (צילומי מסך מהאפליקציה) שהם יהוו את מקור ההשוואה (מה שנקרא – Expected Result) ללקבוע נקודות וריפיקציה אותם נפעיל בזמן ריצת התוכנית (Actual Result).
הכלי מגיע עם IDE משל עצמו הכולל גם שפת סקריפטים ייחודים וגם כ-API אליו ניתן להתממשק (ב-Java וב-#C).
עם Sikuli ניתן לבצע הן בדיקות ויזואליזציה והן בדיקות פונקציונליות.
אהבתי :
מכיוון שמדובר בטכניקת השוואת תמונות, הכלי אינו מתעניין ב-איך האפליקציה כתובה מאחורי הקלעים, הוא "יתפוס" כל דבר שנייצר לו, כך שבמקרה בדיקה אחד אוכל לבדוק גם טבלה ב-DB , גם חלון Windows , גם אפליקציית מובייל וגם Resposne מהסרבר , ללא מאמץ או הגדרות מיוחדות
לא אהבתי :
תחזוקה רבה של מאגר התמונות הקיים שלנו על כל שינוי במוצר
שורה תחתונה:
נשכיל להשתמש בכלי הזה בתנאים ספציפיים בלבד ובטח שלא בכל מחיר
pywinauto
אתר: https://github.com/pywinauto/pywinauto
ה-pyWinAuto היא ספריה בפיית'ון אשר חושפת בפנינו אוסף של פונקציונליות המטפלות בפעולות שניתן לבצע על חלונות Windows (כמו windows dialogs ו-controls), הספריה מציגה סט די גדול של פעולות והיא ברורה ונוחה לשימוש.
אהבתי :
מגיעה כספריה , כך שהיא אינה דורשת התקנה של כלי כזה או אחר
לאלו שכבר כותבים בפיית'ון, אופן ההטמעה של pyWinAuto יהיה קל ומהיר
לא אהבתי :
למי שלא מגיע מעלם הפיית'ון, מן הסתם, יצרטך להקים פרויקט חדש במערכת שלו שיטפל בבדיקות אלו.
שורה תחתונה:
ספריה עם המון יכולות מומלצת מאוד למי שכבר כותב בפיית'ון
Robot Class / Win.form Class
האחרונים ברשימה קצת שונים מכל השאר מכיוון שהם לא בדיוק כלים של בדיקות אלא מחלקות לסימלוץ פעולות של המקלדת והעכבר, כאשר ה-Robot Class ישמש אותנו במידה ונרצה לכתוב קוד ב-Java ואילו ה-Win.form כשנכתוב את הקוד שלנו ב-NET.
אהבתי :
פשוט מחלקה , לא יותר ולא פחות
לא אהבתי :
פשוט מחלקה , לא יותר ולא פחות
שורה תחתונה:
נשתמש במחלקות אלו למקרים פשוטים בלבד (כמו למשל בחירת תמונה מה-File System), אין כאן באמת עבודת QA עם מחלקות אלו