Acceptanstesting
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Acceptanstesting

on

  • 644 views

Acceptance testning Primer for Cint 2009 in Swedish

Acceptance testning Primer for Cint 2009 in Swedish

Statistics

Views

Total Views
644
Views on SlideShare
643
Embed Views
1

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Acceptanstesting Presentation Transcript

  • 1. Acceptanstesting
    Av Kristoffer Roupé
    2009
  • 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 existens
  • Vem är det till för?
    Ok, men det angår väl ändå inte mig…?!
  • 7. Produktutveckling
  • 8. Utveckling
  • 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 "([^"]*)" 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 w+$/do |step_arg|
    User.find_by_username /(w+)$/.match(step_arg)[0]
    end
    Then /^(user w+) should be friends with (user w+)$/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