Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaKároly Lukács Megváltozta több, mint 10 éve
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?
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.