Pepino e BDD. Escrevendo Autotestes de IU no iOS

Prefácio

Olá, Habr! Neste tutorial, quero falar sobre as funções básicas de uma estrutura como o Cucumber e seu uso para criar autotestes de IU em dispositivos móveis iOS.

Meu objetivo é tornar a descrição o mais simples e compreensível possível para a maioria dos leitores, independentemente das habilidades de programação ou automação. Em geral, há muitas informações sobre BDD e Cucumber na rede, portanto, para evitar repetições, não quero me aprofundar na teoria geral, mas vou me concentrar na combinação do framework e iOS.

Este artigo será de interesse, em primeiro lugar, para aqueles testadores que estão apenas começando a aprender o mundo dos autotestes. Eles terão instruções detalhadas sobre como implantar o Cucumber, bem como um exemplo detalhado de como escrever o primeiro teste. Para usuários experientes que não estão familiarizados com esta ferramenta, o artigo dará uma ideia geral do Cucumber e, possivelmente, ajudará na escolha deste (bem, ou vice-versa - outro) framework de teste.

Algumas palavras sobre Gherkin, Cucumber e 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-…

Uma etapa de pré-condição simples
-
  • 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