Concombre et BDD. Écriture de tests automatiques de l'interface utilisateur sur iOS

Préface

Bonjour, Habr! Dans cet article du didacticiel, je souhaite parler des fonctions de base d'un framework tel que Cucumber et de son utilisation pour créer des autotests d'interface utilisateur sur les appareils mobiles iOS.

Mon objectif est de rendre la description aussi simple et compréhensible que possible pour la plupart des lecteurs, quelles que soient leurs compétences en programmation ou en automatisation. En général, il y a beaucoup d'informations sur BDD et Cucumber sur le réseau.Par conséquent, afin d'éviter les répétitions, je ne veux pas approfondir la théorie générale, mais je me concentrerai sur la combinaison du cadre et d'iOS.

Cet article intéressera tout d'abord les testeurs qui commencent tout juste à apprendre le monde des autotests. Ils auront des instructions détaillées sur la façon de déployer Cucumber, ainsi qu'un exemple détaillé de rédaction du premier test. Pour les utilisateurs expérimentés qui ne sont pas familiers avec cet outil, l'article donnera une idée générale de Cucumber et, éventuellement, aidera à choisir en faveur de ce (enfin, ou vice versa - un autre) cadre de test.

Quelques mots sur Gherkin, Cucumber et BDD

Gherkin PO, - . «» Gherkin , - , (Given-When-Then-And) //.

Cucumber - , behavior driven (BDD) , Gherkin.

BDD (behavior driven development) - , - . BDD :

Scenario: Login with PIN
Given the app is running
And I'am registered user
And I see Login screen
When I enter 4-digits PIN
Then I am logged in

, , , , . .

Cucumber

Cucumber iOS semi-official (-?) .

  • Cucumber - ocoaPod , . CocoaPod

    sudo gem install cocoa pods

  • pod init

  • . , :

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'

use_frameworks!
inhibit_all_warnings!

def test_pods
  pod 'Cucumberish'
end

target ‘__CucumberTestsdo
  test_pods
end

- , . ,

  • XCFit

    sudo gem install xcfit

  • Xcode, , cucumberish  bundle. CucumberTests . Features

  • build phases CucumberTests, Copy Bundle Resources, Compile Sources Link Binary With Libraries

  • Xcode,

    pod install

  • .xcworkspace , . Screens, Step Definitions Supporting Files. - Add Files to.

    , Cucumber!

  • ( 2020) « » - . , . Xcode :

    • @objc class func CucumberishSwiftInit()

    • var elementQurey var elementQuery

    • expectedMenuCount: uInt = uInt(menuCount)! expectedMenuCount: Int = Int(menuCount)!

    • expectedCellCount: uInt = uInt(cellCount)! expectedCellCount: Int = Int(cellCount)!

. ⌘+U . , , «Tests successfully executed 0 from 0». , , , , .

" "

Cucumber :

  • Features - .feature, BDD . , Gherkin, ,

  • < >CucumberTests.swift . , Given , . . , , ,

  • Screens - .swift , ,

  • Step Definitions - .swift ,

  • Common - commonStepDefinitions.swift , , ( , ..)

. .feature , Features, ,   beforeStart CucumberishSwiftInit()

?

, . , , , c Xcode , ⌘+U.

:

  • /

  • -

  • Given And . Given , Given-And-And-…

Une simple étape de précondition
-
  • swift , . , :

«The app is running» , .

  • Given When Then , . .swift Step Definitions

  • . -, , -

, , , :

  • feature Features. :

Feature:…
In order toAs a …
I want to … 
  • feature , Gerkin

  • swift Given

  • step definition

Given

«the app is running» . , - «», Given-And-And-… . , .

- . , , , .

, , , «My credentials», .

. , , .

  • , , «Get started». , , «0000»,

, , , , , . «0000».

UIInterruptionMonitor, , (faceid ) .

  • , / , «My credentials». ,

  • , credentialList , , . , , "Delete" "Delete credential".

. , «My credentials».

CommonStepDefinitions

Given-, .

CommonStepDefinitions.swift. Common , , .

, Menu, Confirm Deny, «Please confirm». , , , step definitions . CommonStep :


And I see the "Menu" view
And I see "Confirm" button
And I see "Deny" button
And I see "Please confirm" text

common , , : 

common , . , - . step definitions accessibility identifier.

, BDD definition, ⌘+U. , , , ( ) executeFeatures .swift .

, - , , - , .

. , 50+ 5 . 5- 45 , . , 10 , , .

- ( «I have no credentials»). , .

Xcode . . .

. .

?

cucumber   , , BDD . .

- , . , , 3-4 . , -, , BDD-. , BDD . ? ? cucumber .

, BDD PO -- , , Jira - .

, - , PO , , , , . step definitions .

, , , , , .

, , UI- Cucumber. , , .




All Articles