Software Testing
This was done by Ben Burkert (benburkert.com)
2968 views | comments | 7 favorites | 298 downloads | 1 embeds (Stats)
More Info
This slideshow is Public
Total Views: 2968 on Slideshare: 2966 from embeds: 2
Most viewed embeds (Top 5):
More
Slideshow Transcript
- Slide 1: Achieving Testing
Nirvana
- Slide 2: what is testing nirvana?
you want to write tests
know what to test, what not to test
confidence in your code
more productive writing tests before code,
then just code alone
- Slide 3: what is testing nirvana?
[ stolen without permission or regard from: ]
http://www.ayende.com/Blog/archive/6905.aspx
- Slide 4: 1 Unit Test
st
Feelings of discomfort
Strange sense of obviousness
These symptoms will pass
[ paraphrased from http://behavior-driven.org/Introduction ]
- Slide 5: 1..* Unit Tests
↑ Comfort, Speed, Ease↑
↓Revisions, Confusion ↓
↑↑ Clarity, Productivity, Knowledge, Confidence ↑↑
[ paraphrased from http://behavior-driven.org/Introduction ]
- Slide 6: 1 Enlightenment
st
congratulations, TDD status achieved!
Tests answer “How”
access to new tools for: testing, refactoring, automation
[ paraphrased from http://behavior-driven.org/Introduction ]
- Slide 7: UnitTest.is_a? Documentation
¿wtf?
¡ftw!
[ paraphrased from http://behavior-driven.org/Introduction ]
- Slide 8: 2
nd
Enlightenment
TDD is about Design
Tests answer “What”
no longer want all those design tools
[ paraphrased from http://behavior-driven.org/Introduction ]
- Slide 9: assert_false UnitTest.brittle?
what about mocks?
[ paraphrased from http://behavior-driven.org/Introduction ]
- Slide 10: assert_false UnitTest.brittle?
[ paraphrased from http://behavior-driven.org/Introduction ]
- Slide 11: 3 Enlightenment
rd
you are now BDD worthy
tests are henceforth specs
test in a framework, spec in a DSL
[ paraphrased from http://behavior-driven.org/Introduction ]
- Slide 12: Specs.should_not be_brittle
[ paraphrased from http://behavior-driven.org/Introduction ]
- Slide 13: Testing
‣ *Unit test runner (JUnit, NUnit)
‣ code coverage (rcov, NCov)
‣ test augmenter (jester, pester, heckle)
‣ high level testing (fit, story)
Refactoring
‣ IDE plugin (anything by JetBrians)
‣ code analyzer (fxCop, flog, saikuro)
‣ Smalltalk Refactoring Browser
Automation
‣ CI tools (cruisecontrol*)
‣ continuous test runner (autotest)
‣ continuous code metric (autometric)
- Slide 14: Autometric
http://benburkert.com/assets/2007/11/9/autometric.mov
- Slide 15: Story Tests
Story: simple addition
As an accountant
I want to add numbers Story
So that I can count beans As a [role]
Scenario: add one plus one I want to [do some action]
Given an addend of 1
And an addend of 1 So that [business value]
When the addends are added
Then the sum should be 2
And the corks should be popped Scenario
Given [initial state]
Scenario: add two plus five
Given an addend of 2 When [action]
And an addend of 5
When the addends are added
Then [result]
Then the sum should be 7
[ stolen without permission or regard from: ]
http://blog.davidchelimsky.net/articles/2007/10/25/plain-text-stories-part-iii
http://peepcode.com/products/rspec-user-stories
- Slide 16: Story Tests
#google_bar
3 boxes { .container
#search
- Slide 17: Story Tests
Story: google's homepage
As a gmail user
I want visit google's homepage
So that I can search the web or check my gmail
Scenario: The google bar has a link to gmail when I am logged in
Given there is a gmail user ben.burkert@gmail.com
And they are logged into gmail
When they view the google homepage
Then they should see the google_bar box
And they should see the user's email_address within the google_bar box
And they should see a Gmail link within the google_bar box
Scenario: The search box allows the user to search the net
Given there is a gmail user ben.burkert@gmail.com
When they view the google homepage
Then they should see a container box
And they should see the search box within a container box
And they should see a \"Google Search\" button within the search box
And they should see a \"I'm feeling lucky\" button within the search box