በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

ዲሚትሪ እባላለሁ, በኩባንያው ውስጥ እንደ ሞካሪ እሰራለሁ MEL ሳይንስ. በአንጻራዊ ሁኔታ በቅርብ ጊዜ ከሚታየው ባህሪ ጋር በቅርቡ መነጋገርን ጨርሻለሁ። Firebase ሙከራ ቤተ ሙከራ - ማለትም፣ ቤተኛ የፍተሻ ማዕቀፍ XCUITestን በመጠቀም የiOS መተግበሪያዎችን በመሳሪያ ሙከራ።

ከዚህ በፊት እኔ አስቀድሞ የFirebase Test Lab ለ 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”

ፕሮጀክቱን በXCode ውስጥ እንክፈተው እና አዲስ ኢላማ በ UI ሙከራዎች [XCode -> File -> New -> Target -> iOS Testing Bundle] እንፍጠር፣ ይህም እራሱን የሚያብራራ AmazingAppUITests ነው።

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

ወደ ተፈጠረ ኢላማ የግንባታ ደረጃዎች ክፍል ይሂዱ እና የዒላማ ጥገኛዎች - AmazingApp፣ በማጠናቀር ምንጮች ውስጥ - AmazingAppUITests.swift መኖሩን ያረጋግጡ።

ጥሩ ልምምድ የተለያዩ የግንባታ አማራጮችን ወደ ተለየ መርሃግብሮች መለየት ነው. ለዩአይ ፈተናዎቻችን [XCode -> ምርት -> እቅድ -> አዲስ እቅድ] እቅድ ፈጥረን ተመሳሳይ ስም እንሰጠዋለን፡ AmazingAppUITests።

የተፈጠረው እቅድ መገንባት የዋናውን መተግበሪያ ኢላማ ማካተት አለበት - AmazingApp እና Target UI ሙከራዎች - AmazingAppUITests - ቅጽበታዊ ገጽ እይታን ይመልከቱ

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

በመቀጠል ለUI ሙከራዎች አዲስ የግንባታ ውቅር እንፈጥራለን። በ XCode ውስጥ የፕሮጀክት ፋይልን ጠቅ ያድርጉ እና ወደ መረጃ ክፍል ይሂዱ. “+” ላይ ጠቅ ያድርጉ እና አዲስ ውቅር ይፍጠሩ ለምሳሌ XCtest። በኮድ ፊርማ ጊዜ በከበሮ መጨፈርን ለማስቀረት ወደፊት ይህ ያስፈልገናል።

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

በፕሮጀክትዎ ውስጥ ቢያንስ ሦስት ኢላማዎች አሉ፡ ዋናው መተግበሪያ፣ የክፍል ሙከራዎች (ከሁሉም በኋላ፣ እነሱ አሉ፣ ትክክል?) እና እኛ የፈጠርናቸው የዒላማ UI ሙከራዎች።

ወደ Target AmazingApp፣ Build Settings ትር፣ የኮድ ፊርማ ማንነት ክፍል ይሂዱ። ለXCtest ውቅር፣ የiOS ገንቢን ይምረጡ። በኮድ ፊርማ ስታይል ክፍል ውስጥ ማንዋልን ይምረጡ። እስካሁን ፕሮፋይል አልፈጠርንም፣ ግን በእርግጠኝነት ትንሽ ቆይተን እንመለስበታለን።

ለዒላማ AmazingAppUITests ተመሳሳይ ነገር እናደርጋለን፣ ግን በምርት ቅርቅብ መለያ አምድ ውስጥ com.company.amazingappuitests ን እናስገባለን።

2. በአፕል ገንቢ ፕሮግራም ውስጥ ፕሮጀክት ማዘጋጀት

ወደ አፕል ገንቢ ፕሮግራም ገጽ ይሂዱ፣ ወደ ሰርተፊኬቶች፣ መለያዎች እና መገለጫዎች ክፍል እና ከዚያ ወደ መለያዎች ንጥል የመተግበሪያ መታወቂያዎች አምድ ይሂዱ። AmazingAppUITests እና bundleID com.company.amazingappuitests የሚባል አዲስ የመተግበሪያ መታወቂያ ይፍጠሩ።

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

አሁን ፈተናዎቻችንን በተለየ የምስክር ወረቀት ለመፈረም እድሉን አግኝተናል, ነገር ግን ... ለሙከራ ግንባታ የመገጣጠም ሂደት አፕሊኬሽኑን እራሱ ማቀናጀት እና የፈተና ሯጭ መሰብሰብን ያካትታል. በዚህም መሰረት ሁለት የጥቅል መታወቂያዎችን በአንድ ፕሮፋይል የመፈረም ችግር ገጥሞናል። እንደ እድል ሆኖ, ቀላል እና የሚያምር መፍትሄ አለ - Wildcard መተግበሪያ መታወቂያ. አዲስ የመተግበሪያ መታወቂያ ለመፍጠር ሂደቱን ደግመን እንሰራለን, ነገር ግን ግልጽ በሆነ የመተግበሪያ መታወቂያ ፈንታ, በቅጽበታዊ ገጽ እይታ ውስጥ እንደ Wildcard መተግበሪያ መታወቂያን ይምረጡ.

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

በዚህ ጊዜ ከ developer.apple.com ጋር መስራት ጨርሰናል ነገርግን የአሳሽ መስኮቱን አናሳንስም። እንሂድ ወደ Fastlane ሰነድ ጣቢያ እና ስለ Match መገልገያ ከዳር እስከ ዳር ያንብቡ።

በትኩረት የሚከታተል አንባቢ ይህን መገልገያ ለመጠቀም የግል ማከማቻ እና የሁለቱም የአፕል ገንቢ ፕሮግራም እና Github መዳረሻ ያለው መለያ እንደሚያስፈልገን አስተውሏል። እኛ (በድንገት እንደዚህ ያለ ነገር ከሌለ) የቅጹን መለያ እንፈጥራለን [ኢሜል የተጠበቀ], ጠንካራ የይለፍ ቃል ይዘው ይምጡ, በ developer.apple.com ይመዝገቡ እና እንደ የፕሮጀክት አስተዳዳሪ ይሾሙት. በመቀጠል መለያውን የኩባንያዎ የጊትዩብ ማከማቻ መዳረሻ እንሰጠዋለን እና እንደ AmazingAppMatch ያለ ስም ያለው አዲስ የግል ማከማቻ እንፈጥራለን።

3. Fastlane እና ተዛማጅ መገልገያ ማዘጋጀት

ተርሚናል ይክፈቱ፣ ከፕሮጀክቱ ጋር ወደ አቃፊው ይሂዱ እና በ ውስጥ እንደተመለከተው ፋስትሌን ያስጀምሩ ኦፊሴላዊ መመሪያ. ትዕዛዙን ከገቡ በኋላ

$ fastlane init

ያሉትን የአጠቃቀም አወቃቀሮች እንዲመርጡ ይጠየቃሉ። አራተኛውን አማራጭ ይምረጡ - በእጅ ፕሮጀክት ማዋቀር.

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

ፕሮጀክቱ ሁለት ፋይሎችን የያዘ አዲስ ማውጫ fastlane አለው - Appfile እና Fastfile. በአጭር አነጋገር፣ የአገልግሎት መረጃን በአፕፋይል ውስጥ እናከማቻለን፣ እና በ 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 አገልጋይ ስናቀናብር ያስፈልገናል!

አዲስ ፋይል በ 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

ወደፊት ግጥሚያዎችን በክራሽሊቲክስ እና/ወይም በAppStore ውስጥ ለእይታ ለመፈረም ማለትም የማመልከቻዎን የጥቅል መታወቂያ ለመፈረም ከፈለግን በትክክል በዚህ መንገድ እንሞላለን።

ነገር ግን፣ እንደምናስታውሰው፣ የሙከራ ግንባታውን ለመፈረም ልዩ የ Wildcard መታወቂያ ፈጠርን። ስለዚህ 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 እንዴት አዲስ የምስክር ወረቀት እንደፈጠረ እና ወደ ማከማቻው እንዳስቀመጠው እናያለን። በጣም ጥሩ!

XCode ን ይክፈቱ። አሁን አስፈላጊው የአቅርቦት ፕሮፋይል Match Development com.com.company* አለን።ይህም ለ AmazingApp እና AmazingAppUITests ኢላማዎች በProvisioning profile ክፍል ውስጥ መገለጽ አለበት።

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

ፈተናዎችን ለመገጣጠም ሌይን ለመጨመር ይቀራል። እንሂድ ወደ ማከማቻ ወደ ፋየርቤዝ የሙከራ ላብራቶሪ ወደ ውጭ መላክን ቀላል የሚያደርግ እና መመሪያዎቹን ለመከተል የሚያስችል የፕለጊን ፕሮጄክት ለ fastlane።

የእኛ የሌይን ሙከራ_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 ውስጥ fastlaneን ስለማዘጋጀት የተሟላ መረጃ ለማግኘት ኦፊሴላዊውን ሰነድ እንዲያነቡ እመክራለሁ። አንድ ጊዜ, два.

በእኛ 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 የሚባል አዲስ ፕሮጀክት ይፍጠሩ።

ይህ በጣም አስፈላጊ ነው: በቀደመው ደረጃ በፋስትፋይል ሌይን firebase_test_lab_ios_xctest የgcp_ፕሮጀክት ግቤት ከፕሮጀክቱ ስም ጋር መመሳሰል አለበት።

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

የነባሪ ቅንጅቶች በጣም እኛን ይስማማሉ።

ትሩን አይዝጉ ፣ በተመሳሳይ መለያ ውስጥ ይመዝገቡ Gcloud ከFirebase ጋር መገናኘት የ gcloud ኮንሶል በይነገጽን በመጠቀም ስለሚከሰት ይህ አስፈላጊ መለኪያ ነው።

ጉግል ለአንድ አመት 300 ዶላር ይሰጣል ፣ይህም በራስ ሰር ሙከራዎችን ከማከናወን አንፃር የአገልግሎቱን ነፃ አጠቃቀም ከአንድ አመት ጋር እኩል ነው። የክፍያ መረጃዎን እናስገባለን፣የሙከራ ክፍያ 1$ ጠብቅ እና 300 ዶላር ወደ ሂሳብዎ እንቀበላለን። ከአንድ አመት በኋላ, ፕሮጀክቱ በራስ-ሰር ወደ ነጻ ታሪፍ እቅድ ይተላለፋል, ስለዚህ ስለ ገንዘብ ማጣት መጨነቅ አያስፈልግም.

ከFirebase ፕሮጀክት ጋር ወደ ትሩ እንመለስ እና ወደ Blaze ታሪፍ እቅድ እናስተላልፈው - አሁን ገደቡ ካለፈ የምንከፍለው ነገር አለ።

በ gcloud በይነገጽ ውስጥ የኛን የFirebase ፕሮጄክታችንን ምረጥ፣ የ"ዳይሬክተሪ" ዋና ሜኑ ንጥሉን ምረጥ እና የደመና መሞከሪያ ኤፒአይ እና የደመና መሳሪያዎች ውጤት ኤፒአይ አክል።

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

ከዚያ ወደ ምናሌው ንጥል ይሂዱ "IAM እና አስተዳደር" -> የአገልግሎት መለያዎች -> የአገልግሎት መለያ ይፍጠሩ. ፕሮጀክቱን የማርትዕ መብቶችን እንሰጣለን።

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

በJSON ቅርጸት የኤፒአይ ቁልፍ ይፍጠሩ

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት

የወረደው JSON ትንሽ ቆይቶ እንፈልጋለን፣ አሁን ግን የሙከራ ቤተ ሙከራው እንደተጠናቀቀ እንመለከታለን።

5. CircleCI ማዋቀር

ምክንያታዊ ጥያቄ ይነሳል - በይለፍ ቃል ምን ማድረግ አለበት? የእኛ የግንባታ ማሽን የአካባቢ ተለዋዋጭ ዘዴ የይለፍ ቃሎቻችንን እና ሌሎች ሚስጥራዊ መረጃዎችን ደህንነቱ በተጠበቀ ሁኔታ እንድናከማች ይረዳናል። በ CircleCI ፕሮጀክት መቼቶች ውስጥ የአካባቢ ተለዋዋጮችን ይምረጡ

በFirebase Test Lab ውስጥ የመሳሪያ ሙከራዎችን እናካሂዳለን። ክፍል 1: የ iOS ፕሮጀክት
እና የሚከተሉትን ተለዋዋጮች ያዘጋጁ:

  • ቁልፍ፡ GOOGLE_APPLICATION_CREDENTIALS
    እሴት፡ የ gcloud አገልግሎት መለያ ቁልፍ የ json ፋይል ይዘቶች
  • ቁልፍ፡ MATCH_PASSWORD
    እሴት፡ የgithub ማከማቻን ከእውቅና ማረጋገጫዎች ጋር ለመፍታት የይለፍ ቃል
  • ቁልፍ፡ FASTLANE_PASSWORD
    እሴት፡ የአፕል ገንቢ ፖርታል መሠረተ ልማት መለያ ይለፍ ቃል

ለውጦቹን እናስቀምጣለን፣ PR ፈጥረን ለግምገማ ወደ ቡድናችን መሪ እንልካለን።

ውጤቶች

በእነዚህ ቀላል ማጭበርበሮች ምክንያት በመሳሪያው ስክሪን ላይ ቪዲዮን በሙከራ ጊዜ የመቅዳት ችሎታ ያለው ጥሩ እና የተረጋጋ የስራ አቋም አግኝተናል። በሙከራው ምሳሌ ውስጥ የ iPhone X መሣሪያን ሞዴል ገለጽኩ ፣ ግን እርሻው ከተለያዩ ሞዴሎች እና የ iOS ስሪቶች ጥምረት የበለፀገ ምርጫን ይሰጣል።

ሁለተኛው ክፍል ለአንድሮይድ ፕሮጀክት የFirebase Test Lab ደረጃ በደረጃ ማዋቀር ላይ ይውላል።

ምንጭ: hab.com

አስተያየት ያክሉ