SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Acceptanstesting Av Kristoffer Roupé 2009
Vilket syfte fyller det? Varför ska vi hålla på med sånt där trams?
[object Object]
Ö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 existens,[object Object]
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 verktyg Cucumber Härstammar ifrån Beteende Driven Design Given/When/Then syntax Kriterier definieras i klarspråk FIT Uppfunnet av wiki-mannenWardCummingham Tabellformat Kriterier definieras i form av tabeller Twist Thoughtworks nya tool, mestadels för web-ui testning Engelska-liknande konstruktioner Kriterier definieras med hjälp av fördefinierade ord Hemmabyggen Uppfinns och skapas för det behovet man har Ofta i något domänspecifikt språk
Härstammar ifrån BDD Har egenskaper (features) -> stories Har scenarion -> acceptanssteg Scenarion 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 Gherkin Cucumber förstår i skrivande stund 37 olika språk Ett 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 topics When I search for "biology"  Then I should see the following courses:  	| Course code 	|  	| A001 	|  	| B205 		|
Ett dag i en egenskaps livscykel Det 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 tpope’spickler. 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 tpope’spickler och levererar egenskapen i pivotaltracker.
Om implementationeninte accepteras… Meddelas alla utvecklare att något inte står rätt till och vilket accptanssteg som fallerat.
En liten summering… Pickler- Ett tool för att managerastories i PivotalTracker Stories skrivna med som features, med  Given/When/Then Pickler– Används för att leverera en feature som blivit godkänd till pivotaltracker! Tolkar stories skriva i Gherkin och exekverar acceptansteg Byggservern 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 eftertraktar Samt för vem detta är eftertraktat
Övning: Egenskap Ta 5min med personen till vänsterom dig ochförsökskriva1avdessapåformen In order to…/As … / I want … (/ So that …) CPX: Implement Regions in Australia CAT: Avoid oversampling
Scenarion Beskrivs av Given/When/Then Given <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 & But Scenario: 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 Givens Given 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/ Then Scenario: eat 5 out of 12  Given there are 12 cucumbers  When I eat 5 cucumbers  Then I should have 7 cucumbers Scenario: 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 stegdefinitioner Exempel: 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.    end end
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 code Ok, nu har jag en hel del steg och grejor, men det börjar se rätt grötigt ut. Vad gör jag nu?
Transformationer Man 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.rb Transform /^user +$/do |step_arg|    User.find_by_username /(+)$/.match(step_arg)[0]  end Then /^(user +) should be friends with (user +)$/do |user, friend|    user.shouldbe_friends_with(friend)  end
Transformationsstabeller Scenario: 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: Scenario Ta 5min med personensom du arbetade med ochförsökskriva2scenarionåt “er” egenskappåformen: Given /When / Then CPX: Implement Regions in Australia CAT: Avoid oversampling
Kommunikation via test Men 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å?
Taggning Ett bra sätt att organisera egenskaper och scenarion  En egenskap eller scenario kan ha så många taggar som ”behövligt” Du kan använda --tagsför att köra (eller låta bli att köra) saker cucumber--tags@billing cucumber--tags~@billing Du kan använda taggar för att länka in t.ex. dokument Ett 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

Weitere ähnliche Inhalte

Empfohlen

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Acceptanstesting

  • 2. Vilket syfte fyller det? Varför ska vi hålla på med sånt där trams?
  • 3.
  • 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.
  • 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 verktyg Cucumber Härstammar ifrån Beteende Driven Design Given/When/Then syntax Kriterier definieras i klarspråk FIT Uppfunnet av wiki-mannenWardCummingham Tabellformat Kriterier definieras i form av tabeller Twist Thoughtworks nya tool, mestadels för web-ui testning Engelska-liknande konstruktioner Kriterier definieras med hjälp av fördefinierade ord Hemmabyggen Uppfinns och skapas för det behovet man har Ofta i något domänspecifikt språk
  • 12. Härstammar ifrån BDD Har egenskaper (features) -> stories Har scenarion -> acceptanssteg Scenarion 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 Gherkin Cucumber förstår i skrivande stund 37 olika språk Ett 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 topics When I search for "biology" Then I should see the following courses: | Course code | | A001 | | B205 |
  • 14. Ett dag i en egenskaps livscykel Det 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 tpope’spickler. 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 tpope’spickler och levererar egenskapen i pivotaltracker.
  • 20. Om implementationeninte accepteras… Meddelas alla utvecklare att något inte står rätt till och vilket accptanssteg som fallerat.
  • 21. En liten summering… Pickler- Ett tool för att managerastories i PivotalTracker Stories skrivna med som features, med Given/When/Then Pickler– Används för att leverera en feature som blivit godkänd till pivotaltracker! Tolkar stories skriva i Gherkin och exekverar acceptansteg Byggservern 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 eftertraktar Samt för vem detta är eftertraktat
  • 24. Övning: Egenskap Ta 5min med personen till vänsterom dig ochförsökskriva1avdessapåformen In order to…/As … / I want … (/ So that …) CPX: Implement Regions in Australia CAT: Avoid oversampling
  • 25. Scenarion Beskrivs av Given/When/Then Given <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 & But Scenario: 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 Givens Given 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/ Then Scenario: eat 5 out of 12 Given there are 12 cucumbers When I eat 5 cucumbers Then I should have 7 cucumbers Scenario: 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 stegdefinitioner Exempel: 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. end end
  • 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 code Ok, 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. Transformationer Man 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.rb Transform /^user +$/do |step_arg| User.find_by_username /(+)$/.match(step_arg)[0] end Then /^(user +) should be friends with (user +)$/do |user, friend| user.shouldbe_friends_with(friend) end
  • 33. Transformationsstabeller Scenario: 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: Scenario Ta 5min med personensom du arbetade med ochförsökskriva2scenarionåt “er” egenskappåformen: Given /When / Then CPX: Implement Regions in Australia CAT: Avoid oversampling
  • 35. Kommunikation via test Men 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. Taggning Ett bra sätt att organisera egenskaper och scenarion En egenskap eller scenario kan ha så många taggar som ”behövligt” Du kan använda --tagsför att köra (eller låta bli att köra) saker cucumber--tags@billing cucumber--tags~@billing Du kan använda taggar för att länka in t.ex. dokument Ett 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. Tagglogik Nä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, @important OR: cucumber--tags@billing--tags@important
  • 38. Begränsa körning med taggar Om 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