AWS Device Farm: הגדרת בדיקות על מכשירים אמיתיים

בדיקות רגרסיה של אפליקציות מובייל על פני מכשירים רבים גוזלות זמן ומשאבים, ופארמות מכשירים מקומיות לא תמיד זמינות. אנו מגדירים את AWS Device Farm להרצת בדיקות על מכשירים אמיתיים בענן, ומשלבים אותו עם ה-CI/CD שלכם. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת והגדרה ועד תמיכה—ומבטיח פתרון אמין וסקלבילי.

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
AWS Device Farm: הגדרת בדיקות על מכשירים אמיתיים
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    868
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1288
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

בדיקות רגרסיה של אפליקציית מובייל על עשרה מכשירים הן כאב ראש ללא חוות מכשירי ענן. יצרנים שונים, גרסאות מערכת הפעלה, רזולוציות מסך — כל בדיקה חייבת להתבצע מקומית או על מכשירים פיזיים במשרד. AWS Device Farm פותר זאת באמצעות מערכת האקוסיסטם של AWS: אותם תפקידי IAM, CLI, ומדיניות גישה. הניסיון שלנו מראה ש-80% מהבעיות בהשקה ראשונה נובעות מאריזה לא נכונה של הבדיקות או מתצורת מאגר מכשירים שגויה. מאמר זה יעזור לכם להימנע מטעויות אלה. הגדרנו את Device Farm עבור יותר מ-30 פרויקטים, וההפחתה הממוצעת בזמן בדיקות הרגרסיה הייתה 70% — מה שאיפשר ללקוחות להפסיק לקנות מכשירים פיזיים ולהתמקד באיכות הקוד.

כיצד להגדיר בדיקות ב-AWS Device Farm?

למה AWS Device Farm במקום BrowserStack או Sauce Labs?

אם הפרויקט שלכם כבר על AWS (CodePipeline, CodeBuild, S3), Device Farm משתלב בצורה חלקה: אין צורך בהתחברות נפרדת, חיוב דרך AWS, ומדיניות IAM מרכזית. עבור חברות עם דרישות שהות נתונים, זה יתרון — המכשירים נמצאים באותם אזורים כמו שאר התשתית. Device Farm תומך ב-APK/IPA ובבדיקות Instrumentation (Espresso) ללא שכבות נוספות. בהשוואה ל-BrowserStack, Device Farm נותן יותר שליטה על מאגר המכשירים, אם כי הממשק פחות אינטואיטיבי.

מה כלול בהגדרה?

רכיב תיאור
פרויקט ותפקידי IAM יצירת פרויקט, הרשאות מינימליות
מאגר מכשירים סינון לפי פלטפורמה, גרסת מערכת הפעלה, יצרן
אריזת בדיקות דוגמאות עבור Appium, Espresso, XCUITest
אינטגרציית CI/CD CodePipeline, GitHub Actions, GitLab CI
דוחות והתראות Slack, Telegram, S3
תיעוד הוראות לצוות שלכם, סקריפטים

סוגי בדיקות: השוואה

סוג מהירות תמיכה מורכבות אריזה
Appium בינונית Android, iOS בינונית (תלויות ב-ZIP)
Espresso גבוהה Android (4.3+) נמוכה (APK סטנדרטי)
XCUITest גבוהה iOS (9.0+) בינונית (xcodebuild)

כיצד לארוז בדיקות Appium עבור Device Farm?

אריזת בדיקות Appium היא גורם שכיח לכשלים. Device Farm דורש ZIP עם package.json, node_modules, ובדיקות. מבנה עבור WebdriverIO:

tests.zip/ ├── package.json ├── package-lock.json ├── node_modules/ └── test/ └── specs/ └── login.test.js 

תצורת WebdriverIO:

// wdio.conf.devicefarm.js
exports.config = {
  runner: 'local',
  specs: ['./test/specs/**/*.js'],
  capabilities: [{
    platformName: process.env.DEVICEFARM_DEVICE_PLATFORM_NAME,
    'appium:deviceName': process.env.DEVICEFARM_DEVICE_NAME,
    'appium:platformVersion': process.env.DEVICEFARM_DEVICE_OS_VERSION,
    'appium:app': process.env.DEVICEFARM_APP_PATH,
    'appium:automationName': process.env.DEVICEFARM_DEVICE_PLATFORM_NAME === 'iOS' ? 'XCUITest' : 'UiAutomator2',
  }],
  hostname: 'localhost',
  port: 4723,
};

Device Farm מפעיל את שרת ה-Appium אוטומטית; משתנים מועברים אוטומטית.

בדיקות Native: Espresso ו-XCUITest

Espresso רץ מהר יותר מ-Appium מכיוון שהוא פועל באותו תהליך כמו האפליקציה. העלו APK ו-APK לבדיקות דרך AWS CLI:

PROJECT_ARN=$(aws devicefarm create-project --name "MyApp" --query 'project.arn' --output text)
APP_UPLOAD=$(aws devicefarm create-upload --project-arn $PROJECT_ARN --name "app-debug.apk" --type ANDROID_APP --query 'upload.{arn:arn,url:url}' --output json)
APP_URL=$(echo $APP_UPLOAD | jq -r '.url')
APP_ARN=$(echo $APP_UPLOAD | jq -r '.arn')
curl -T app/build/outputs/apk/debug/app-debug.apk "$APP_URL"
TEST_UPLOAD=$(aws devicefarm create-upload --project-arn $PROJECT_ARN --name "app-debug-androidTest.apk" --type INSTRUMENTATION_TEST_PACKAGE --query 'upload.{arn:arn,url:url}' --output json)
TEST_ARN=$(echo $TEST_UPLOAD | jq -r '.arn')
curl -T app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk "$(echo $TEST_UPLOAD | jq -r '.url')"
aws devicefarm schedule-run --project-arn $PROJECT_ARN --app-arn $APP_ARN --device-pool-arn $POOL_ARN --name "Espresso Run" --test type=INSTRUMENTATION,testPackageArn=$TEST_ARN,filter="com.example.LoginTest"

עבור iOS, השתמשו ב-XCUITest; ארוזו דרך xcodebuild.

מדריך שלב-אחר-שלב להגדרת Device Farm

  1. צרו פרויקט Device Farm והגדירו תפקידי IAM עם הרשאות מינימליות (devicefarm:* על הפרויקט).
  2. בנו מאגר מכשירים: בחרו פלטפורמה, גרסאות מערכת הפעלה, יצרנים, וסננו לפי AVAILABILITY: HIGHLY_AVAILABLE כדי להימנע מתורים.
  3. העלו את האפליקציה (APK/IPA) וחבילת הבדיקות דרך AWS CLI או הקונסולה. ודאו שהבדיקות ארוזות כראוי (ZIP עם תלויות).
  4. התחילו ריצת בדיקה, ובחרו את המאגר וסוג הבדיקה (Appium, Espresso, XCUITest).
  5. הגדירו אינטגרציית CI/CD (CodePipeline, GitHub Actions) והתראות (Slack, Telegram).

אינטגרציה עם CI/CD

הוסיפו שלב ב-buildspec.yml עבור CodePipeline:

---
phases:
  build:
    commands:
      - ./gradlew assembleDebug assembleAndroidTest
      - APP_ARN=$(aws devicefarm create-upload --project-arn $DEVICE_FARM_PROJECT_ARN --name "app.apk" --type ANDROID_APP --query 'upload.arn' --output text)
      # ... загрузка и запуск
      - aws devicefarm get-run --arn $RUN_ARN --query 'run.result'

תפקיד ה-IAM של CodeBuild חייב לכלול הרשאות devicefarm:* על הפרויקט.

למה בדיקות נכשלות בריצה הראשונה?

שגיאות נפוצות:

  • אריזת בדיקות Appium לא נכונה — ZIP ללא node_modules.
  • מאגר מכשירים ללא מסנן AVAILABILITY: HIGHLY_AVAILABLE — תורים של שעה.
  • משתני סביבה שגויים — Device Farm מעביר את DEVICEFARM_DEVICE_PLATFORM_NAME ואחרים.
  • חוסר הרשאות כתיבה ל-S3 עבור ארטיפקטים.

התיעוד הרשמי של AWS ממליץ להשתמש במאגרים זמינים מאוד כדי למזער זמני המתנה.

ניתוח תוצאות

ארטיפקטים נגישים דרך API:

aws devicefarm list-artifacts --arn $JOB_ARN --type FILE --query 'artifacts[*].{name:name,url:url}' --output table 

ארטיפקטים טיפוסיים: Logcat, צילומי מסך, וידאו, פלט מפרט בדיקה. המהנדסים שלנו הגדירו משלוח דוחות אוטומטי ל-Slack או Telegram.

מקרה בוחן: כיצד הגדרת Device Farm חסכה 40 שעות בחודש

לקוח אחד — סטארטאפ פינטק עם אפליקציית Android שנבדקה על 20 מכשירים מקומית. כל ריצת רגרסיה לקחה 8 שעות של עבודה ידנית. לאחר הגדרת Device Farm עם אינטגרציית GitLab CI, הזמן ירד ל-1.5 שעות באוטומציה מלאה. הגדרנו מאגר של 10 מכשירים מקבילים, חיברנו התראות Slack, וייאבנו דוחות ל-S3. העלות של חוות מכשירי הענן התבררה כנמוכה יותר מאשר תחזוקת צי מכשירים פנימי.

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

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

לפרטים נוספים על Device Farm, ראו את התיעוד הרשמי של AWS.