Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Jina langu ni Dmitry, ninafanya kazi kama tester katika kampuni Sayansi ya MEL. Hivi majuzi nilimaliza kushughulika na kipengele cha hivi majuzi kutoka Maabara ya Majaribio ya Firebase - yaani, kwa majaribio muhimu ya programu za iOS kwa kutumia mfumo asilia wa majaribio XCUITest.

Kabla ya hili, nilikuwa tayari nimejaribu Maabara ya Majaribio ya Firebase ya Android na nilipenda sana kila kitu, kwa hivyo niliamua kujaribu kuweka miundombinu ya majaribio ya mradi huo kwa msingi sawa. Ilinibidi Google sana na sio kila kitu kilifanya kazi mara ya kwanza, kwa hivyo niliamua kuandika nakala ya mafunzo kwa wale ambao bado wanatatizika.

Kwa hivyo, ikiwa una majaribio ya UI kwenye mradi wa iOS, unaweza tayari kujaribu kuyaendesha kwenye vifaa halisi leo, vilivyotolewa na Good Corporation. Kwa wale wanaopenda, karibu kwa paka.

Katika hadithi, niliamua kujenga juu ya data ya awali - hazina ya kibinafsi kwenye GitHub na mfumo wa kujenga wa CircleCI. Jina la programu ni AmazingApp, bundleID ni com.company.amazingapp. Ninawasilisha data hii mara moja ili kupunguza mkanganyiko unaofuata.

Ikiwa ulitekeleza masuluhisho fulani katika mradi wako kwa njia tofauti, shiriki uzoefu wako katika maoni.

1. Vipimo vyenyewe

Unda tawi jipya la mradi kwa majaribio ya UI:

$ git checkout develop
$ git pull
$ git checkout -b β€œfeature/add-ui-tests”

Wacha tufungue mradi katika XCode na tuunde Lengo jipya na majaribio ya UI [XCode -> Faili -> Mpya -> Lengo -> Kifungu cha Majaribio cha iOS], tukiipa jina la kujieleza la AmazingAppUITests.

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Nenda kwenye sehemu ya Kuunda Awamu ya Lengo lililoundwa na uangalie uwepo wa Mategemeo Yanayolengwa - AmazingApp, katika Kukusanya Vyanzo - AmazingAppUITests.swift.

Mbinu nzuri ni kutenganisha chaguzi tofauti za ujenzi katika Miradi tofauti. Tunaunda mpango wa majaribio yetu ya UI [XCode -> Bidhaa -> Mpango -> Mpango Mpya] na kuupa jina sawa: AmazingAppUITests.

Muundo wa mpango ulioundwa lazima ujumuishe Lengo la programu kuu - Vipimo vya AmazingApp na Target UI - AmazingAppUITests - tazama picha ya skrini

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Kisha, tunaunda usanidi mpya wa muundo wa majaribio ya UI. Katika XCode, bonyeza kwenye faili ya mradi na uende kwenye sehemu ya Habari. Bonyeza "+" na uunda usanidi mpya, kwa mfano XCtest. Tutahitaji hii katika siku zijazo ili kuepuka kucheza na tari linapokuja suala la kutia saini kanuni.

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Kuna Angalau Malengo matatu katika mradi wako: programu kuu, majaribio ya vipimo (baada ya yote, yapo, sivyo?) na majaribio ya UI inayolengwa tuliyounda.

Nenda kwenye Lengo la KushangazaApp, kichupo cha Mipangilio ya Kujenga, sehemu ya Utambulisho wa Kusaini Msimbo. Kwa usanidi wa XCtest, chagua Msanidi Programu wa iOS. Katika sehemu ya Mtindo wa Kusaini Msimbo, chagua Mwongozo. Bado hatujatoa maelezo mafupi ya utoaji, lakini bila shaka tutayarejea baadaye kidogo.

Kwa Malengo ya AmazingAppUITests tunafanya vivyo hivyo, lakini katika safu wima ya Kitambulishi cha Bidhaa Bundle tunaweka com.company.amazingappuitests.

2. Kuanzisha mradi katika Programu ya Wasanidi Programu wa Apple

Nenda kwenye ukurasa wa Mpango wa Wasanidi Programu wa Apple, nenda kwenye sehemu ya Vyeti, Vitambulisho na Wasifu na kisha kwenye safu wima ya Vitambulisho vya Programu ya kipengee cha Vitambulisho. Unda Kitambulisho kipya cha Programu kiitwacho AmazingAppUITests na bundleID com.company.amazingappuitests.

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Sasa tuna fursa ya kusaini majaribio yetu na cheti tofauti, lakini ... Utaratibu wa kukusanya jengo kwa ajili ya kupima unahusisha kukusanya programu yenyewe na kukusanya mkimbiaji wa mtihani. Ipasavyo, tunakabiliwa na tatizo la kusaini vitambulisho viwili vya bando na wasifu mmoja wa utoaji. Kwa bahati nzuri, kuna suluhisho rahisi na la kifahari - Kitambulisho cha Programu ya Wildcard. Tunarudia utaratibu wa kuunda Kitambulisho kipya cha Programu, lakini badala ya Kitambulisho cha Programu Dhahiri, chagua Kitambulisho cha Programu ya Wildcard kama kwenye picha ya skrini.

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Kwa wakati huu, tumemaliza kufanya kazi na developer.apple.com, lakini hatutapunguza dirisha la kivinjari. Twende Tovuti ya nyaraka za Fastlane na usome kuhusu matumizi ya Mechi kutoka jalada hadi jalada.

Msomaji makini aligundua kuwa ili kutumia shirika hili tutahitaji hazina ya faragha na akaunti yenye uwezo wa kufikia Mpango wa Wasanidi Programu wa Apple na Github. Tunaunda (ikiwa ghafla hakuna kitu kama hicho) akaunti ya fomu [barua pepe inalindwa], njoo na nenosiri thabiti, lisajili kwa developer.apple.com, na uliteue kama msimamizi wa mradi. Kisha, tunaipa akaunti ufikiaji wa hazina ya github ya kampuni yako na kuunda hazina mpya ya kibinafsi yenye jina kama AmazingAppMatch.

3. Kuweka Fastlane na matumizi ya mechi

Fungua terminal, nenda kwenye folda iliyo na mradi na uanzishe fastlane kama ilivyoonyeshwa ndani mwongozo rasmi. Baada ya kuingiza amri

$ fastlane init

Utaulizwa kuchagua usanidi unaopatikana wa matumizi. Chagua chaguo la nne - usanidi wa mradi wa mwongozo.

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Mradi una saraka mpya ya fastlane, ambayo ina faili mbili - Appfile na Fastfile. Kwa kifupi, tunahifadhi data ya huduma katika Appfile, na kuandika kazi katika Fastfile, inayoitwa lanes katika istilahi ya Fastlane. Ninapendekeza kusoma hati rasmi: wakati, Π΄Π²Π°.

Fungua Appfile katika kihariri chako cha maandishi unachopenda na ulete kwa fomu ifuatayo:

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

Tunarudi kwenye terminal na kulingana na mwongozo rasmi tunaanza kusanidi mechi.

$ fastlane match init
$ fastlane match development

Ifuatayo, ingiza data iliyoombwa - hazina, akaunti, nenosiri, nk.

Muhimu: Unapozindua matumizi ya mechi kwa mara ya kwanza, utaulizwa kuingiza nenosiri ili kusimbua hazina. Ni muhimu sana kuhifadhi nenosiri hili; tutalihitaji wakati wa kusanidi seva ya CI!

Faili mpya imeonekana kwenye folda ya fastlane - Matchfile. Ifungue katika kihariri chako cha maandishi unachopenda na uionyeshe kama hii:

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

Tunaijaza kwa njia hii haswa ikiwa tunataka kutumia mechi katika siku zijazo kusaini miundo ili kuonyeshwa katika Crashlytics na/au AppStore, yaani, kutia sahihi kifurushi cha kitambulisho cha programu yako.

Lakini, kama tunavyokumbuka, tuliunda kitambulisho maalum cha Wildcard ili kusaini muundo wa jaribio. Kwa hivyo, fungua Fastfile na uweke njia mpya:

lane :testing_build_for_firebase do

    match(
      type: "development",
      readonly: true,
      app_identifier: "com.company.*",
      git_branch: "uitests"  # создаСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Ρ€Π°Π½Ρ‡ для development сСртификата для подписи тСстовой сборки.
    )

end

Hifadhi na uingie kwenye terminal

fastlane testing_build_for_firebase

na tunaona jinsi fastlane iliunda cheti kipya na kuiweka kwenye hazina. Kubwa!

Fungua XCode. Sasa tuna wasifu unaohitajika wa utoaji wa fomu ya Match Development com.company.*, ambayo lazima ibainishwe katika sehemu ya wasifu wa Utoaji kwa malengo ya AmazingApp na AmazingAppUITests.

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Inabakia kuongeza njia ya kukusanya vipimo. Twende hazina mradi wa programu-jalizi ya fastlane ambayo hurahisisha kusanidi kutuma kwenye Maabara ya Majaribio ya Firebase na kufuata maagizo.

Wacha tunakili-kubandika kutoka kwa mfano asili ili njia yetu ya kupima_build_for_firebase iishie kuonekana kama hii:


 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

Kwa habari kamili kuhusu kuanzisha fastlane katika CircleCI, ninapendekeza kusoma nyaraka rasmi mara moja, Π΄Π²Π°.

Usisahau kuongeza kazi mpya kwenye config.yml yetu:

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. Vipi kuhusu benchi yetu ya majaribio? Inasanidi Firebase.

Hebu tupate chini kwa nini makala iliandikwa.

Labda programu yako inatumia Firebase kwenye mpango usiolipishwa, au labda haitumii kabisa. Hakuna tofauti ya kimsingi, kwa sababu kwa mahitaji ya majaribio tunaweza kuunda mradi tofauti na mwaka wa matumizi bila malipo (pori, sivyo?)

Tunaingia kwenye akaunti yetu ya miundombinu (au nyingine yoyote, haijalishi), na kwenda Ukurasa wa koni ya Firebase. Unda mradi mpya unaoitwa AmazingAppUITests.

Muhimu: Katika hatua ya awali katika Fastfile katika lane firebase_test_lab_ios_xctest parameta ya gcp_project lazima ilingane na jina la mradi.

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Mipangilio ya chaguo-msingi inatufaa kabisa.

Usifunge kichupo, jiandikishe chini ya akaunti sawa Gcloud - hii ni kipimo cha lazima, kwani mawasiliano na Firebase hutokea kwa kutumia interface ya gcloud console.

Google inatoa $300 kwa mwaka, ambayo katika muktadha wa kufanya majaribio ya kiotomatiki ni sawa na mwaka wa matumizi ya bure ya huduma. Tunaweka maelezo yako ya malipo, tusubiri kutozwa kwa majaribio ya $1 na kupokea $300 kwenye akaunti yako. Baada ya mwaka, mradi huo utahamishiwa moja kwa moja kwenye mpango wa ushuru wa bure, kwa hiyo hakuna haja ya kuwa na wasiwasi kuhusu kupoteza pesa iwezekanavyo.

Hebu turudi kwenye kichupo na mradi wa Firebase na uhamishe kwa mpango wa ushuru wa Blaze - sasa tuna kitu cha kulipa ikiwa kikomo kinazidi.

Katika kiolesura cha gcloud, chagua mradi wetu wa Firebase, chagua kipengee cha menyu kuu ya "Directory" na uongeze API ya Majaribio ya Wingu na API ya Matokeo ya Zana za Wingu.

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Kisha nenda kwenye kipengee cha menyu "IAM na utawala" -> Akaunti za huduma -> Unda akaunti ya huduma. Tunatoa haki ya kuhariri mradi.

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Unda kitufe cha API katika umbizo la JSON

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi

Tutahitaji JSON iliyopakuliwa baadaye kidogo, lakini kwa sasa tutazingatia kukamilisha usanidi wa Maabara ya Majaribio.

5. Kuanzisha CircleCI

Swali la busara linatokea - nini cha kufanya na nywila? Utaratibu wa kubadilisha mazingira wa mashine yetu ya ujenzi utatusaidia kuhifadhi kwa usalama manenosiri yetu na data nyingine nyeti. Katika mipangilio ya mradi wa CircleCI, chagua Vigezo vya Mazingira

Tunafanya majaribio muhimu katika Maabara ya Majaribio ya Firebase. Sehemu ya 1: iOS mradi
Na usanidi vigezo vifuatavyo:

  • ufunguo: GOOGLE_APPLICATION_CREDENTIALS
    thamani: yaliyomo kwenye faili ya json ya ufunguo wa akaunti ya huduma ya gcloud
  • ufunguo: MATCH_PASSWORD
    thamani: nenosiri la kusimbua hazina ya github na vyeti
  • ufunguo: FASTLANE_PASSWORD
    thamani: Nenosiri la akaunti ya akaunti ya Msanidi Programu wa Apple

Tunahifadhi mabadiliko, kuunda PR na kuituma kwa kiongozi wetu wa timu kwa ukaguzi.

Matokeo ya

Kama matokeo ya upotoshaji huu rahisi, tulipokea kazi nzuri, thabiti ya kufanya kazi na uwezo wa kurekodi video kwenye skrini ya kifaa wakati wa majaribio. Katika mfano wa jaribio, nilitaja mfano wa kifaa cha iPhone X, lakini shamba hutoa uteuzi mzuri kutoka kwa mchanganyiko wa mifano tofauti na matoleo ya iOS.

Sehemu ya pili itatolewa kwa usanidi wa hatua kwa hatua wa Maabara ya Majaribio ya Firebase kwa mradi wa Android.

Chanzo: mapenzi.com

Kuongeza maoni