מסגרות אפיום לעומת הילידים: השוואה

מאת קורוס עליאבדי ורוחאן ג'נג'ואה

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

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

אפיום:

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

  1. ראשית, מדובר בשפה אגנוסטית, המגיעה עם תמיכה במגוון רחב של שפות פופולריות. אם לשפה שבחרת יש לקוח של מנהל רשת, אתה יכול להשתמש באפיום. זה נוגע ל- jsonWireProtocol המשותף. זה מאוד נוח שכן הוא מאפשר למפתחי בדיקות להרים את הכלי במהירות. השפות הנתמכות כוללות אך אינן מוגבלות ל- Java, C #, JavaScript, Python ואודם.
  2. זה פשוט מאוד להרים ולהתחיל איתו בקלות. בדומה לנקודה הקודמת, לאפיום הרבה קווי דמיון למנהל הרשת של סלניום. היתרון בכך הוא שאם מפתחי הבדיקות רגילים לכתוב בדיקות אינטרנט לנהג סלניום אז Appium צריך להיות פשוט יחסית לאיסוף ודי אינטואיטיבי.
  3. Appium מאפשר בדיקה של מספר פלטפורמות מאותו בסיס קוד מבחן. למי שעובד בצוות בדיקות ריכוזי או צוות שעובד גם ב- iOS וגם באנדרואיד, הוא יכול להפחית את כמות קוד לוח הדוד הנדרש לעבודה עם תשתיות הבדיקה והאמולטורים.
  4. בנוסף, מניסיונם של כמה מהנדסי הבדיקה שלנו, התמיכה באפליקציות מקוריות המשתמשות בתצוגות אינטרנט טובה יותר ב- Appium לעומת מרבית המתחרות האחרות. התמיכה שמספקת Appium יכולה להיות לא יסולא בפז כשמדובר באוטומציה של אפליקציות היברידיות.

ישנם גם כמה חסרונות בשימוש באפיום:

  1. מניסיוננו, מבחני אפיום פועלים לאט הרבה יותר מאשר מבחנים שנכתבו באחת מ- XCUITests או אספרסו
  2. קוד הבדיקה אינו חי עם קוד ה- dev. כעת זה עשוי להתווכח, אך אנו מרגישים כי קוד המבחן וקוד ה- dev צריכים לחיות קרוב זה לזה.
  3. לבדיקת אפליקציות חוצות פלטפורמות תמיד תהיה מידה מסוימת של מורכבות טכנית הכרוכה באפיום. עליכם:
  4. שמור על 2 סטים של PageObjects / ScreenObjects הדבקים בחוזה יחיד כך שניתן יהיה לקרוא להם מערך בדיקות אחד בלבד.
  5. כתוב 2 סטים של מבחנים
  6. ודא שמפתחים משתמשים באותו מזהה בשני היישומים

כלים ילידים:

לשתי הפלטפורמות העיקריות לפיתוח אפליקציות יש כיום כלי אוטומציה ממשק משתמש תחרותי משלהם: XCUITest ו- Espresso. הבשלות של שני הכלים הללו השתפרה באופן דרמטי ובשיחה שנערכה לאחרונה ב- WWDC 2017Apple הבהירו כי הם פעילים מאוד בעבודה על שיפור כלי האוטומציה של ממשק המשתמש.

  1. יש יתרון מהותי בשימוש ב- XCUITest ובאספרסו: הם נוצרים על ידי ספקי הפלטפורמה: אפל וגוגל. כלים אלה תמיד יקדימו את העקומה לבדיקת iOS ואנדרואיד. ברוב המקרים, כל תכונה חדשה מ- Appium תיבנה על גבי הפונקציונליות של הכלי המקורי הקיים.
  2. יתרון מרכזי נוסף בעינינו הוא שתכלול את קוד הבדיקה עם קוד המקור של הפרויקט שלך. זה אולי מוכן להתווכח מעט אך נדון בזה בפוסט עתידי. לעת עתה אנו רק נצהיר כי אנו מאמינים שלכלול קוד הבדיקה שלך באותו פרויקט ובאותה שפה שבה המפתחים שלך משתמשים יש יתרונות גדולים. זה נותן יותר תמריץ לשיתוף פעולה בתוך הצוות ומאפשר לכולם לתרום בקלות בהיבט זה של פיתוח תוכנה.
  3. לפעמים חוויית אנדרואיד אמורה להיות שונה מחוויית iOS, על ידי כתיבת המבחנים שלך לכל פלטפורמה אינך צריך לסבך את מסגרת הבדיקה שלך כדי להתמודד עם מצבים אלה.
  4. הרבה פחות קשקשים. כלים ילידים פשוט פחות קשוחים. זה אולי קשור למספר קטן יותר של חלקים נעים ופחות שכבות של תקשורת בין קוד הבדיקה למכשור, אך נראה כי מבחנים שנכתבו עם כלים מקוריים הם הרבה פחות קשוחים.
  5. אתה יכול להשתמש בערכת כלים גדולה בהרבה מאשר אם אתה משתמש בכלי כמו Appium. לדוגמה עם אנדרואיד יש לך גישה לספריית UiAutomator וגם לספריית אספרסו.

אספרסו:

כלי בדיקת האנדרואיד של גוגל, אספרסו, מכיל כמה תכונות נאות משלו ששווה להזכיר.

  1. אספרסו מהיר מאוד, מעולם לא ראינו משהו כל כך מהיר באוטומציה של ממשק המשתמש. זה כמו פלאש אוטומציה של ממשק המשתמש, אף כלי אחר לא מתקרב למהירות שלו.
  2. אינך צריך לדאוג לחכות לדברים שיקרה או להסתיים בקוד המבחן שלך, שכן אספרסו מטפל בזה עבורך, למעט מקרים חריגים. זה בעצם מוציא מהמשוואה את הדבר הכי שביר באוטומציה של ממשק המשתמש.
  3. אספרסו נוקטת בגישת 'קופסה אפורה'. לא ממש קופסה שחורה, לא ממש לבנה. עם אספרסו לבוחן יש שליטה רבה יותר ביישום מאשר בכלי קופסא שחורה כמו אפיום.
  4. אספרסו מאפשרת לבוחן להשתמש בכלים כמו Robolectric, מסגרת להפעלת ה- SDK אנדרואיד מבלי להפעיל סימולטור או לחבר מכשיר. משמעות הדבר היא שהבדיקות שלך מתחילות מהר יותר, וגם רצות מהר יותר.

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

ישנם גם כמה חסרונות בשימוש בכלי בדיקת הילידים:

  1. אם אתה מפתח אפליקציה חוצה פלטפורמות, אתה עלול לשמור על כפליים ממספר הבדיקות לעומת אם השתמשת בכלי כמו Appium.
  2. אם אתה מפתח אפליקציה חוצה פלטפורמות, תצטרך לדעת שתי שפות.
  3. מורכבות רבה יותר יכולה להיות מעורבת בגישה זו. זוהי תופעת לוואי של כוח וגישה מיותרים שכלי כמו אספרסו יכול לתת לבוחן. לדוגמא, אספרסו מחכה אוטומטית להשלמת האירועים ביישום שנבדק באמצעות IdlingResource. עם זאת, במקרים מסוימים הבוחן יצטרך ליישם את IdlingResource באופן ידני.
  4. בעזרת כלי כמו אספרסו, הבוחן יכול להכניס את היישום למצב שהוא אולי לא יוכל להגיע מנקודת מבטו של המשתמש. שוב, זה הצד השני של הכוח הנוסף שאתה מקבל.