Your SlideShare is downloading. ×
0
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Contentful Testing at Scotland on Rails 2008
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Contentful Testing at Scotland on Rails 2008

572

Published on

Slides from my "Contentful Testing - Regression Therapy" talk at Scotland on Rails 2008.

Slides from my "Contentful Testing - Regression Therapy" talk at Scotland on Rails 2008.

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Notes and other download media can be found here:

    http://anthonybailey.net/tumblelog/2008/04/08/contentful-slides-from-my-talk-at-scotland-on-etc
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
572
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
9
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • I'm going to talk today about a bunch of issues. But, the heart of the talk concerns testing the content of views generated by a Rails app. I found I had quite a lot to say; and that I’m not enough of a speaker to improbise without missing key points, so I’ve decided to work from a script. So, you can expect me to rattle through plausible sounding material whilst not looking you in the eye, and occasionally losing my place and looking around vacantly as I try to remember what it is I’m actually talking about.
  • Transcript

    • 1. Regression Therapy – Contentful Testing Anthony Bailey http://anthonybailey.net 3 April 2008, Scotland on Rails
    • 2. Teaser
      • The conventional wisdom:
      • # Assert explicitly and exactly what we care about.
      • assert_select(“divs#of_interest”, /my_desires/)
      • My dumb straw man alternative:
      • # Everything should just be exactly like yesterday.
      • assert_equals(File.new(“expected.html”).read, @response.body )
      Regression Therapy – Contentful Testing
    • 3. Setting the scene
      • I won’t try to behave.
      • When I say view content, I mean view content.
      • When I don’t, I mean everything…
      • … even other languages and frameworks.
      Regression Therapy – Contentful Testing
    • 4. Setting the scene: terminology
      • I won’t try to behave
      Regression Therapy – Contentful Testing
    • 5. Setting the scene: scope
      • When I say view content, I mean view content.
        • not the models the views display
        • not the presentation logic they use to display it
        • not the controller logic invoked by interacting with the view
        • not the workflow that the views comprise
        • just the tags
        • (at least for now)
      Regression Therapy – Contentful Testing
    • 6. Setting the scene: scope
      • When I don’t say views, I mean everything.
        • Contentful testing can work in other domains
      Regression Therapy – Contentful Testing
    • 7. Setting the scene: scope
      • Other languages and frameworks
        • Contentful testing doesn’t need Ruby or Rails,
          • used it in a C++ desktop app, a Java/Spring web app
        • But this talk will focus on a Rails plug-in:
          • http://contentful.rubyforge.org/
      Regression Therapy – Contentful Testing
    • 8. Setting the scene: personal
      • The plug-in was born of genuine need
        • but in a small, simple, CRUDdy app.
      Regression Therapy – Contentful Testing
    • 9. Why do we test?
      • To maintain known good behavior and catch accidental bad changes
      • ........................... ! .. ! ..................... ! .........
      • To drive intended changes
      • > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
      • To explore and understand emergent changes
      • ..... !!? ? ? ? ? ? ............ !!? ? ? ? ? ? ........ !!? ? ? ? ? ? .......
      Regression Therapy – Contentful Testing
    • 10. How do Rails devs test the view?
      • Functional test, plus assert_select
      Regression Therapy – Contentful Testing
    • 11. How do Rails devs test the view?
      • Decoupled unit test, plus assert_select
      Regression Therapy – Contentful Testing
    • 12. But views are not very assertive
      • Assertion tests
        • don’t help exploration
        • are great for test-driving,
          • but view content doesn’t get much value from this.
        • have selective coverage
        • are verbose when coverage needs to be high;
          • translation takes time and space
        • are expensive to update when things change
      Regression Therapy – Contentful Testing
    • 13. How much do Rails devs test the view?
      • Not much!
      • "I find that the View tests that RSpec and Zentest provide are fragile and provide dubious value. Rarely do they find bugs and often they break for unimportant reasons. I just don't find them to have a good return on investment.“ – Jay Fields, Thoughtworks.
      • err.the_blog’s groupthink thought similar
      Regression Therapy – Contentful Testing
    • 14. assert_ select Regression Therapy – Contentful Testing
    • 15. Past life regression
      • Regression tests make some things a bit better
        • Any one test is simple to express
          • “ the expected output is exactly as in this file”
        • Expected output needs no translation
          • - it’s just a straight copy
      • But they make other things much worse
        • Very expensive to maintain, because
          • each test is brittle, breaking on minor changes
          • a single production code change can break many tests
      Regression Therapy – Contentful Testing
    • 16. Regression therapy
      • One step back, two steps forward
      • Dampen the noise
        • diff the DOM, not the text - normalize
        • DRY up tested content
      • Smooth the workflow
        • easily create tests
        • conveniently inspect changes
        • quickly accept changes
        • … and these should all work well in batch
      Regression Therapy – Contentful Testing
    • 17. Contentful plug-in
      • % ruby script/plugin install svn://rubyforge.org/var/svn/contentful
      Regression Therapy – Contentful Testing
    • 18. Regression Therapy – Contentful Testing
    • 19. Regression Therapy – Contentful Testing
    • 20. Regression Therapy – Contentful Testing
    • 21. Regression Therapy – Contentful Testing
    • 22. Regression Therapy – Contentful Testing
    • 23. Regression Therapy – Contentful Testing
    • 24. Regression Therapy – Contentful Testing
    • 25. Regression Therapy – Contentful Testing
    • 26. Regression Therapy – Contentful Testing
    • 27. Regression Therapy – Contentful Testing
    • 28. Regression Therapy – Contentful Testing
    • 29. Regression Therapy – Contentful Testing
    • 30. Regression Therapy – Contentful Testing
    • 31. Regression Therapy – Contentful Testing
    • 32. Other paths to contentfulness
      • That was just one implementation
        • Really, I want to sell the contentful testing pattern more than my particular Rails plug-in
      • Capture a normalized from of entire output
      • and, automate new/test/review/accept somehow
          • others Rails devs might prefer different Rake tasks
          • other devs might want something other than Rake
          • maybe use some IDE other than the command-line
      Regression Therapy – Contentful Testing
    • 33. Pushing contentful testing
      • Leveraging the coverage/upkeep trade-off
        • I pay the tax on dense coverage to get value from serendipitous discovery of changes
      • Testing more than the view content
        • cover for exploration, spiking, and follow-on
      • Bonus value in regular assertion tests
        • If you’re assertion testing controllers anyway, an extra assert_contentful is almost free
        • I (guiltily) trade decoupling for convenience
      Regression Therapy – Contentful Testing
    • 34. An obvious contentful usecase
      • Use the machinery as a temporary testing vise
          • (term due to Michael Feathers)
        • Pin down all view content during a big refactor
          • extracting partials and helpers
          • refactoring form builders
          • changing template system
      • CONTENTFUL_AUTO = true
        • assert_contentful in every functional test
      Regression Therapy – Contentful Testing
    • 35. http://contentful.rubyforge.org Regression Therapy – Contentful Testing

    ×