අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

මගේ නම දිමිත්‍රි, මම සමාගමේ පරීක්ෂකයෙකු ලෙස සේවය කරමි MEL විද්‍යාව. ඉතා මෑතකදී මම සාපේක්ෂව මෑත විශේෂාංගයක් සමඟ කටයුතු කර අවසන් කළෙමි Firebase Test Lab — එනම්, දේශීය පරීක්ෂණ රාමුව XCUITest භාවිතා කරමින් iOS යෙදුම්වල උපකරණ පරීක්ෂණ සමඟ.

මෙයට පෙර, මම දැනටමත් ඇන්ඩ්‍රොයිඩ් සඳහා Firebase Test Lab උත්සාහ කර ඇති අතර සෑම දෙයකටම ඇත්තෙන්ම කැමතියි, එබැවින් ව්‍යාපෘතියේ iOS පරීක්ෂණ යටිතල ව්‍යුහය එකම පදනමක තැබීමට මම තීරණය කළෙමි. මට ගොඩක් Google කරන්න සිද්ධ වුණා, පළවෙනි වතාවට හැම දෙයක්ම සාර්ථක වුණේ නැහැ, ඒ නිසා මම තවමත් අරගල කරන අය සඳහා නිබන්ධන ලිපියක් ලියන්න තීරණය කළා.

එබැවින්, ඔබට iOS ව්‍යාපෘතියක් මත UI පරීක්ෂණ තිබේ නම්, ඔබට ඒවා දැනටමත් Good Corporation විසින් සපයන ලද සැබෑ උපාංගවල ධාවනය කිරීමට උත්සාහ කළ හැක. උනන්දුවක් දක්වන අය සඳහා, cat වෙත සාදරයෙන් පිළිගනිමු.

කතාවේදී, මම මූලික දත්ත කිහිපයක් මත ගොඩනැගීමට තීරණය කළෙමි - GitHub මත පුද්ගලික ගබඩාවක් සහ CircleCI ගොඩනැගීමේ පද්ධතිය. යෙදුමේ නම AmazingApp, bundleID යනු com.company.amazingapp වේ. පසුකාලීන ව්යාකූලත්වය අවම කිරීම සඳහා මම මෙම දත්ත වහාම ඉදිරිපත් කරමි.

ඔබ ඔබේ ව්‍යාපෘතියේ යම් යම් විසඳුම් වෙනස් ආකාරයකින් ක්‍රියාත්මක කළේ නම්, අදහස් දැක්වීමේදී ඔබේ අත්දැකීම් බෙදා ගන්න.

1. පරීක්ෂණ තමා

UI පරීක්ෂණ සඳහා නව ව්‍යාපෘති ශාඛාවක් සාදන්න:

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

අපි ව්‍යාපෘතිය XCode තුළ විවෘත කර UI පරීක්ෂණ සමඟින් නව ඉලක්කයක් නිර්මාණය කරමු [XCode -> File -> New -> Target -> iOS Testing Bundle], එයට ස්වයං පැහැදිලි කිරීමේ නම AmazingAppUITests ලබාදෙමු.

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

සාදන ලද ඉලක්කයේ Build Phases කොටස වෙත ගොස්, Compile Sources - AmazingAppUITests.swift හි Target Dependencies - AmazingApp තිබේදැයි පරීක්ෂා කරන්න.

හොඳ භාවිතයක් වන්නේ විවිධ ගොඩනැගීමේ විකල්ප වෙනම යෝජනා ක්‍රමවලට වෙන් කිරීමයි. අපි අපගේ UI පරීක්ෂණ සඳහා [XCode -> නිෂ්පාදනය -> යෝජනා ක්‍රමය -> නව යෝජනා ක්‍රමය] සඳහා යෝජනා ක්‍රමයක් සාදා එයට එකම නමක් දෙමු: AmazingAppUITests.

සාදන ලද යෝජනා ක්‍රමය ගොඩනැගීමට ප්‍රධාන යෙදුමේ ඉලක්කය ඇතුළත් විය යුතුය - AmazingApp සහ Target UI පරීක්ෂණ - AmazingAppUITests - තිර රුව බලන්න

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

ඊළඟට, අපි UI පරීක්ෂණ සඳහා නව ගොඩනැගීමේ වින්‍යාසයක් සාදන්නෙමු. XCode හි, ව්‍යාපෘති ගොනුව මත ක්ලික් කර තොරතුරු අංශයට යන්න. "+" මත ක්ලික් කර නව වින්‍යාසයක් සාදන්න, උදාහරණයක් ලෙස XCtest. කේත අත්සන් කිරීමේදී රබන් සමඟ නැටීමෙන් වැළකී සිටීම සඳහා අපට අනාගතයේදී මෙය අවශ්‍ය වනු ඇත.

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

ඔබගේ ව්‍යාපෘතියේ අවම වශයෙන් ඉලක්ක තුනක් තිබේ: ප්‍රධාන යෙදුම, ඒකක පරීක්ෂණ (සියල්ලටම පසුව, ඒවා පවතී, හරිද?) සහ අප විසින් නිර්මාණය කරන ලද ඉලක්ක UI පරීක්ෂණ.

Target AmazingApp, Build Settings tab, Code Signing Identity කොටස වෙත යන්න. XCtest වින්‍යාසය සඳහා, iOS සංවර්ධකයා තෝරන්න. Code Signing Style කොටසේ, Manual තෝරන්න. අපි තවම ප්‍රතිපාදන පැතිකඩක් ජනනය කර නැත, නමුත් අපි අනිවාර්යයෙන්ම මඳ වේලාවකට පසුව එය වෙත ආපසු යන්නෙමු.

Target AmazingAppUITests සඳහා අපි එයම කරන්නෙමු, නමුත් නිෂ්පාදන බණ්ඩල් හඳුනාගැනීමේ තීරුවේ අපි com.company.amazingappuitests ඇතුළු කරන්නෙමු.

2. Apple Developer වැඩසටහනේ ව්‍යාපෘතියක් සැකසීම

Apple Developer Program පිටුවට ගොස්, Certificates, Identifiers & Profiles කොටසට ගොස්, Identifiers අයිතමයේ App IDs තීරුවට යන්න. AmazingAppUITests සහ bundleID com.company.amazingappuitests නමින් නව යෙදුම් හැඳුනුම්පතක් සාදන්න.

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

දැන් අපට අපගේ පරීක්ෂණ සඳහා වෙනම සහතිකයක් සමඟ අත්සන් කිරීමට අවස්ථාව තිබේ, නමුත් ... පරීක්ෂණ සඳහා ගොඩනැගීමක් එකලස් කිරීමේ ක්‍රියා පටිපාටිය යෙදුමම එකලස් කිරීම සහ පරීක්ෂණ ධාවකය එකලස් කිරීම ඇතුළත් වේ. ඒ අනුව, එක් ප්‍රතිපාදන පැතිකඩක් සමඟ බණ්ඩල් හැඳුනුම්පත් දෙකක් අත්සන් කිරීමේ ගැටලුවට අපි මුහුණ දී සිටිමු. වාසනාවකට මෙන්, සරල හා අලංකාර විසඳුමක් ඇත - Wildcard App ID. අපි නව යෙදුම් හැඳුනුම්පතක් සෑදීමේ ක්‍රියා පටිපාටිය නැවත කරන්නෙමු, නමුත් පැහැදිලි යෙදුම් හැඳුනුම්පත වෙනුවට, තිර රුවෙහි මෙන් Wildcard යෙදුම් ID තෝරන්න.

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

මෙම අවස්ථාවේදී, අපි developer.apple.com සමඟ වැඩ කර අවසන්, නමුත් අපි බ්‍රවුසර කවුළුව අවම නොකරමු. අපි යමු Fastlane ලේඛන අඩවිය සහ Match utility ගැන කවරයේ සිට ආවරණය දක්වා කියවන්න.

මෙම උපයෝගීතාව භාවිතා කිරීම සඳහා අපට පුද්ගලික ගබඩාවක් සහ Apple Developer Program සහ Github යන දෙකටම ප්‍රවේශය සහිත ගිණුමක් අවශ්‍ය බව අවධානයෙන් සිටින පාඨකයෙකු දුටුවේය. අපි පෝරමයේ ගිණුමක් සාදන්නෙමු (හදිසියේම එවැනි දෙයක් නොමැති නම්). [විද්‍යුත් ආරක්‍ෂිත], ශක්තිමත් මුරපදයක් සමඟ පැමිණ, එය developer.apple.com සමඟ ලියාපදිංචි කර, එය ව්‍යාපෘති පරිපාලකයෙකු ලෙස පත් කරන්න. මීළඟට, අපි ගිණුමට ඔබේ සමාගමේ github ගබඩාවට ප්‍රවේශය ලබා දෙන අතර AmazingAppMatch වැනි නමකින් නව පුද්ගලික ගබඩාවක් සාදන්නෙමු.

3. Fastlane සහ match utility පිහිටුවීම

ටර්මිනලයක් විවෘත කරන්න, ව්‍යාපෘතිය සහිත ෆෝල්ඩරය වෙත ගොස් එහි දක්වා ඇති පරිදි ෆාස්ට්ලේන් ආරම්භ කරන්න නිල අත්පොත. විධානය ඇතුල් කිරීමෙන් පසු

$ fastlane init

පවතින භාවිත වින්‍යාසයන් තේරීමට ඔබෙන් විමසනු ඇත. හතරවන විකල්පය තෝරන්න - අතින් ව්යාපෘති සැකසුම.

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

ව්‍යාපෘතියට නව නාමාවලියක් ඇත, එහි ගොනු දෙකක් අඩංගු වේ - Appfile සහ Fastfile. කෙටියෙන් කිවහොත්, අපි සේවා දත්ත Appfile තුළ ගබඩා කර, Fastlane පාරිභාෂිතයේ මංතීරු ලෙස හඳුන්වන Fastfile හි රැකියා ලියන්නෙමු. නිල ලියකියවිලි කියවීමට මම නිර්දේශ කරමි: වාරයක්, два.

ඔබගේ ප්‍රියතම පෙළ සංස්කාරකයේ Appfile විවෘත කර එය පහත පෝරමයට ගෙන එන්න:

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 සේවාදායකය සැකසීමේදී අපට එය අවශ්ය වනු ඇත!

නව ගොනුවක් fastlane ෆෝල්ඩරයේ දර්ශනය වී ඇත - Matchfile. එය ඔබගේ ප්‍රියතම පෙළ සංස්කාරකයේ විවෘත කර මේ ආකාරයට පෙන්වන්න:

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

Crashlytics සහ/හෝ AppStore තුළ ප්‍රදර්ශනය කිරීම සඳහා ගොඩනැගීම් අත්සන් කිරීමට, එනම්, ඔබේ යෙදුමේ මිටි හැඳුනුම්පත අත්සන් කිරීමට අපට අනාගතයේදී තරගය භාවිත කිරීමට අවශ්‍ය නම් අපි එය හරියටම මේ ආකාරයෙන් පුරවන්නෙමු.

නමුත්, අපට මතක ඇති පරිදි, අපි පරීක්ෂණ ගොඩනැගීමට අත්සන් කිරීමට විශේෂ Wildcard ID එකක් නිර්මාණය කළා. එබැවින්, Fastfile විවෘත කර නව මංතීරුවක් ඇතුළු කරන්න:

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

සහ අපි බලමු fastlane අලුත් සහතිකයක් හදලා repository එකට දාපු හැටි. මහා!

XCode විවෘත කරන්න. දැන් අපට Match Development com.company.* පෝරමයේ අවශ්‍ය ප්‍රතිපාදන පැතිකඩ ඇත. එය AmazingApp සහ AmazingAppUITests ඉලක්ක සඳහා ප්‍රතිපාදන පැතිකඩ කොටසේ සඳහන් කළ යුතුය.

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

පරීක්ෂණ එකලස් කිරීම සඳහා මංතීරු එකතු කිරීමට ඉතිරිව ඇත. අපි යමු ගබඩාව Fastlane සඳහා ප්ලගින ව්‍යාපෘතියක් Firebase Test Lab වෙත අපනයනය සැකසීමට පහසු කරවන අතර උපදෙස් අනුගමනය කරන්න.

අපි මුල් උදාහරණයෙන් copy-paste කරමු එවිට අපගේ lane testing_build_for_firebase අවසන් වන්නේ මෙලෙසය:


 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 භාවිතා කරයි, නැතහොත් සමහර විට කිසිසේත්ම නොවේ. මූලික වෙනසක් නොමැත, මන්ද පරීක්ෂණ අවශ්‍යතා සඳහා අපට වසරක නොමිලේ භාවිතයක් සහිත වෙනම ව්‍යාපෘතියක් නිර්මාණය කළ හැකිය (සිසිල්, හරිද?)

අපි අපගේ යටිතල පහසුකම් ගිණුමට ලොග් වී (හෝ වෙනත් ඕනෑම, එය කමක් නැත), සහ වෙත යන්න Firebase කොන්සෝල පිටුව. AmazingAppUITests නමින් නව ව්‍යාපෘතියක් සාදන්න.

එය වැදගත් වේ: Fastfile in lane firebase_test_lab_ios_xctest හි පෙර පියවරේදී gcp_project පරාමිතිය ව්‍යාපෘති නාමයට ගැළපිය යුතුය.

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

පෙරනිමි සැකසුම් අපට හොඳින් ගැලපේ.

ටැබ් එක වසා නොගන්න, එකම ගිණුම යටතේ ලියාපදිංචි වන්න GCloud - මෙය අවශ්‍ය පියවරකි, මන්ද ෆයර්බේස් සමඟ සන්නිවේදනය සිදුවන්නේ gCloud කොන්සෝල අතුරුමුහුණත භාවිතා කරමිනි.

ගූගල් විසින් වසරකට ඩොලර් 300 ක් ලබා දෙයි, ස්වයංක්‍රීය පරීක්ෂණ සිදු කිරීමේ සන්දර්භය තුළ එය සේවාව නොමිලේ භාවිතා කිරීමේ වසරකට සමාන වේ. අපි ඔබගේ ගෙවීම් තොරතුරු ඇතුලත් කර, $1ක පරීක්ෂණ හර කිරීම සඳහා රැඳී සිට ඔබගේ ගිණුමට $300 ලබා ගනිමු. වසරකට පසු, ව්‍යාපෘතිය ස්වයංක්‍රීයව නොමිලේ ගාස්තු සැලැස්මකට මාරු කරනු ලැබේ, එබැවින් මුදල් අලාභයක් ගැන කරදර විය යුතු නැත.

අපි Firebase ව්‍යාපෘතිය සමඟ පටිත්ත වෙත ආපසු ගොස් එය Blaze ගාස්තු සැලැස්මට මාරු කරමු - දැන් අපට සීමාව ඉක්මවා ගියහොත් ගෙවීමට යමක් තිබේ.

gCloud අතුරුමුහුණත තුළ, අපගේ Firebase ව්‍යාපෘතිය තෝරන්න, "Directory" ප්‍රධාන මෙනු අයිතමය තෝරන්න සහ Cloud Testing API සහ Cloud Tools Result API එක් කරන්න.

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

ඉන්පසු මෙනු අයිතමය "IAM සහ පරිපාලනය" වෙත යන්න -> සේවා ගිණුම් -> සේවා ගිණුම සාදන්න. අපි ව්‍යාපෘතිය සංස්කරණය කිරීමට අයිතිය ලබා දෙන්නෙමු.

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

JSON ආකෘතියෙන් API යතුරක් සාදන්න

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය

අපට බාගත කළ JSON ටික වේලාවකට පසුව අවශ්‍ය වනු ඇත, නමුත් දැනට අපි Test Lab සැකසුම සම්පූර්ණ ලෙස සලකමු.

5. CircleCI පිහිටුවීම

සාධාරණ ප්රශ්නයක් පැන නගී - මුරපද සමඟ කළ යුත්තේ කුමක්ද? අපගේ ගොඩනැගීමේ යන්ත්‍රයේ පරිසර විචල්‍ය යාන්ත්‍රණය අපගේ මුරපද සහ අනෙකුත් සංවේදී දත්ත ආරක්ෂිතව ගබඩා කිරීමට උපකාරී වේ. CircleCI ව්‍යාපෘති සැකසුම් තුළ, පරිසර විචල්‍ය තෝරන්න

අපි Firebase Test Lab හි උපකරණ පරීක්ෂණ පවත්වමු. 1 කොටස: iOS ව්‍යාපෘතිය
සහ පහත විචල්‍යයන් සකසන්න:

  • යතුර: GOOGLE_APPLICATION_CREDENTIALS
    අගය: gCloud සේවා ගිණුම් යතුරේ json ගොනුවේ අන්තර්ගතය
  • යතුර: MATCH_PASSWORD
    අගය: සහතික සහිත github ගබඩාව විකේතනය කිරීම සඳහා මුරපදය
  • යතුර: FASTLANE_PASSWORD
    අගය: Apple Developer Portal යටිතල පහසුකම් ගිණුම් මුරපදය

අපි වෙනස්කම් සුරකිමු, PR එකක් සාදා එය සමාලෝචනය සඳහා අපගේ කණ්ඩායම් නායකයා වෙත යවන්නෙමු.

ප්රතිඵල

මෙම සරල උපාමාරුවල ප්‍රතිඵලයක් ලෙස, පරීක්‍ෂා කරන අවස්ථාවේදී උපාංග තිරයේ වීඩියෝ පටිගත කිරීමේ හැකියාව සහිත හොඳ ස්ථාවර වැඩ ස්ථාවරයක් අපට ලැබුණි. පරීක්ෂණ උදාහරණයේ දී, මම iPhone X උපාංග ආකෘතිය සඳහන් කළ නමුත්, ගොවිපල විවිධ මාදිලියේ සහ iOS අනුවාදවල එකතුවකින් පොහොසත් තේරීමක් සපයයි.

දෙවන කොටස ඇන්ඩ්‍රොයිඩ් ව්‍යාපෘතියක් සඳහා Firebase Test Lab හි පියවරෙන් පියවර සැකසීමට කැප කෙරේ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න