[rspec-users] When to use BDD/TDD w/ external libraries

David Chelimsky dchelimsky at gmail.com
Fri Jun 8 13:23:52 EDT 2007


On 6/8/07, Scott Taylor <mailing_lists at railsnewbie.com> wrote:
>
> On Jun 8, 2007, at 1:15 PM, David Chelimsky wrote:
>
> > On 6/8/07, Jonathan Linowes <jonathan at parkerhill.com> wrote:
> >> most plugins come with their own rails tests
> >>
> >> i've converted one by hand to rspec (restful_authentication) because
> >> - its functionality is integral to my app
> >> - its really a generator so the code ends up in my app
> >> - there's a good chance i'll be making custom changes to it as my app
> >> develops
> >>
> >> perhaps a tool that automatically converts rails tests to rspecs
> >> would be useful?
> >
> > We had one of those a while back. It was pretty good, but not perfect.
> > It's very complex to get right and cover all the possibilities and
> > it's something that we will likely not build as part of rspec. That
> > said, if somebody else wanted to create such a thing, I'm sure you'd
> > make a lot of people happy.
>
>
> Wow.  That code must still be around somewhere in subversion (any
> hints as to it's last release?)

hint: svn log

>
> Scott
>
>
>
> >
> >> obviously thats not TDD but it would give you the code coverage
> >> and provide a starting point if you make custom changes to the plugin
> >>
> >>
> >> On Jun 8, 2007, at 9:48 AM, David Chelimsky wrote:
> >>
> >>> On 6/8/07, aslak hellesoy <aslak.hellesoy at gmail.com> wrote:
> >>>> On 6/8/07, Scott Taylor <mailing_lists at railsnewbie.com> wrote:
> >>>>>
> >>>>> Test First Development is great...But should you use it when
> >>>>> you are
> >>>>> adding classes/methods on to external library that doesn't have an
> >>>>> extensive test suite?  I noticed that the rspec plugin for
> >>>>> autotest
> >>>>> has no specs.
> >>>>>
> >>>>> David Chemlinsky said something to the list a while back that has
> >>>>> been stewing in my subconscious - that you develop software
> >>>>> differently using Test First Development/BDD.  I noticed that it
> >>>>
> >>>> David (Chelimsky is his last name) and Ryan Davis paired on the
> >>>> RSpec
> >>>> plugin for Autotest at Railsconf, and I suspect that "they didn't
> >>>> have
> >>>> time" to write specs for it ;-)
> >>>>
> >>>> Look at the number of bugs that have been reported (and fixed)
> >>>> against
> >>>> RSpec's Autotest plugin in the previous weeks.
> >>>>
> >>>> Maybe there is a relationship between the number of bugs and the
> >>>> lack
> >>>> of specs? ;-)
> >>>
> >>> Definitely.
> >>>
> >>>>
> >>>>> would be very hard to add a spec library to autotest (I once
> >>>>> performed some code coverage on it and I believe it was at
> >>>>> something
> >>>>> like 30 or 40 percent.).  So if one wanted to develop something
> >>>>> like
> >>>>> the rspec plugin to autotest, would it be wise to develop it test
> >>>>> first?
> >>>
> >>> Absolutely. TDD allows for the process that Ryan and I went through
> >>> but I skipped an important step because I was excited to get it out
> >>> the door. You're allowed to hack stuff together to figure out how it
> >>> works. But you're then supposed to throw all of that code out and
> >>> start over, test first. I failed to take this step :(
> >>>
> >>> That said, I think that most of the bugs that have been reported
> >>> wouldn't have been tested against anyhow - they've mostly been
> >>> due to
> >>> conflicts between varying versions of spec.opts and file loading
> >>> issues that I never saw happen and therefore wouldn't have likely
> >>> considered to describe.
> >>>
> >>> This is part of the nature of TDD. TDD didn't evolve in one or
> >>> two-man, all-developer shops. It evolved on teams that included
> >>> testers. The goal was never for the tests to serve as tests as
> >>> far as
> >>> the customer was concerned. It was about design. It was about
> >>> documentation. It was about making the job of the tester (the
> >>> official
> >>> tester w/ the title and all) easier by reducing the number of bugs
> >>> they had to deal with. This meant that they could focus more on the
> >>> really important stuff instead of getting hung up on the trivial
> >>> stuff
> >>> that *should* have been caught during development. This helped to
> >>> reduce the thrashing that often occurred once you reached the
> >>> testing
> >>> phase.
> >>>
> >>> That's part of why BDD came to be - to help put the focus back in
> >>> the
> >>> right places: developers develop, testers test.
> >>>
> >>> In the end, even the most disciplined TDD'er is only going to write
> >>> examples for the things he/she thinks of. You still should have a
> >>> tester on your team. The person who lives and breathes breaking
> >>> code,
> >>> rather than developing code. We don't have a person like that on the
> >>> RSpec team. Well, actually, we DO have that. It's all of you! Which
> >>> means, really, we shouldn't be making major releases without release
> >>> candidates. I think RC is open source's informal means of
> >>> exploratory
> >>> testing.
> >>>
> >>>> Any code that doesn't have automated tests works by accident as
> >>>> far as
> >>>> I'm concerned.
> >>>> It makes no difference whether the code is using a third party
> >>>> library
> >>>> or code whether it's part of your own code.
> >>>>
> >>>> However, some third party libraries (like J2EE) makes it so hard to
> >>>> test any code using it that you essentially have to choose between
> >>>> the
> >>>> third party or the ability to test. Sometimes having both is too
> >>>> much
> >>>> work.
> >>>
> >>> In terms of rspec and autotest, I think we're somewhere in the
> >>> middle
> >>> here. Scott points out 30-40% coverage on autotest. There's a school
> >>> of thought in TDD that says "test your own code," implying that you
> >>> don't test 3rd party libraries. You test that your code interacts w/
> >>> the 3rd party code per the published API, but you either trust that
> >>> the 3rd party code works or you either accept the possibility of
> >>> bugs
> >>> because the benefits are worth it or you don't use it.
> >>>
> >>> For me, autotest has been great. There have been some integration
> >>> problems w/ rspec but while they've been annoying they haven't
> >>> instilled fear in me that I'm getting the wrong feedback. So I
> >>> put up
> >>> with it.
> >>>
> >>> But we could certainly get some tests around the existing
> >>> integration
> >>> points: The test-to-file mappings, the command that gets generated,
> >>> etc. Patches welcome!
> >>>
> >>> Cheers,
> >>> David
> >>>
> >>>>
> >>>> Aslak
> >>>>
> >>>>> I'm not sure if anyone else has had this difficulty, or if I'm
> >>>>> being
> >>>>> clear.  Let me know if I should clarify with some examples.
> >>>>>
> >>>>> Best,
> >>>>>
> >>>>> Scott
> >>>>>
> >>>>> _______________________________________________
> >>>>> rspec-users mailing list
> >>>>> rspec-users at rubyforge.org
> >>>>> http://rubyforge.org/mailman/listinfo/rspec-users
> >>>>>
> >>>> _______________________________________________
> >>>> rspec-users mailing list
> >>>> rspec-users at rubyforge.org
> >>>> http://rubyforge.org/mailman/listinfo/rspec-users
> >>>>
> >>> _______________________________________________
> >>> rspec-users mailing list
> >>> rspec-users at rubyforge.org
> >>> http://rubyforge.org/mailman/listinfo/rspec-users
> >>
> >> _______________________________________________
> >> rspec-users mailing list
> >> rspec-users at rubyforge.org
> >> http://rubyforge.org/mailman/listinfo/rspec-users
> >>
> > _______________________________________________
> > rspec-users mailing list
> > rspec-users at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-users
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list