unit tests arent enough
TRANSCRIPT
![Page 1: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/1.jpg)
Unit Tests Aren’t Enoughand your QA guy can’t regression test for you...
![Page 2: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/2.jpg)
Will this test save you?
def test_create_new_widget post :create_widget assert_response :successend
![Page 3: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/3.jpg)
With this code?
# view:<%= form_for :widget %> <%= submit_tag “Create” %><% end %>
# controller:def create; puts “doing nothing”; end
![Page 4: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/4.jpg)
The Individual Pieces Work...
![Page 5: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/5.jpg)
... but your application does not!
![Page 6: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/6.jpg)
What do we do?
![Page 7: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/7.jpg)
QA Guy!
![Page 8: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/8.jpg)
Benefits
![Page 9: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/9.jpg)
Would he find the bug from before?
![Page 10: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/10.jpg)
What if the bug came from a refactoring?
![Page 11: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/11.jpg)
YOU are ultimately responsible for your app
![Page 12: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/12.jpg)
Let’s Automate
![Page 13: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/13.jpg)
Hello, Selenium!
![Page 14: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/14.jpg)
The Code
![Page 15: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/15.jpg)
The API
![Page 16: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/16.jpg)
Programmers still do the testing!
![Page 17: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/17.jpg)
Hello, Cucumber!
![Page 18: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/18.jpg)
QA Can Write This
Scenario: Searching on Google Given I am on the homepage When I fill in “q” with “cukes” And I press “Google Search” Then I should see “cukes.info”
![Page 19: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/19.jpg)
Scenario: Searching on Google
![Page 20: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/20.jpg)
Given I am on the homepage
![Page 21: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/21.jpg)
When I fill in “q” with “cukes”
![Page 22: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/22.jpg)
And I press “Google Search”
![Page 23: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/23.jpg)
Then I should see “cukes.info”
![Page 24: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/24.jpg)
The Output
Scenario: Searching on Google # features/google_search.feature:6 Given I am on the homepage # features/step_definitions/webrat_steps.rb:6 When I fill in "q" with "cukes" # features/step_definitions/webrat_steps.rb:29 And I press "Google Search" # features/step_definitions/webrat_steps.rb:17 Then I should see "cukes.info" # features/step_definitions/webrat_steps.rb:121
1 scenario (1 passed)4 steps (4 passed)0m10.206s
![Page 25: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/25.jpg)
Webrathttp://gitrdoc.com/brynary/webrat/tree/master
![Page 26: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/26.jpg)
Webrat Caveats
• Won’t detect elements hidden by a class
• Won’t click things that aren’t links or buttons (usually not a big deal)
![Page 27: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/27.jpg)
Beyond Webrat
When /^I search for “([^”])”$/ do |s| When %Q|I fill in “q” with “#{s}”| And %Q|I press “Google Search”|end
![Page 28: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/28.jpg)
Cucumber Structure
features/*.featurefeatures/step_definitions/*_steps.rbfeatures/support/*.rb
![Page 29: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/29.jpg)
Cuke-Talkerhttp://github.com/trotter/cuke-talker
![Page 30: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/30.jpg)
![Page 31: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/31.jpg)
Commands
• Given, When, Then, And
• !
• define step
• run feature
• show history
• show step definitions
![Page 32: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/32.jpg)
Resources
• http://cukes.info
• http://gitrdoc.com/brynary/webrat/tree/master
• http://github.com/trotter/cuke-talker
![Page 33: Unit Tests Arent Enough](https://reader034.vdocuments.mx/reader034/viewer/2022052117/5457e64aaf795963388b564f/html5/thumbnails/33.jpg)
Credits
http://www.flickr.com/photos/jflinchbaugh/3967895188/http://www.flickr.com/photos/vizzzual-dot-com/2738586453/http://www.flickr.com/photos/frangipani_photograph/3137183488/http://www.flickr.com/photos/chrismoncus/1366654132/