Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Sunana Dmitry, Ina aiki a matsayin mai gwadawa a cikin kamfani Kimiyyar MEL. Kwanan nan na gama ma'amala da wani fasali na kwanan nan daga Wurin Gwajin Wuta - wato, tare da gwajin kayan aiki na aikace-aikacen iOS ta amfani da tsarin gwaji na asali XCUITest.

Kafin wannan, Na riga na gwada Firebase Test Lab don Android kuma ina son komai da gaske, don haka na yanke shawarar ƙoƙarin sanya kayan aikin gwajin iOS na aikin akan ƙafa ɗaya. Dole ne in yi Google da yawa kuma ba komai ya yi aiki a karon farko ba, don haka na yanke shawarar rubuta labarin koyawa ga waɗanda har yanzu suke fafitikar.

Don haka, idan kuna da gwaje-gwajen UI akan aikin iOS, kuna iya riga kun gwada gudanar da su akan na'urori na gaske a yau, da kirki da Kamfanin Good Corporation ya bayar. Ga masu sha'awar, barka da zuwa cat.

A cikin labarin, na yanke shawarar ginawa akan wasu bayanan farko - ma'ajiyar sirri akan GitHub da tsarin ginin CircleCI. Sunan aikace-aikacen shine AmazingApp, bundleID com.company.amazingapp ne. Ina gabatar da wannan bayanan nan da nan don rage rudani na gaba.

Idan kun aiwatar da wasu mafita a cikin aikin ku daban, raba ƙwarewar ku a cikin sharhi.

1. Gwaje-gwaje da kansu

Ƙirƙiri sabon reshen aikin don gwaje-gwajen UI:

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

Bari mu buɗe aikin a cikin XCode kuma mu ƙirƙiri sabon Target tare da gwaje-gwajen UI [XCode -> Fayil -> Sabon -> Target -> Tsarin Gwajin iOS], yana ba shi sunan bayanin kansa AmazingAppUITests.

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Jeka sashin Gina Matakan da aka ƙirƙira na Target ɗin da aka ƙirƙira kuma bincika kasancewar Dogaran Target - AmazingApp, cikin Tushen Haɗa - AmazingAppUITests.swift.

Kyakkyawan aiki shine raba zaɓuɓɓukan gini daban-daban zuwa Tsari daban-daban. Mun ƙirƙiri makirci don gwajin UI ɗin mu [XCode -> Samfura -> Tsarin -> Sabon Tsari] kuma muna ba shi suna iri ɗaya: AmazingAppUITests.

Gina tsarin da aka ƙirƙira dole ne ya haɗa da Target na babban aikace-aikacen - AmazingApp da gwajin UI na Target - AmazingAppUITests - duba hoton allo.

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Na gaba, muna ƙirƙiri sabon tsarin gini don gwaje-gwajen UI. A cikin XCode, danna kan fayil ɗin aikin kuma je zuwa sashin Bayani. Danna "+" kuma ƙirƙirar sabon tsari, misali XCtest. Za mu buƙaci wannan a nan gaba don guje wa rawa da tambourine idan ana maganar sa hannu ta lamba.

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Akwai aƙalla Manufa guda uku a cikin aikinku: babban aikace-aikacen, gwaje-gwajen naúrar (bayan duka, sun wanzu, daidai?) Da kuma gwajin UI na Target da muka ƙirƙira.

Je zuwa Target AmazingApp, Gina Saituna tab, Sashen Sa hannu na Code. Don daidaitawar XCtest, zaɓi iOS Developer. A cikin Salon Sa hannu na Code, zaɓi Manual. Har yanzu ba mu ƙirƙiro bayanin martaba ba tukuna, amma tabbas za mu dawo cikinsa kaɗan kaɗan.

Don Target AmazingAppUITests muna yin haka, amma a cikin ginshiƙi Mai Gano Bundle Mun shigar da com.company.amazingappuitests.

2. Kafa wani aiki a cikin Apple Developer Program

Jeka shafin Shirye-shiryen Haɓaka Apple, je zuwa sashin Takaddun shaida, Masu Gano & Bayanan martaba sannan zuwa ginshiƙin ID na App na abubuwan Gano. Ƙirƙiri sabon ID na App mai suna AmazingAppUITests da bundleID com.company.amazingappuitests.

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Yanzu muna da damar sanya hannu kan gwaje-gwajenmu tare da takardar shaidar daban, amma ... Hanyar haɗa ginin don gwaji ya haɗa da haɗa aikace-aikacen kanta da kuma haɗa mai tseren gwaji. Saboda haka, muna fuskantar matsalar sanya hannu kan budle ID guda biyu tare da bayanan bayarwa guda ɗaya. Abin farin ciki, akwai mafita mai sauƙi kuma kyakkyawa - Wildcard App ID. Muna maimaita hanya don ƙirƙirar sabon ID na App, amma maimakon Bayyanar ID na App, zaɓi Wildcard App ID kamar yadda yake a cikin hoton allo.

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

A wannan gaba, mun gama aiki tare da developer.apple.com, amma ba za mu rage girman tagar mai bincike ba. Muje zuwa Shafin yanar gizo na Fastlane kuma karanta game da amfanin Match daga bango zuwa bango.

Mai karatu mai hankali ya lura cewa don amfani da wannan kayan aiki za mu buƙaci wurin ajiyar sirri da asusu tare da samun dama ga duka Shirin Haɓaka Apple da Github. Mun ƙirƙira (idan ba zato ba tsammani babu irin wannan) asusu na tsari [email kariya], fito da kalmar sirri mai ƙarfi, yi rijista da developer.apple.com, kuma sanya shi a matsayin mai gudanar da aikin. Bayan haka, muna ba da asusun samun dama ga ma'ajiyar github na kamfanin ku kuma muna ƙirƙirar sabon ma'ajiyar sirri mai suna kamar AmazingAppMatch.

3. Saita Fastlane da kayan amfani

Bude tasha, je zuwa babban fayil tare da aikin kuma fara fastlane kamar yadda aka nuna a ciki hukuma manual. Bayan shigar da umurnin

$ fastlane init

Za a umarce ku don zaɓar saitunan amfani da ke akwai. Zaɓi zaɓi na huɗu - saitin aikin hannu.

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Aikin yana da sabon directory fastlane, wanda ya ƙunshi fayiloli guda biyu - Appfile da Fastfile. A takaice, muna adana bayanan sabis a cikin Appfile, kuma muna rubuta ayyuka a cikin Fastfile, wanda ake kira layi a cikin kalmomin Fastlane. Ina ba da shawarar karanta takaddun hukuma: sau, два.

Bude Appfile a cikin editan rubutu da kuka fi so kuma kawo shi zuwa tsari mai zuwa:

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

Mun koma tashar tashar kuma bisa ga jagorar hukuma za mu fara saita wasa.

$ fastlane match init
$ fastlane match development

Na gaba, shigar da bayanan da aka nema - ma'ajiyar ajiya, asusu, kalmar sirri, da sauransu.

Yana da muhimmanci a: Lokacin da kuka fara ƙaddamar da kayan aikin wasan, za a umarce ku da ku shigar da kalmar sirri don ɓoye ma'ajiyar. Yana da matukar mahimmanci don adana wannan kalmar sirri; za mu buƙaci sa yayin kafa uwar garken CI!

Wani sabon fayil ya bayyana a cikin babban fayil ɗin fastlane - Matchfile. Bude shi a cikin editan rubutu da kuka fi so kuma nuna shi kamar haka:

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

Muna cika shi daidai ta wannan hanya idan muna son amfani da wasa a nan gaba don sanya hannu kan ginin don nunawa a cikin Crashlytics da/ko AppStore, wato, don sanya hannu kan budle ID na aikace-aikacenku.

Amma, kamar yadda muke tunawa, mun ƙirƙiri ID na Wildcard na musamman don sanya hannu kan ginin gwajin. Don haka, buɗe Fastfile kuma shigar da sabon layi:

lane :testing_build_for_firebase do

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

end

Ajiye kuma shiga cikin tashar tashar

fastlane testing_build_for_firebase

kuma mun ga yadda fastlane ya ƙirƙiri sabon takaddun shaida kuma ya sanya shi a cikin ma'ajin. Mai girma!

Bude XCode. Yanzu muna da mahimman bayanan samar da tsari na kamfanin Match Development com.*, wanda dole ne a keɓance shi a cikin sashin bayanan Samar da maƙasudin AmazingApp da AmazingAppUITests.

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Ya rage don ƙara layi don haɗa gwaje-gwaje. Muje zuwa wurin ajiya aikin plugin don fastlane wanda ke sauƙaƙa saita fitarwa zuwa Lab ɗin Gwajin Firebase kuma bi umarnin.

Bari mu kwafa-manna daga ainihin misali domin hanyar gwajin_build_for_firebase ta ƙare kamar haka:


 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

Don cikakken bayani game da kafa fastlane a CircleCI, Ina ba da shawarar karanta takaddun hukuma sau daya, два.

Kar a manta da ƙara sabon ɗawainiya zuwa ga 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. Game da bencin gwajin mu fa? Saita Firebase.

Bari mu sauka ga abin da aka rubuta labarin.

Wataƙila app ɗinku yana amfani da Firebase akan shirin kyauta, ko wataƙila a'a kwata-kwata. Babu cikakkiyar bambanci mai mahimmanci, saboda don buƙatun gwaji za mu iya ƙirƙirar aikin daban tare da shekara ta amfani da kyauta (sanyi, daidai?)

Muna shiga asusun kayan aikin mu (ko wani, ba kome), kuma je zuwa Firebase console page. Ƙirƙiri sabon aiki mai suna AmazingAppUITests.

Yana da muhimmanci a: A mataki na baya a cikin Fastfile a layin firebase_test_lab_ios_xctest ma'aunin gcp_project yakamata ya dace da sunan aikin.

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Saitunan tsoho sun dace da mu sosai.

Kar a rufe shafin, yi rajista a ƙarƙashin asusu ɗaya a ciki Gcloud - wannan ma'auni ne mai mahimmanci, tunda sadarwa tare da Firebase yana faruwa ta amfani da kayan aikin gcloud console.

Google yana ba da dala 300 na shekara guda, wanda a cikin mahallin yin gwajin atomatik daidai yake da shekara ta amfani da sabis ɗin kyauta. Muna shigar da bayanin biyan ku, jira gwajin zare na $1 kuma mu karɓi $300 zuwa asusunku. Bayan shekara guda, aikin za a canza shi ta atomatik zuwa tsarin jadawalin kuɗin fito, don haka babu buƙatar damuwa game da yiwuwar asarar kuɗi.

Bari mu koma shafin tare da aikin Firebase kuma mu canza shi zuwa tsarin jadawalin kuɗin fito na Blaze - yanzu muna da abin da za mu biya idan an wuce iyaka.

A cikin mahallin gcloud, zaɓi aikin Firebase ɗinmu, zaɓi babban abin menu na "Directory" kuma ƙara API ɗin Gwajin Gajimare da Cloud Tools Result API.

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Sannan je zuwa abin menu "IAM and Administration" -> Asusun sabis -> Ƙirƙiri asusun sabis. Muna ba da haƙƙoƙin gyara aikin.

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Ƙirƙiri maɓallin API a tsarin JSON

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin

Za mu buƙaci zazzagewar JSON kaɗan daga baya, amma a yanzu za mu yi la'akari da saitin Lab ɗin Gwajin cikakke.

5. Saita CircleCI

Tambaya mai ma'ana ta taso - menene za a yi da kalmomin shiga? Tsarin canjin yanayi na injin ginin mu zai taimaka mana adana kalmomin shiga da sauran bayanai masu mahimmanci. A cikin saitunan aikin CircleCI, zaɓi Canjin Muhalli

Muna gudanar da gwaje-gwajen kayan aiki a cikin Wurin Gwajin Wuta na Firebase. Sashe na 1: iOS aikin
Kuma saita masu canji masu zuwa:

  • maɓalli: GOOGLE_APPLICATION_CREDENTIALS
    darajar: abun ciki na fayil json na maɓallin asusun sabis na gcloud
  • key: MATCH_PASSWORD
    darajar: kalmar sirri don ɓoye ma'ajin github tare da takaddun shaida
  • key: FASTLANE_PASSWORD
    darajar: Apple Developer Portal kayayyakin more rayuwa kalmar sirri lissafi

Muna adana canje-canje, ƙirƙirar PR kuma aika shi zuwa jagorar ƙungiyarmu don bita.

Sakamakon

Sakamakon waɗannan gyare-gyare masu sauƙi, mun sami kyakkyawan aiki, tsayayye na aiki tare da ikon yin rikodin bidiyo akan allon na'urar a lokacin gwaji. A cikin misalin gwajin, na ƙayyade samfurin na'urar iPhone X, amma gonar tana ba da zaɓi mai kyau daga haɗuwa da nau'i daban-daban da nau'ikan iOS.

Za a keɓance kashi na biyu zuwa mataki-mataki saitin gwajin gwajin Firebase don aikin Android.

source: www.habr.com

Add a comment