Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Jisimni Dmitry, naħdem bħala tester fil-kumpanija Xjenza MEL. Pjuttost reċentement spiċċajt nittratta karatteristika relattivament reċenti minn Firebase Test Lab — jiġifieri, bl-ittestjar strumentali tal-applikazzjonijiet tal-iOS bl-użu tal-qafas tal-ittestjar nattiv XCUITest.

Qabel dan, kont diġà ppruvajt Firebase Test Lab għal Android u għoġobni kollox, għalhekk iddeċidejt li nipprova npoġġi l-infrastruttura tat-test tal-iOS tal-proġett fuq l-istess livell. Kelli Google ħafna u mhux kollox ħadem l-ewwel darba, għalhekk iddeċidejt li nikteb artiklu tutorja għal dawk li għadhom qed jitħabtu.

Allura, jekk għandek testijiet tal-UI fuq proġett tal-iOS, diġà tista 'tipprova tmexxihom fuq apparat reali llum, ġentilment ipprovdut minn Good Corporation. Għal dawk interessati, merħba lil cat.

Fl-istorja, iddeċidejt li nibni fuq xi data inizjali - repożitorju privat fuq GitHub u s-sistema tal-bini CircleCI. L-isem tal-applikazzjoni huwa AmazingApp, bundleID huwa com.company.amazingapp. Nippreżenta din id-dejta immedjatament biex inaqqas il-konfużjoni sussegwenti.

Jekk implimentajt ċerti soluzzjonijiet fil-proġett tiegħek b'mod differenti, aqsam l-esperjenza tiegħek fil-kummenti.

1. It-testijiet infushom

Oħloq fergħa ġdida tal-proġett għat-testijiet tal-UI:

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

Ejja niftħu l-proġett f'XCode u noħolqu Target ġdid b'testijiet UI [XCode -> File -> New -> Target -> iOS Testing Bundle], billi tagħtiha l-isem li jispjega lilu nnifsu AmazingAppUITests.

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Mur fit-taqsima tal-Fażi tal-Ibni tal-Mira maħluqa u ċċekkja l-preżenza ta' Dipendenzi fil-Mira - AmazingApp, f'Kompila Sorsi - AmazingAppUITests.swift.

Prattika tajba hija li tissepara għażliet ta' bini differenti fi Skemi separati. Noħolqu skema għat-testijiet UI tagħna [XCode -> Prodott -> Skema -> Skema Ġdida] u nagħtuha l-istess isem: AmazingAppUITests.

Il-bini tal-iskema maħluqa għandu jinkludi l-Mira tal-applikazzjoni prinċipali - testijiet AmazingApp u Target UI - AmazingAppUITests - ara screenshot

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Sussegwentement, noħolqu konfigurazzjoni tal-bini ġdid għat-testijiet tal-UI. F'XCode, ikklikkja fuq il-fajl tal-proġett u mur fit-taqsima tal-Informazzjoni. Ikklikkja fuq "+" u oħloq konfigurazzjoni ġdida, pereżempju XCtest. Dan ikollna bżonn fil-futur sabiex nevitaw li niżfin bit-tambourine fejn jidħol l-iffirmar tal-kodiċi.

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Hemm mill-inqas tliet Miri fil-proġett tiegħek: l-applikazzjoni prinċipali, testijiet tal-unità (wara kollox, jeżistu, hux?) u t-testijiet tal-UI Target li ħloqna.

Mur fil-Target AmazingApp, tab Settings tal-Ibni, sezzjoni tal-Identità tal-Firmar tal-Kodiċi. Għall-konfigurazzjoni XCtest, agħżel iOS Developer. Fit-taqsima tal-Istil tal-Firmar tal-Kodiċi, agħżel Manwal. Għadna ma ġġenerajnax profil ta' proviżjonament, iżda żgur li se nerġgħu lura għalih ftit aktar tard.

Għal Target AmazingAppUITests nagħmlu l-istess, iżda fil-kolonna Product Bundle Identifier nidħlu com.company.amazingappuitests.

2. Twaqqif ta 'proġett fil-Programm ta' Żviluppatur Apple

Mur fil-paġna tal-Programm tal-Apple Developer, mur fit-taqsima Ċertifikati, Identifikaturi u Profili u mbagħad fil-kolonna App IDs tal-oġġett Identifikaturi. Oħloq App ID ġdid imsejjaħ AmazingAppUITests u bundleID com.company.amazingappuitests.

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Issa għandna l-opportunità li niffirmaw it-testijiet tagħna b'ċertifikat separat, iżda... Il-proċedura għall-assemblaġġ ta 'build għall-ittestjar tinvolvi l-assemblaġġ tal-applikazzjoni nnifisha u l-assemblaġġ tat-test runner. Għaldaqstant, qed niffaċċjaw il-problema li niffirmaw żewġ IDs tal-pakketti bi profil ta' forniment wieħed. Fortunatament, hemm soluzzjoni sempliċi u eleganti - Wildcard App ID. Nirrepetu l-proċedura għall-ħolqien ta 'App ID ġdida, iżda minflok l-App ID Espliċita, agħżel Wildcard App ID bħal fil-screenshot.

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

F'dan il-punt, lestejna naħdmu ma' developer.apple.com, iżda mhux se nnaqqsu t-tieqa tal-browser. Ejja mmorru Sit ta' dokumentazzjoni ta' Fastlane u aqra dwar l-utilità Match minn qoxra għal oħra.

Qarrej attent innota li biex nużaw din l-utilità se jkollna bżonn repożitorju privat u kont b'aċċess kemm għall-Programm tal-Iżviluppaturi ta 'Apple kif ukoll għal Github. Noħolqu (jekk f'daqqa waħda ma jkunx hemm tali ħaġa) kont tal-formola [protett bl-email], toħroġ b'password b'saħħitha, irreġistraha ma' developer.apple.com, u aħtarha bħala amministratur tal-proġett. Sussegwentement, aħna nagħtu aċċess għall-kont għar-repożitorju github tal-kumpanija tiegħek u noħolqu repożitorju privat ġdid b'isem bħal AmazingAppMatch.

3. Twaqqif ta 'Fastlane u l-utilità tal-logħba

Iftaħ terminal, mur fil-folder bil-proġett u initialize fastlane kif indikat fi manwal uffiċjali. Wara li ddaħħal il-kmand

$ fastlane init

Inti se tintalab tagħżel il-konfigurazzjonijiet tal-użu disponibbli. Agħżel ir-raba 'għażla - setup manwali tal-proġett.

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Il-proġett għandu direttorju ġdid fastlane, li fih żewġ fajls - Appfile u Fastfile. Fi ftit kliem, aħna naħżnu d-dejta tas-servizz f’Appfile, u niktbu l-impjiegi f’Fastfile, imsejħa korsiji fit-terminoloġija ta’ Fastlane. Nirrakkomanda li taqra d-dokumentazzjoni uffiċjali: ħin, два.

Iftaħ l-Appfile fl-editur tat-test favorit tiegħek u ġibu fil-forma li ġejja:

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

Nirritornaw lejn it-terminal u skont il-manwal uffiċjali nibdew nikkonfiguraw il-logħba.

$ fastlane match init
$ fastlane match development

Sussegwentement, daħħal id-dejta mitluba - repożitorju, kont, password, eċċ.

Importanti: Meta tniedi għall-ewwel darba l-utilità tat-tlaqqigħ, inti tintalab iddaħħal password biex tiddikripta r-repożitorju. Huwa importanti ħafna li tissejvja din il-password; ikollna bżonnha meta nwaqqfu s-server CI!

Fajl ġdid deher fil-folder tal-fastlane - Matchfile. Iftaħ fl-editur tat-test favorit tiegħek u urih hekk:

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

Aħna nimlewh eżattament b'dan il-mod jekk irridu nużaw match fil-futur biex niffirmaw builds għall-wiri fi Crashlytics u/jew AppStore, jiġifieri, biex niffirmaw l-ID tal-pakkett tal-applikazzjoni tiegħek.

Iżda, kif niftakru, ħloqna ID Wildcard speċjali biex niffirmaw il-bini tat-test. Għalhekk, iftaħ Fastfile u daħħal korsija ġdida:

lane :testing_build_for_firebase do

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

end

Issejvja u daħħal fit-terminal

fastlane testing_build_for_firebase

u naraw kif fastlane ħoloq ċertifikat ġdid u poġġih fir-repożitorju. Kbir!

Iftaħ XCode. Issa għandna l-profil ta’ forniment meħtieġ tal-formola Match Development com.company.*, li għandu jiġi speċifikat fit-taqsima tal-Profil ta’ Provisioning għall-miri AmazingApp u AmazingAppUITests.

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Fadal li żżid korsija għat-testijiet tal-assemblaġġ. Ejja mmorru repożitorju proġett ta’ plugin għal fastlane li jagħmilha aktar faċli biex titwaqqaf l-esportazzjoni lejn Firebase Test Lab u segwi l-istruzzjonijiet.

Ejja nikkopja-pejstja mill-eżempju oriġinali sabiex il-korsija tagħna testing_build_for_firebase tispiċċa tidher bħal din:


 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

Għal informazzjoni kompleta dwar it-twaqqif ta' fastlane f'CircleCI, nirrakkomanda li taqra d-dokumentazzjoni uffiċjali ħinijiet, два.

Tinsiex iżżid kompitu ġdid fil-config.yml tagħna:

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. Xi ngħidu dwar il-bank tat-test tagħna? Twaqqif ta' Firebase.

Ejja ninżlu għal xiex inkiteb l-artiklu.

Forsi l-app tiegħek tuża Firebase fuq pjan b'xejn, jew forsi xejn. M'hemm assolutament l-ebda differenza fundamentali, għaliex għall-ħtiġijiet ta 'ttestjar nistgħu noħolqu proġett separat b'sena ta' użu b'xejn (jibred, hux?)

Aħna nilloggjaw fil-kont tal-infrastruttura tagħna (jew kwalunkwe ieħor, ma jimpurtax), u mmorru Firebase console paġna. Oħloq proġett ġdid bl-isem AmazingAppUITests.

Importanti: Fil-pass preċedenti fil-Fastfile fil-korsija firebase_test_lab_ios_xctest il-parametru gcp_project għandu jaqbel mal-isem tal-proġett.

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Is-settings default jixirquna pjuttost tajjeb.

Tagħlaqx it-tab, irreġistra taħt l-istess kont fi Gcloud - din hija miżura neċessarja, peress li l-komunikazzjoni ma' Firebase sseħħ bl-użu tal-interface tal-console gcloud.

Google qed tagħti $300 għal sena, li fil-kuntest tat-twettiq ta 'awtotests hija ekwivalenti għal sena ta' użu b'xejn tas-servizz. Aħna ndaħħlu l-informazzjoni tal-ħlas tiegħek, nistennew id-debitu tat-test ta' $1 u nirċievu $300 fil-kont tiegħek. Wara sena, il-proġett jiġi ttrasferit awtomatikament għal pjan ta 'tariffi b'xejn, u għalhekk m'hemmx għalfejn tinkwieta dwar telf possibbli ta' flus.

Ejja nerġgħu lura għat-tab bil-proġett Firebase u tittrasferih għall-pjan tat-tariffi Blaze - issa għandna xi ħaġa x'nħallsu jekk jinqabeż il-limitu.

Fl-interface tal-gcloud, agħżel il-proġett Firebase tagħna, agħżel l-oġġett tal-menu prinċipali "Direttorju" u żid il-Cloud Testing API u Cloud Tools Result API.

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Imbagħad mur fil-punt tal-menu "IAM u amministrazzjoni" -> Kontijiet tas-servizz -> Oħloq kont tas-servizz. Aħna nagħtu drittijiet biex jeditjaw il-proġett.

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Oħloq ċavetta API fil-format JSON

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS

Ikollna bżonn il-JSON imniżżel ftit aktar tard, iżda għalissa se nikkunsidraw is-setup tal-Lab tat-Test komplut.

5. Twaqqif ta' CircleCI

Tqum mistoqsija raġonevoli - x'għandek tagħmel bil-passwords? Il-mekkaniżmu varjabbli ambjentali tal-magna tal-bini tagħna se jgħinna naħżnu b'mod sigur il-passwords tagħna u data sensittiva oħra. Fis-settings tal-proġett CircleCI, agħżel Varjabbli Ambjentali

Aħna nwettqu testijiet strumentali f'Firebase Test Lab. Parti 1: Proġett iOS
U waqqaf il-varjabbli li ġejjin:

  • ċavetta: GOOGLE_APPLICATION_CREDENTIALS
    valur: kontenut tal-fajl json taċ-ċavetta tal-kont tas-servizz gcloud
  • ċavetta: MATCH_PASSWORD
    valur: password għad-deċifrar tar-repożitorju tal-github b'ċertifikati
  • ċavetta: FASTLANE_PASSWORD
    valur: Il-password tal-kont tal-infrastruttura tal-Apple Developer Portal

Aħna nissejvjaw il-bidliet, noħolqu PR u nibagħtu lill-mexxej tat-tim tagħna għal reviżjoni.

Riżultati ta '

Bħala riżultat ta 'dawn il-manipulazzjonijiet sempliċi, irċevejna stand tax-xogħol tajjeb u stabbli bil-kapaċità li nirreġistra vidjo fuq l-iskrin tal-apparat fil-ħin tal-ittestjar. Fl-eżempju tat-test, speċifikajt il-mudell tal-apparat iPhone X, iżda r-razzett jipprovdi għażla rikka minn taħlita ta 'mudelli differenti u verżjonijiet tal-iOS.

It-tieni parti se tkun iddedikata għat-twaqqif pass pass ta' Firebase Test Lab għal proġett Android.

Sors: www.habr.com

Żid kumment