Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

A tesztelő rendszer RUBY KÖRNYEZETBEN. A Cucumber Aslak Hellesøy készítette az első 1.0.0 verziót ami 2012. június 20-án jelent meg. 1.3.13 a legfrissebb.

Hasonló előadás


Az előadások a következő témára: "A tesztelő rendszer RUBY KÖRNYEZETBEN. A Cucumber Aslak Hellesøy készítette az első 1.0.0 verziót ami 2012. június 20-án jelent meg. 1.3.13 a legfrissebb."— Előadás másolata:

1 A tesztelő rendszer RUBY KÖRNYEZETBEN

2 A Cucumber Aslak Hellesøy készítette az első 1.0.0 verziót ami 2012. június 20-án jelent meg. 1.3.13 a legfrissebb verzió. Maga az eszköz a Behavior-Driven Development (BDD) elveit követi Ebben a tesztelési hozzáállásban az alapelvek: ◦Előre írjuk meg a tesztet a komponensünkhöz ◦Az elkészült tesztek után implementáljunk ◦A tesztek sorozatos futtatásával finomítsuk a kódot ◦A tesztek minden esetben megfogalmazhatóak, illetve specifikálhatóak természetes nyelven

3  Ruby nyelven íródott, de azon kívül is léteznek implementációk, ezekből néhány az eredetit használja és egyfajta hidat képez a célnyelv és a Cucumber között (pl. cuke4php és cuke4lua)  Weboldal: http://cukes.info/http://cukes.info/  A BDD-nek megfelelően a tesztek két részből állnak.  A megrendelő számára átadható informális leírás  Az informális leírás sorainak megfelelő valódi program

4  Az informális leírásra a következő megkötések érvényesek:  Egy.feature kiterjesztésű fájlba kell írni őket  Beépített kulcsszavakat kell használni  Feature, Scenario / Scenario outline és Examples  Given, And, When, Then  A kulcsszavak egyébként több nyelven is megadhatók nem csak angolul:  Jellemző, Forgatókönyv /Forgatókönyv vázlat és Példák  Amennyiben, És, Ha, Akkor

5  Példa: division.feature # language: en Feature: Division In order to avoid silly mistakes Cashiers must be able to calculate a fraction Scenario: Regular numbers Given I have entered 3 into the calculator And I have entered 2 into the calculator When I press divide Then the result should be 1.5 on the screen

6  Példa: addition.feature # language: en Feature: Addition In order to avoid silly mistakes As a math idiot I want to be told the sum of two numbers Scenario Outline: Add two numbers Given I have entered into the calculator And I have entered into the calculator When I press Then the result should be on the screen Examples: | input_1 | input_2 | button | output | | 20 | 30 | add | 50 | | 2 | 5 | add | 7 | | 0 | 40 | add | 40 |

7  Az ennek megfelelő, konkrét lépéseket végrehajtó kódot pedig a step_definitions könyvtárba kell helyezni ami a feature fájllal egy szinten van.  A lépések kódjának keretét nem kell kézzel megírni azt a futtató rendszer kiírja amennyiben nem találja meg azokat. Az ebben lévő paramétereket pedig reguláris kifejezésekkel lehet kinyerni.

8  Példa: calculator_steps.rb # encoding: utf-8 begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end require 'cucumber/formatter/unicode' $:.unshift(File.dirname(__FILE__) + '/../../lib') require 'calculator' Before do @calc = Calculator.new end After do end

9  Példa: calculator_steps.rb Given /I have entered (\d+) into the calculator/ do |n| @calc.push n.to_i end When /I press (\w+)/ do |op| @result = @calc.send op end Then /the result should be (.*) on the screen/ do |result| @result.should == result.to_f end

10  A javasolt könyvtárstruktúra a következő:  features (Ide tesszük a.feature fájlokat)  step_definitions(Ide tesszük a lépések definícióit)  support(Az itt található forrásfájlok induláskor betöltődnek)

11  A tesztelés indítása alapesetben úgy történik, hogy egy terminálon belépünk a features könyvtárral egy szintre és kiadjuk a cucumber parancsot. Ekkor az összes feature fájlt feldolgozza. Ezt a működést többféleképpen is felüldefiniálhatjuk :  Megadhatjuk konkrétan a feature fájl nevét a parancs után cucumber features/AwesomeFeature.feature  Használhatunk Tag-eket, amelyekkel szeparálhatjuk a teszteseteinket. Például csak adott taggel megjelölt teszteseteket futtathatunk.

12  Példa: Tag-ek használata  A tagek arra valók, hogy a teszteseteinket csoportokba szervezzük azért, hogy ne kelljen minden esetben minden tesztet lefuttatni. @billing Feature: Verify billing @important Scenario: Missing product description Scenario: Several products

13  Példa: Tag-ek használata Futtatás: cucumber –-tags @billing (Csak a @billing taggel jelöltek) cucumber –-tags @important (Csak az @important taggel jelöltek) cucumber –-tags ~@important (Minden ami nincs megjelölve @important taggel) cucumber --tags @billing --tags @important (Minden teszt lefut ami @billing ÉS @important) cucumber --tags @billing,@important (Minden teszt lefut ami @billing VAGY @important)

14 További lehetőségek  Webes tesztelés  A Cucumber a webes alkalmazások tesztelésében is használható, így tesztelhetjük vele Rails alkalmazásainkat is. Ezen felül, mivel ehhez a Cucumber más gem-eket használ ezért nem csak Rails, hanem tetszőleges webes- alkalmazások is tesztelhetőek.

15 További lehetőségek  Hook-ok  Arra valók, hogy 1-1 adott végrehajtási egység előtt illetve után lefuttathassunk kódrészeket például a teszteset környezetének inicializálása érdekében vagy a teszteset utáni takarítás miatt.  https://github.com/cucumber/cucumber/wiki/Hooks https://github.com/cucumber/cucumber/wiki/Hooks

16 További lehetőségek  Hook-ok fajtái  Scenario hookok  Minden Scenario/Scenario outline előtt/után fut  Before do |scenario| … end  After do |scenario| … end  Around('@fast') do |scenario, block| … end

17 További lehetőségek  Hook-ok fajtái  Step hook  AfterStep do |scenario| … end  Configuration hook  AfterConfiguration do |config| … end

18 Kérdések  Mik a Cucumber angol nyelvű kulcsszavai?  Mire jók a Tag-ek?  Hogyan lehet a teszt szövegéből kinyerni a paramétereket?


Letölteni ppt "A tesztelő rendszer RUBY KÖRNYEZETBEN. A Cucumber Aslak Hellesøy készítette az első 1.0.0 verziót ami 2012. június 20-án jelent meg. 1.3.13 a legfrissebb."

Hasonló előadás


Google Hirdetések