Pepino y BDD. Escribir pruebas automáticas de IU en iOS

Prefacio

¡Hola, Habr! En este artículo tutorial, quiero hablar sobre las funciones básicas de un marco como Cucumber y su uso para crear pruebas automáticas de IU en dispositivos móviles iOS.

Mi objetivo es hacer que la descripción sea lo más simple y comprensible posible para la mayoría de los lectores, independientemente de sus habilidades de programación o automatización. En general, hay mucha información sobre BDD y Cucumber en la red, por lo tanto, para evitar repeticiones, no quiero profundizar en la teoría general, sino que me enfocaré en la combinación del framework e iOS.

Este artículo será de interés, en primer lugar, para aquellos probadores que recién están comenzando a aprender el mundo de los autotests. Tendrán instrucciones detalladas sobre cómo implementar Cucumber, así como un ejemplo detallado de cómo escribir la primera prueba. Para los usuarios experimentados que no están familiarizados con esta herramienta, el artículo les dará una idea general de Cucumber y, posiblemente, les ayudará a elegir este (bueno, o viceversa, otro) marco de prueba.

Algunas palabras sobre pepinillo, pepino y 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-…

Un simple paso previo a la condición
-
  • 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