[rspec-users] [Cucumber:4066] Cucumber vs, RSpec
joe at josephwilk.net
Tue Apr 20 15:58:17 EDT 2010
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
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
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.
+44 (0)7812 816431
>> 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.
>>> 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.
More information about the rspec-users