[rspec-users] [Cucumber:4066] Cucumber vs, RSpec

Ed Howland ed.howland at gmail.com
Thu Apr 22 18:32:03 EDT 2010


+1

BTW, here is the URL for his talk:

http://www.benmabey.com/2009/03/14/slides-from-outside-in-development-with-cucumber/

It is back in the webrat days (pre-capybara). And the World() method
is simpler nowadays.



Cheers,
Ed

Ed Howland
http://greenprogrammer.wordpress.com
http://twitter.com/ed_howland



On Tue, Apr 20, 2010 at 4:12 PM, John Goodsen <jgoodsen at radsoft.com> wrote:
> Watch Ben Mabey's slides and talk at Ruby Conf on outside in development
> with Cucumber.  It positions rspec and cucumber properly
>
> On Tue, Apr 20, 2010 at 3:58 PM, Joseph Wilk <joe at josephwilk.net> wrote:
>>
>> On Tue, Apr 20, 2010 at 8:05 PM, David Chelimsky <dchelimsky at gmail.com>
>> wrote:
>> >
>> > On Apr 20, 2010, at 1:57 PM, Mike Sassak wrote:
>> >
>> >> On Tue, Apr 20, 2010 at 2:33 PM, Ed Howland <ed.howland at gmail.com>
>> >> wrote:
>> >>> Please forgive the x-post.
>> >>>
>> >>> I just got back from the Great Lakes Ruby Bash. They had several good
>> >>> presentations, two specific to BDD and Cucumber. I also talked to
>> >>> several CEOs and devs afterwards, and the overall takeaway I gathered
>> >>> was a shift to less RSpec and more Cucumber. Some people even claimed
>> >>> a 90/10 split (cukes/specs) on current projects.
>> >>>
>> >>> This was surorising to me and not at all how I worked up to this
>> >>> point. I was more 20/80. I usually cuked a feature, then spec'ed the
>> >>> code to make the cuke work. Each release had some new features and
>> >>> specs for all the underlying code. Apparently, the feeling is that you
>> >>> should do all your main thrusts with Cucumber and use RSpec for edge
>> >>> cases. The theory is that you can change out all the underlying code
>> >>> and the cukes still pass.
>> >>>
>> >>> What is the communities consensus on this?
>> >>>
>> >>
>> >> Hi Ed,
>> >>
>> >> I was also at the GLRB, and was a bit aghast at the claim that you
>> >> should have a 90/10 split between cukes and rspec. In my experience,
>> >> favoring Cucumber so heavily invites developing code that behaves
>> >> correctly, but is messy and difficult to change. I would go so far as
>> >> to claim there is a positive correlation between over-reliance on
>> >> Cucumber features and rampant violations of the SOLID principles.
>> >> Cucumber simply doesn't excel at enforcing simple, testable contracts
>> >> between the objects in your code base the way RSpec does. The result
>> >> is that your code is hard to refactor and change, which from the
>> >> developer's point of view is practically the whole reason to maintain
>> >> a good test suite in the first place. This isn't the whole of the
>> >> story by any means, but I think it's close to the place to start.
>>
>> First up Rspec and Cucumber are just tools, they can be used in many
>> ways. So this answer belies my personal usage of these tools.
>>
>> A big issue for me is scaling tests. Cucumber tests tend to be
>> end-to-end tests so they cut through the whole application stack. This
>> is great in terms of freeing you up to refactor the heck out of your
>> code without having to rewrite lots of tests. But end-to-end tests are
>> slow, now this can be ok if you working on a small project. In smaller
>> projects I've worked on I've only used Cukes. In others I've only
>> tended to drop down to Rspec (which I very much use as a specing/unit
>> testing tool) when there is complexity, I feel the feedback loop is
>> not fast enough or I need to explore the design more.
>>
>> If however you are working on an application thats long lived or lives
>> in a domain where you're dealing with asynchronous issues (such as
>> javascript or evented systems) I've seen people very quickly hit 1
>> hour + test build time. Primarily because they have such a heavy focus
>> on Cucumber or end-to-end tests. So one direction to help avoid this
>> is to exploring a few good and bad paths with cucumber but having more
>> detailed spec coverage. This would help you manage better test build
>> times.
>>
>> The other option is to not worry about heavy Cukes usage and throw
>> lots of hardware at the scaling problem. Ok for some, but it does
>> end-up costing lots.
>>
>> One other point is that Cucumber for me is part of a process about
>> facilitating conversations with non techs. So as a developer its not
>> always a question of how many Cukes do I think I should have. Its a
>> question of how much does the stakeholders who I'm writing the
>> software want. Do they want to edit and write the cukes with us? Will
>> they go back and reference the cukes in the future?
>>
>> So in conclusion my split on Cucumbers/Rspecs really depends on the
>> context of the project. An important factor to think about is scaling
>> when you only use end-to-end tests.
>>
>> Joseph Wilk
>> http://blog.josephwilk.net
>> http://www.songkick.com
>> +44 (0)7812 816431
>>
>> >>
>> >> $0.02
>> >> Mike
>> >>
>> >> P.S. Hello RSpec Group! What's the etiquette here for cross-posting?
>> >
>> > Etiquette, schmetiquette :)
>> >
>> > I'd say, in the interest of keeping the thread in one place, post to the
>> > rspec list w/ a link to this thread in the cuke group and invite folks to
>> > join the convo.
>> >
>> > Cheers,
>> > David
>> >
>> >>
>> >>>
>> >>> Cheers,
>> >>> Ed
>> >>>
>> >>> Ed Howland
>> >>> http://greenprogrammer.wordpress.com
>> >>> http://twitter.com/ed_howland
>> >>>
>> >>> --
>> >>> You received this message because you are subscribed to the Google
>> >>> Groups "Cukes" group.
>> >>> To post to this group, send email to cukes at googlegroups.com.
>> >>> To unsubscribe from this group, send email to
>> >>> cukes+unsubscribe at googlegroups.com.
>> >>> For more options, visit this group at
>> >>> http://groups.google.com/group/cukes?hl=en.
>> >>>
>> >>>
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> >> Groups "Cukes" group.
>> >> To post to this group, send email to cukes at googlegroups.com.
>> >> To unsubscribe from this group, send email to
>> >> cukes+unsubscribe at googlegroups.com.
>> >> For more options, visit this group at
>> >> http://groups.google.com/group/cukes?hl=en.
>> >>
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups "Cukes" group.
>> > To post to this group, send email to cukes at googlegroups.com.
>> > To unsubscribe from this group, send email to
>> > cukes+unsubscribe at googlegroups.com.
>> > For more options, visit this group at
>> > http://groups.google.com/group/cukes?hl=en.
>> >
>> >
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>
>
>
> --
> John Goodsen                 RADSoft / Better Software Faster
> jgoodsen at radsoft.com            Lean/Agile/XP/Scrum Coaching and Training
> http://www.radsoft.com          Ruby on Rails and Java Solutions
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list