際際滷

際際滷Share a Scribd company logo
AcceptanstestingAv Kristoffer Roup辿2009
Vilket syfte fyller det?Varf旦r ska vi h奪lla p奪 med s奪nt d辰r trams?
S辰kerhetsst辰lla att r辰tt v辰rde levereras till slutkund
ka f旦rst奪elsen f旦r vad som ska levereras
Hj辰lpa underl辰tta f旦rst奪elsen f旦r vad som har levererats
Enkelt kunna p奪visa buggar och bevisa deras existensVem 辰r det till f旦r?Ok, men det ang奪r v辰l 辰nd奪 inte mig?!
Produktutveckling
Utveckling
Vem 辰r det till f旦r?Svar: Alla p奪verkade av n奪gon typ av leverans!
Vilka verktyg finns d奪?Ok, om jag nu ska ta hand om n奪got m奪 det f#@n va smidigt!
Tillg辰ngliga verktygCucumberH辰rstammar ifr奪n Beteende Driven DesignGiven/When/Then syntaxKriterier definieras i klarspr奪kFITUppfunnet av wiki-mannenWardCumminghamTabellformatKriterier definieras i form av tabellerTwistThoughtworks nya tool, mestadels f旦r web-ui testningEngelska-liknande konstruktionerKriterier definieras med hj辰lp av f旦rdefinierade ordHemmabyggenUppfinns och skapas f旦r det behovet man harOfta i n奪got dom辰nspecifikt spr奪k
H辰rstammar ifr奪n BDDHar egenskaper (features) -> storiesHar scenarion -> acceptansstegScenarion skrivs p奪 formen: 	Givet <n奪got tillst奪nd>	N辰r <n奪got sker>	S奪 <f旦rs辰kra att>
Spr奪ket Cucumber f旦rst奪r heter GherkinCucumber f旦rst奪r i skrivande stund 37 olika spr奪kEtt test kan se ut s奪h辰r:Feature: Search courses In order to ensure better utilization of courses Potential students should be able to search for courses Scenario: Search by topic Given there are 240 courses which do not have the topic "biology" And there are 2 courses A001, B205 that each have "biology" as one of the topicsWhen I search for "biology" Then I should see the following courses: 	| Course code 	| 	| A001 	| 	| B205 		|
Ett dag i en egenskaps livscykelDet var en g奪ng f旦r l辰nge sedan
Naturligtvis skriver jag in min nya egenskap i mitt favoritverktyg pivotaltracker!
Egenskapen kommer med i planeringen och en utvecklare laddar ner den ifr奪n pivotaltracker med hj辰lp av tpopespickler.Ett tool f旦r att managera saker i pivotaltracker.
Utvecklaren definierar acceptansstegen genom att implementera dem i s.k. stegdefinitioner.D辰refter b旦rjar utvecklaren implementera egenskapen.
N辰r acceptansstegen godk辰nns av Cucumber p奪 utvecklarens maskin.Skickar utvecklaren koden till byggservern. F旦r ytterligare verifikation.
Om implementationen accepteras, anv辰nder Byggservern tpopespickler och levererar egenskapen i pivotaltracker.
Om implementationeninte accepterasMeddelas alla utvecklare att n奪got inte st奪r r辰tt till och vilket accptanssteg som fallerat.
En liten summeringPickler- Ett tool f旦r att managerastories i PivotalTrackerStories skrivna med som features, med Given/When/ThenPickler Anv辰nds f旦r att leverera en feature som blivit godk辰nd till pivotaltracker!Tolkar stories skriva i Gherkin och exekverar acceptanstegByggservern k旦r alla acceptanstest vid varje integrationsbygge. Om n奪got test inte accepteras stoppas bygget tills n奪gon fixat det!
Hur g旦r jag d奪?Ok, om jag nu ska skriva de h辰r egenskaperna, s奪 m奪ste jag ju veta vad jag har att jobba med!
Egenskap (Feature)B旦rja med att beskriva 旦nskat v辰rde!Ett bra s辰tt att skriva egenskaper 辰r:In order to <gainsomevalue>As <who am I?>I want<something> / (So that <stakeholder X is satisfied>)D奪 f奪r man det viktigaste f旦rst v辰rdet!D辰refter vad man eftertraktarSamt f旦r vem detta 辰r eftertraktat
vning: EgenskapTa 5min med personen till v辰nsterom dig ochf旦rs旦kskriva1avdessap奪formenIn order to/As  / I want  (/ So that )CPX: Implement Regions in AustraliaCAT: Avoid oversampling
ScenarionBeskrivs av Given/When/ThenGiven <a context>When <an event happens>Then <an outcomeoccurs>Andra ord som kan vara anv辰ndabara 辰r:And & But, ger l辰sbarhet ist辰llet f旦r att repetera n奪got av stegen.
And & ButScenario: Multiple Givens     Given one thing     Given an other thing     Given yet an other thing     When I open my eyes     Then I see something     Then I don't see something else Scenario: Multiple GivensGiven one thing       And an other thing       And yet an other thing     When I open my eyes     Then I see something       But I don't see something else
Abstrakt Scenario (Scenario Outline)Adderar exempel till stegen i form av tabeller.Fortfarande p奪 formen Given/ When/ ThenScenario: eat 5 out of 12 Given there are 12 cucumbers When I eat 5 cucumbers Then I should have 7 cucumbersScenario: eat 5 out of 20 Given there are 20 cucumbers When I eat 5 cucumbers Then I should have 15 cucumbers Scenario Outline: eating Given there are <start> cucumbers When I eat <eat> cucumbers Then I should have <left> cucumbers Examples: | start 	| eat 	| left 	| | 12 	| 5 	| 7 	| | 20 	| 5 	| 15 	|
Lite mer avancerade stegdefinitionerExempel:S辰g att jag t.ex. har 3 olika anv辰ndare som jag vill exercera i min egenskap. Hur g旦r jag det d奪?T辰nk om jag h奪ller p奪 med en blogg d奪 och vill skapa en post med l奪nga textstr辰ngar
Flerraders stegargument (Multi step arguments)Given the followingpeopleexist:   | name  	| email           	| phone 	|   | Aslak 	| aslak@email.com 	| 123   	|   | Joe   	| joe@email.com   	| 234   	|   | Bryan 	| bryan@email.org 	| 456 	| Given /the followingpeopleexist:/ do |people_table|   people_table.hashes.eachdo |hash|     # The first time the +hash+ willcontain:       #   {'name' => 'Aslak', 'email' => 'aslak@email.com', 'phone' => '123'}        # The second time:       #   {'name' => 'Joe', 'email' => 'joe@email.com', 'phone' => '234'}       # etc.   endend
Flerradersstr辰ngar(Multiline strings)Given a blog post named "Random" with Markdown body     """     Some Title, Eh?     ==============     Here is the first paragraph of my blog post. Loremipsum dolor sit amet,   consecteturadipiscingelit.     """Given /^a blog post named "([^amp;quot;]*)" with Markdown body$/ do |title, markdown|   Post.create!(:title => title, :body => markdown) end
DRY:ing up your codeOk, nu har jag en hel del steg och grejor, men det b旦rjar se r辰tt gr旦tigt ut. Vad g旦r jag nu?
TransformationerMan anv辰nder transformmetoder f旦r att registrera ett regexp tillsammans med ett block. Transformen kommer k旦ras innan registrerade Regexp grupper, vilket g旦r att Transformen k旦rs innan sj辰lva Step-blocket# features/step_definitions/user_steps.rbTransform /^user +$/do |step_arg|   User.find_by_username /(+)$/.match(step_arg)[0] endThen /^(user +) should be friends with (user +)$/do |user, friend|   user.shouldbe_friends_with(friend) end
TransformationsstabellerScenario: setting up via table   Given ...   When ...   Then I should have       | name  	| age 	|       | corey 	| 36  	|Transform /^table:name,age$/do |table|   table.hashes.map { |hash| hash[:name]   }.map { |name| Person.find_by_name(name)  } end
vning: ScenarioTa 5min med personensom du arbetade med ochf旦rs旦kskriva2scenarion奪t er egenskapp奪formen:Given /When / ThenCPX: Implement Regions in AustraliaCAT: Avoid oversampling
Kommunikation via testMen om produkt辰garen skriver alla scenarion innan oss, och det 辰r integrerat med bygget betyder det att bygget kommer va r旦tt tills vi 辰r klara d奪?
TaggningEtt bra s辰tt att organisera egenskaper och scenarion En egenskap eller scenario kan ha s奪 m奪nga taggar som beh旦vligtDu kan anv辰nda --tagsf旦r att k旦ra (eller l奪ta bli att k旦ra) sakercucumber--tags@billingcucumber--tags~@billingDu kan anv辰nda taggar f旦r att l辰nka in t.ex. dokumentEtt annat s辰tt 辰r att anv辰nda det i ditt work flow f旦r att f旦rmedla saker till dina kollegor, t.ex. work in progress@wip	Feature: Index projects

More Related Content

Acceptanstesting

  • 2. Vilket syfte fyller det?Varf旦r ska vi h奪lla p奪 med s奪nt d辰r trams?
  • 3. S辰kerhetsst辰lla att r辰tt v辰rde levereras till slutkund
  • 4. ka f旦rst奪elsen f旦r vad som ska levereras
  • 5. Hj辰lpa underl辰tta f旦rst奪elsen f旦r vad som har levererats
  • 6. Enkelt kunna p奪visa buggar och bevisa deras existensVem 辰r det till f旦r?Ok, men det ang奪r v辰l 辰nd奪 inte mig?!
  • 9. Vem 辰r det till f旦r?Svar: Alla p奪verkade av n奪gon typ av leverans!
  • 10. Vilka verktyg finns d奪?Ok, om jag nu ska ta hand om n奪got m奪 det f#@n va smidigt!
  • 11. Tillg辰ngliga verktygCucumberH辰rstammar ifr奪n Beteende Driven DesignGiven/When/Then syntaxKriterier definieras i klarspr奪kFITUppfunnet av wiki-mannenWardCumminghamTabellformatKriterier definieras i form av tabellerTwistThoughtworks nya tool, mestadels f旦r web-ui testningEngelska-liknande konstruktionerKriterier definieras med hj辰lp av f旦rdefinierade ordHemmabyggenUppfinns och skapas f旦r det behovet man harOfta i n奪got dom辰nspecifikt spr奪k
  • 12. H辰rstammar ifr奪n BDDHar egenskaper (features) -> storiesHar scenarion -> acceptansstegScenarion skrivs p奪 formen: Givet <n奪got tillst奪nd> N辰r <n奪got sker> S奪 <f旦rs辰kra att>
  • 13. Spr奪ket Cucumber f旦rst奪r heter GherkinCucumber f旦rst奪r i skrivande stund 37 olika spr奪kEtt test kan se ut s奪h辰r:Feature: Search courses In order to ensure better utilization of courses Potential students should be able to search for courses Scenario: Search by topic Given there are 240 courses which do not have the topic "biology" And there are 2 courses A001, B205 that each have "biology" as one of the topicsWhen I search for "biology" Then I should see the following courses: | Course code | | A001 | | B205 |
  • 14. Ett dag i en egenskaps livscykelDet var en g奪ng f旦r l辰nge sedan
  • 15. Naturligtvis skriver jag in min nya egenskap i mitt favoritverktyg pivotaltracker!
  • 16. Egenskapen kommer med i planeringen och en utvecklare laddar ner den ifr奪n pivotaltracker med hj辰lp av tpopespickler.Ett tool f旦r att managera saker i pivotaltracker.
  • 17. Utvecklaren definierar acceptansstegen genom att implementera dem i s.k. stegdefinitioner.D辰refter b旦rjar utvecklaren implementera egenskapen.
  • 18. N辰r acceptansstegen godk辰nns av Cucumber p奪 utvecklarens maskin.Skickar utvecklaren koden till byggservern. F旦r ytterligare verifikation.
  • 19. Om implementationen accepteras, anv辰nder Byggservern tpopespickler och levererar egenskapen i pivotaltracker.
  • 20. Om implementationeninte accepterasMeddelas alla utvecklare att n奪got inte st奪r r辰tt till och vilket accptanssteg som fallerat.
  • 21. En liten summeringPickler- Ett tool f旦r att managerastories i PivotalTrackerStories skrivna med som features, med Given/When/ThenPickler Anv辰nds f旦r att leverera en feature som blivit godk辰nd till pivotaltracker!Tolkar stories skriva i Gherkin och exekverar acceptanstegByggservern k旦r alla acceptanstest vid varje integrationsbygge. Om n奪got test inte accepteras stoppas bygget tills n奪gon fixat det!
  • 22. Hur g旦r jag d奪?Ok, om jag nu ska skriva de h辰r egenskaperna, s奪 m奪ste jag ju veta vad jag har att jobba med!
  • 23. Egenskap (Feature)B旦rja med att beskriva 旦nskat v辰rde!Ett bra s辰tt att skriva egenskaper 辰r:In order to <gainsomevalue>As <who am I?>I want<something> / (So that <stakeholder X is satisfied>)D奪 f奪r man det viktigaste f旦rst v辰rdet!D辰refter vad man eftertraktarSamt f旦r vem detta 辰r eftertraktat
  • 24. vning: EgenskapTa 5min med personen till v辰nsterom dig ochf旦rs旦kskriva1avdessap奪formenIn order to/As / I want (/ So that )CPX: Implement Regions in AustraliaCAT: Avoid oversampling
  • 25. ScenarionBeskrivs av Given/When/ThenGiven <a context>When <an event happens>Then <an outcomeoccurs>Andra ord som kan vara anv辰ndabara 辰r:And & But, ger l辰sbarhet ist辰llet f旦r att repetera n奪got av stegen.
  • 26. And & ButScenario: Multiple Givens Given one thing Given an other thing Given yet an other thing When I open my eyes Then I see something Then I don't see something else Scenario: Multiple GivensGiven one thing And an other thing And yet an other thing When I open my eyes Then I see something But I don't see something else
  • 27. Abstrakt Scenario (Scenario Outline)Adderar exempel till stegen i form av tabeller.Fortfarande p奪 formen Given/ When/ ThenScenario: eat 5 out of 12 Given there are 12 cucumbers When I eat 5 cucumbers Then I should have 7 cucumbersScenario: eat 5 out of 20 Given there are 20 cucumbers When I eat 5 cucumbers Then I should have 15 cucumbers Scenario Outline: eating Given there are <start> cucumbers When I eat <eat> cucumbers Then I should have <left> cucumbers Examples: | start | eat | left | | 12 | 5 | 7 | | 20 | 5 | 15 |
  • 28. Lite mer avancerade stegdefinitionerExempel:S辰g att jag t.ex. har 3 olika anv辰ndare som jag vill exercera i min egenskap. Hur g旦r jag det d奪?T辰nk om jag h奪ller p奪 med en blogg d奪 och vill skapa en post med l奪nga textstr辰ngar
  • 29. Flerraders stegargument (Multi step arguments)Given the followingpeopleexist: | name | email | phone | | Aslak | aslak@email.com | 123 | | Joe | joe@email.com | 234 | | Bryan | bryan@email.org | 456 | Given /the followingpeopleexist:/ do |people_table| people_table.hashes.eachdo |hash| # The first time the +hash+ willcontain: # {'name' => 'Aslak', 'email' => 'aslak@email.com', 'phone' => '123'} # The second time: # {'name' => 'Joe', 'email' => 'joe@email.com', 'phone' => '234'} # etc. endend
  • 30. Flerradersstr辰ngar(Multiline strings)Given a blog post named "Random" with Markdown body """ Some Title, Eh? ============== Here is the first paragraph of my blog post. Loremipsum dolor sit amet, consecteturadipiscingelit. """Given /^a blog post named "([^amp;quot;]*)" with Markdown body$/ do |title, markdown| Post.create!(:title => title, :body => markdown) end
  • 31. DRY:ing up your codeOk, nu har jag en hel del steg och grejor, men det b旦rjar se r辰tt gr旦tigt ut. Vad g旦r jag nu?
  • 32. TransformationerMan anv辰nder transformmetoder f旦r att registrera ett regexp tillsammans med ett block. Transformen kommer k旦ras innan registrerade Regexp grupper, vilket g旦r att Transformen k旦rs innan sj辰lva Step-blocket# features/step_definitions/user_steps.rbTransform /^user +$/do |step_arg| User.find_by_username /(+)$/.match(step_arg)[0] endThen /^(user +) should be friends with (user +)$/do |user, friend| user.shouldbe_friends_with(friend) end
  • 33. TransformationsstabellerScenario: setting up via table Given ... When ... Then I should have | name | age | | corey | 36 |Transform /^table:name,age$/do |table| table.hashes.map { |hash| hash[:name] }.map { |name| Person.find_by_name(name) } end
  • 34. vning: ScenarioTa 5min med personensom du arbetade med ochf旦rs旦kskriva2scenarion奪t er egenskapp奪formen:Given /When / ThenCPX: Implement Regions in AustraliaCAT: Avoid oversampling
  • 35. Kommunikation via testMen om produkt辰garen skriver alla scenarion innan oss, och det 辰r integrerat med bygget betyder det att bygget kommer va r旦tt tills vi 辰r klara d奪?
  • 36. TaggningEtt bra s辰tt att organisera egenskaper och scenarion En egenskap eller scenario kan ha s奪 m奪nga taggar som beh旦vligtDu kan anv辰nda --tagsf旦r att k旦ra (eller l奪ta bli att k旦ra) sakercucumber--tags@billingcucumber--tags~@billingDu kan anv辰nda taggar f旦r att l辰nka in t.ex. dokumentEtt annat s辰tt 辰r att anv辰nda det i ditt work flow f旦r att f旦rmedla saker till dina kollegor, t.ex. work in progress@wip Feature: Index projects
  • 37. TagglogikN辰r du ska k旦ra t.ex. ett par scenarion kan du v辰lja mellan att och:a eller ellra ihop dem genom:AND: cucumber--tags@billing, @importantOR: cucumber--tags@billing--tags@important
  • 38. Begr辰nsa k旦rning med taggarOm man f旦ljer Kanban s奪 kanske man vill begr辰nsa s辰g, hur m奪nga saker som g旦rs 奪t g奪ngen. D奪 kan man anv辰nda --wip-flaggan och skriva n奪got liknande:cucumber--tags@wip:3