Acceptanstesting
Upcoming SlideShare
Loading in...5
×
 

Acceptanstesting

on

  • 621 views

Acceptance testning Primer for Cint 2009 in Swedish

Acceptance testning Primer for Cint 2009 in Swedish

Statistics

Views

Total Views
621
Slideshare-icon Views on SlideShare
620
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 Acceptanstesting Presentation Transcript

    • Acceptanstesting
      Av 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 existens
    • Vem ä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 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 "([^"]*)" 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 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
    • 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
    • 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
    • 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