موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

زما نوم دیمیتري دی، زه په شرکت کې د ټیسټر په توګه کار کوم MEL ساینس. په دې وروستیو کې ما د یو نسبتا وروستي فیچر سره معامله پای ته ورسوله د Firebase ټیسټ لابراتوار - د مثال په توګه، د اصلي ازموینې چوکاټ XCUITest په کارولو سره د iOS غوښتنلیکونو وسیله ازموینې سره.

له دې دمخه ، ما دمخه د Android لپاره د فایربیس ټیسټ لابراتوار هڅه کړې وه او واقعیا هرڅه خوښوم ، نو ما پریکړه وکړه چې هڅه وکړم د پروژې iOS ازموینې زیربنا په ورته مرحله کې واچوم. ما ګوګل ته ډیر څه درلودل او هرڅه د لومړي ځل لپاره کار نه کوي، نو ما پریکړه وکړه چې د هغو کسانو لپاره د ښوونې مقاله ولیکئ څوک چې لاهم مبارزه کوي.

نو، که تاسو په iOS پروژه کې د UI ازموینې لرئ، تاسو کولی شئ دا نن ورځ په ریښتیني وسیلو کې د چلولو هڅه وکړئ، په مهربانۍ سره د ښه کارپوریشن لخوا چمتو شوي. د لیوالتیا لپاره، بلی ته ښه راغلاست.

په کیسه کې، ما پریکړه وکړه چې په ځینو لومړنیو معلوماتو باندې جوړ کړم - په GitHub او د CircleCI جوړونې سیسټم کې شخصي ذخیره. د اپلیکیشن نوم AmazingApp دی، bundleID com.company.amazingapp دی. زه دا معلومات سمدلاسه وړاندې کوم چې د راتلونکي ګډوډي کمولو لپاره.

که تاسو په خپله پروژه کې ځینې حلونه په مختلف ډول پلي کړي، خپل تجربه په نظرونو کې شریک کړئ.

1. پخپله ازموینه

د UI ازموینې لپاره د پروژې نوې څانګه جوړه کړئ:

$ git checkout develop
$ git pull
$ git checkout -b “feature/add-ui-tests”

راځئ چې پروژه په ایکس کوډ کې پرانیزو او د UI ازموینو سره یو نوی هدف رامینځته کړو [XCode -> فایل -> نوی -> هدف -> iOS ټیسټینګ بنډل] ، دې ته د ځان توضیحي نوم AmazingAppUITests ورکړئ.

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

د رامینځته شوي هدف د جوړولو مرحلې برخې ته لاړشئ او د هدف انحصار شتون چیک کړئ - AmazingApp ، په تالیف سرچینو کې - AmazingAppUITests.swift.

یو ښه عمل دا دی چې مختلف جوړونې اختیارونه په جلا سکیمونو کې جلا کړئ. موږ زموږ د UI ازموینې [XCode -> محصول -> سکیم -> نوی سکیم] لپاره سکیم رامینځته کوو او ورته ورته نوم ورکوو: AmazingAppUITests.

د جوړ شوي سکیم په جوړولو کې باید د اصلي غوښتنلیک هدف شامل وي - AmazingApp او Target UI ازموینې - AmazingAppUITests - سکرین شاټ وګورئ

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

بیا ، موږ د UI ازموینو لپاره د نوي جوړونې ترتیب رامینځته کوو. په XCode کې، د پروژې فایل باندې کلیک وکړئ او د معلوماتو برخې ته لاړ شئ. په "+" کلیک وکړئ او یو نوی ترتیب جوړ کړئ، د مثال په توګه XCtest. موږ به په راتلونکي کې دې ته اړتیا ولرو ترڅو د تیمبورین سره د نڅا کولو څخه مخنیوی وشي کله چې د کوډ لاسلیک کولو خبره راځي.

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

ستاسو په پروژه کې لږترلږه درې هدفونه شتون لري: اصلي غوښتنلیک، د واحد ازموینې (په هرصورت، دوی شتون لري، سمه ده؟) او د هدف UI ازموینې چې موږ جوړ کړي.

د هدف امیزینګ ایپ ته لاړشئ ، د تنظیماتو ټب جوړ کړئ ، د کوډ لاسلیک پیژندنې برخه. د XCtest ترتیب لپاره، د iOS پراختیا کونکي غوره کړئ. د کوډ لاسلیک کولو سټایل برخه کې ، لارښود غوره کړئ. موږ تر اوسه د چمتو کولو پروفایل نه دی جوړ کړی، مګر موږ به حتما یو څه وروسته بیرته راستانه شو.

د هدف AmazingAppUITests لپاره موږ ورته کار کوو، مګر د محصول بنډل پیژندونکي کالم کې موږ com.company.amazingappuitest داخلوو.

2. د ایپل پراختیا کونکي پروګرام کې د پروژې ترتیب کول

د آپیل پراختیا کونکي برنامې پا pageې ته لاړشئ ، د سندونو ، پیژندونکو او پروفایل برخې ته لاړشئ او بیا د پیژندونکو توکي د اپل IDs کالم ته لاړشئ. د AmazingAppUITests او bundleID com.company.amazingappuitests په نوم یو نوی اپلیکیشن ID جوړ کړئ.

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

اوس موږ فرصت لرو چې خپلې ازموینې د جلا سند سره لاسلیک کړو، مګر ... د ازموینې لپاره د ودانۍ راټولولو پروسیجر کې پخپله د غوښتنلیک راټولول او د ټیسټ رنر راټولول شامل دي. په دې اساس، موږ د یوې چمتو کونکي پروفایل سره د دوه بنډل IDs لاسلیک کولو ستونزې سره مخ یو. خوشبختانه، یو ساده او ښکلی حل شتون لري - د وائلډ کارډ ایپ ID. موږ د نوي اپلیکیشن ID رامینځته کولو کړنلاره تکرار کوو ، مګر د واضح ایپ ID پرځای ، د وائلډ کارډ ایپ ID غوره کړئ لکه څنګه چې په سکرین شاټ کې دی.

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

پدې مرحله کې، موږ د developer.apple.com سره کار بشپړ کړی، مګر موږ به د براوزر کړکۍ کم نه کړو. ځه چې ځو د فاسټلین اسنادو سایټ او له پوښ ​​څخه تر پوښ پورې د میچ افادیت په اړه ولولئ.

یو پام لرونکی لوستونکی ولیدل چې د دې افادیت کارولو لپاره به موږ یو شخصي ذخیره او یو حساب ته اړتیا ولرو چې دواړه د ایپل پراختیا کونکي برنامې او ګیتوب ته لاسرسی ولري. موږ د فورمې حساب جوړوو (که ناڅاپه داسې څه نه وي). [ایمیل خوندي شوی]، د قوي پاسورډ سره راشئ ، دا د developer.apple.com سره راجستر کړئ ، او د پروژې مدیر په توګه یې وټاکئ. بیا ، موږ حساب ته ستاسو د شرکت ګیتوب ذخیره ته لاسرسی ورکوو او د AmazingAppMatch په څیر نوم سره نوی شخصي ذخیره رامینځته کوو.

3. د فاسټ لین او د میچ یوټیلیټ تنظیم کول

یو ټرمینل پرانیزئ، د پروژې سره فولډر ته لاړ شئ او د چټک لین پیل کړئ لکه څنګه چې اشاره شوې رسمي لارښود. کمانډ ته د ننوتلو وروسته

$ fastlane init

تاسو ته به د کارولو موجود ترتیبات غوره کولو ته وهڅول شي. څلورم انتخاب غوره کړئ - د لارښود پروژې تنظیم کول.

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

پروژه یو نوی ډایرکټر فاسټ لین لري، کوم چې دوه فایلونه لري - Appfile او Fastfile. په لنډه توګه، موږ په Appfile کې د خدماتو ډاټا ذخیره کوو، او په Fastfile کې دندې لیکو، چې د Fastlane په اصطلاح کې د لینونو په نوم یادیږي. زه د رسمي اسنادو لوستلو وړاندیز کوم: وختونه, два.

اپل فایل په خپل غوره متن ایډیټر کې خلاص کړئ او لاندې فارم ته یې راوړئ:

app_identifier "com.company.amazingapp"       # Bundle ID
apple_dev_portal_id "[email protected]"  # Созданный инфраструктурный аккаунт, имеющий право на редактирование iOS проекта в Apple Developer Program.
team_id "LSDY3IFJAY9" # Your Developer Portal Team ID

موږ ټرمینل ته راستون شو او د رسمي لارښود سره سم موږ د میچ تنظیم کول پیل کوو.

$ fastlane match init
$ fastlane match development

بیا، غوښتل شوي ډاټا داخل کړئ - ذخیره، حساب، پټنوم، او نور.

دا مهمه ده: کله چې تاسو لومړی د میچ یوټیلیټ لانچ کړئ ، نو تاسو څخه به وغوښتل شي چې د ذخیره کوډ کولو لپاره پټنوم دننه کړئ. د دې پټنوم خوندي کول خورا مهم دي؛ موږ به ورته اړتیا ولرو کله چې د CI سرور تنظیم کړئ!

یو نوی فایل د فاسټلین فولډر کې څرګند شوی - میچ فایل. دا په خپل غوره متن ایډیټر کې خلاص کړئ او دا یې په لاندې ډول ښکاره کړئ:

git_url("https://github.com/YourCompany/AmazingAppMatch") #Созданный приватный репозиторий для хранения сертификатов и профайлов.
type("development") # The default type, can be: appstore, adhoc, enterprise or development
app_identifier("com.company.amazingapp")
username("[email protected]") # Your Infrastructure account Apple Developer Portal username

موږ دا په سمه توګه په دې ډول ډکوو که موږ غواړو په راتلونکي کې میچ وکاروو ترڅو په کریشلیټیکس او/یا اپ سټور کې د ښودلو لپاره جوړونه لاسلیک کړي، دا ستاسو د غوښتنلیک بنډل ID لاسلیک کولو لپاره.

مګر، لکه څنګه چې موږ په یاد لرو، موږ د ازموینې جوړونې لاسلیک کولو لپاره یو ځانګړی وائلډ کارډ ID جوړ کړ. له همدې امله ، فاسټ فایل خلاص کړئ او نوی لین دننه کړئ:

lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"  # создаем отдельный бранч для development сертификата для подписи тестовой сборки.
    )

end

خوندي کړئ او ترمینل ته ننوځئ

fastlane testing_build_for_firebase

او موږ ګورو چې څنګه فاسټ لین یو نوی سند رامینځته کړی او په ذخیره کې یې واچوي. غوره!

ایکس کوډ خلاص کړئ. اوس موږ د Match Development com.company.* فارم لپاره اړین چمتو کولو پروفایل لرو، کوم چې باید د AmazingApp او AmazingAppUITests اهدافو لپاره د چمتو کولو پروفایل برخه کې مشخص شي.

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

دا د ازموینې راټولولو لپاره لین اضافه کولو لپاره پاتې دي. ځه چې ځو ذخیره د فاسټ لین لپاره د پلگ ان پروژه چې د فایربیس ټیسټ لابراتوار ته صادرات تنظیم کول اسانه کوي او لارښوونې تعقیبوي.

راځئ چې د اصلي مثال څخه کاپي پیسټ کړو ترڅو زموږ د لین ټیسټینګ_بلډ_فور_فایربیس پای ته ورسیږي:


 lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"
    )

    scan(
      scheme: 'AmazingAppUITests',      # UI Test scheme
      clean: true,                        # Recommended: This would ensure the build would not include unnecessary files
      skip_detect_devices: true,          # Required
      build_for_testing: true,            # Required
      sdk: 'iphoneos',                    # Required
      should_zip_build_products: true,     # Must be true to set the correct format for Firebase Test Lab
    )

    firebase_test_lab_ios_xctest(
      gcp_project: 'AmazingAppUITests', # Your Google Cloud project name (к этой строчке вернемся позже)
      devices: [                          # Device(s) to run tests on
        {
          ios_model_id: 'iphonex',        # Device model ID, see gcloud command above
          ios_version_id: '12.0',         # iOS version ID, see gcloud command above
          locale: 'en_US',                # Optional: default to en_US if not set
          orientation: 'portrait'         # Optional: default to portrait if not set
        }
      ]
    )

  end

په CircleCI کې د چټک لین تنظیم کولو په اړه د بشپړ معلوماتو لپاره، زه د رسمي اسنادو لوستلو وړاندیز کوم یوځل، два.

زموږ په config.yml کې نوې دنده اضافه کول مه هیروئ:

build-for-firebase-test-lab:
   macos:
     xcode: "10.1.0"   
   working_directory: ~/project
   shell: /bin/bash --login -o pipefail
   steps:
     - checkout
     - attach_workspace:
         at: ~/project
     - run: sudo bundle install     # обновляем зависимости
     - run:
         name: install gcloud-sdk   # на mac машину необходимо установить gcloud
         command: |
           ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null
           brew cask install google-cloud-sdk
     - run:
         name: build app for testing
         command: fastlane testing_build_for_firebase  # запускаем lane сборки и отправки в firebase

4. زموږ د ازموینې بنچ په اړه څه؟ د Firebase تنظیم کول.

راځئ چې لاندې راشو چې مقاله د څه لپاره لیکل شوې وه.

شاید ستاسو ایپ په وړیا پلان کې فایربیس کاروي ، یا شاید هیڅ نه وي. په بشپړ ډول هیڅ بنسټیز توپیر شتون نلري، ځکه چې د ازموینې اړتیاو لپاره موږ کولی شو د وړیا کارونې یو کال سره جلا پروژه جوړه کړو (ښه، سمه؟)

موږ خپل زیربنا حساب ته ننوتل (یا کوم بل، دا مهمه نده)، او لاړ شو د Firebase کنسول پاڼه. د AmazingAppUITests په نوم یوه نوې پروژه جوړه کړئ.

دا مهمه ده: په لین فائربیس_ټیسټ_lab_ios_xctest کې په فاسټ فایل کې په تیر مرحله کې د gcp_project پیرامیټر باید د پروژې نوم سره سمون ولري.

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

ډیفالټ تنظیمات موږ ته خورا ښه مناسب دي.

ټب مه بندوئ، د ورته حساب لاندې راجستر کړئ ګلوډ - دا یو اړین اقدام دی ، ځکه چې د فایربیس سره اړیکه د gcloud کنسول انٹرفیس په کارولو سره پیښیږي.

ګوګل د یو کال لپاره $ 300 ورکوي، کوم چې د اتوماتیک ازموینې ترسره کولو په شرایطو کې د خدماتو وړیا کارولو یو کال سره برابر دی. موږ ستاسو د تادیې معلومات داخلوو، د $1 ټیسټ ډیبټ ته انتظار کوو او ستاسو حساب ته $300 ترلاسه کوو. د یو کال وروسته، پروژه به په اتوماتيک ډول د وړیا تعرفې پالن ته لیږدول کیږي، نو د پیسو احتمالي ضایع کیدو په اړه اندیښنه ته اړتیا نشته.

راځئ چې د Firebase پروژې سره ټب ته راستون شو او د بلیز تعرفې پلان ته یې وسپارو - اوس موږ د تادیې لپاره یو څه لرو که چیرې د حد څخه تیریږي.

په gcloud انٹرفیس کې، زموږ د فایربیس پروژه غوره کړئ، د "ډارکټري" اصلي مینو توکي غوره کړئ او د کلاوډ ټیسټینګ API او د کلاوډ اوزار پایلې API اضافه کړئ.

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

بیا د مینو توکي ته لاړ شئ "IAM او اداره" -> د خدماتو حسابونه -> د خدماتو حساب جوړ کړئ. موږ د پروژې د ترمیم کولو حق ورکوو.

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

د JSON بڼه کې د API کیلي جوړ کړئ

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه

موږ به لږ وروسته ډاونلوډ شوي JSON ته اړتیا ولرو ، مګر د اوس لپاره به موږ د ټیسټ لابراتوار تنظیم بشپړ په پام کې ونیسو.

5. د CircleCI ترتیب کول

یو معقول پوښتنه راپورته کیږي - د پاسورډونو سره څه وکړي؟ زموږ د جوړولو ماشین د چاپیریال متغیر میکانیزم به موږ سره مرسته وکړي چې زموږ پاسورډونه او نور حساس معلومات خوندي وساتي. د CircleCI پروژې ترتیباتو کې، د چاپیریال تغیرات غوره کړئ

موږ د فایربیس ټیسټ لابراتوار کې وسیله ازموینې پرمخ وړو. برخه 1: iOS پروژه
او لاندې متغیرات تنظیم کړئ:

  • کلیدي: GOOGLE_APPLICATION_CREDENTIALS
    ارزښت: د gcloud خدمت حساب کیلي د json فایل مینځپانګه
  • کلیدي: MATCH_PASSWORD
    ارزښت: د سندونو سره د ګیتوب ذخیره کوډ کولو لپاره پټنوم
  • کلیدي: FASTLANE_PASSWORD
    ارزښت: د ایپل پراختیا کونکي پورټل زیربنا حساب پټنوم

موږ بدلونونه خوندي کوو، PR جوړوو او د بیاکتنې لپاره یې زموږ د ټیم مشرتابه ته لیږو.

پایلې

د دې ساده لاسوهنو په پایله کې، موږ د ازموینې په وخت کې د آلې په سکرین کې د ویډیو ثبتولو وړتیا سره یو ښه، باثباته کاري موقف ترلاسه کړ. د ازموینې مثال کې ، ما د آی فون ایکس وسیلې ماډل مشخص کړ ، مګر فارم د مختلف ماډلونو او iOS نسخو ترکیب څخه بډایه انتخاب چمتو کوي.

دویمه برخه به د Android پروژې لپاره د Firebase ټیسټ لابراتوار مرحله په مرحله ترتیب کولو ته وقف شي.

سرچینه: www.habr.com

Add a comment