

Clients writing Cucumber stories? (Ruby) - jkreeftmeijer
http://jeffkreeftmeijer.com/2010/clients-writing-cucumber-stories/

======
cavalle
I like the workflow Jeff describes in his article. They keep writing user
stories with their clients. I imagine that those stories are written in plain
english but in a brief, informal, easy-to-understand style. Much more useful
than Cucumber features as communication token, I think.

In my experience, Cucumber features are less useful as user stories than
regular user stories and harder to maintain as acceptance tests than regular
acceptance tests. Some people may see value in turning user stories into
acceptance tests and keep them in sync during all the lifetime of a project.
But 80% of value is just in turning every user story into an acceptance test.
Jeff's workflow does exactly that, but without the additional effort that
maintaining Cucumber features involves.

------
devmonk
Steak does sound good. It's a lot harder to look at than cucumber, but it is
self-contained and simple.

<http://github.com/cavalle/steak>

Talking about steak makes me hungry.

~~~
swombat
For a ruby programmer, I dare say that ruby code is easier to look at than
English pseudo-code...

~~~
devmonk
I dev in Ruby also, but the features, stories, and scenarios in Cucumber can
read fairly well, even if the step definitions make it tougher than it would
appear to be.

Agreed that Steak is simpler overall. Cucumber could have used the time spent
supporting LOLZ on something more useful:

    
    
      OH HAI: STUFFING
    
        MISHUN: CUCUMBR
    
          I CAN HAZ IN TEH BEGINNIN 3 CUCUMBRZ
    
          WEN I EAT 2 CUCUMBRZ
    
          DEN I HAZ 2 CUCUMBERZ IN MAH BELLY
    
          AN IN TEH END 1 CUCUMBRZ KTHXBAI
    

step implementations:

    
    
      ICANHAZ /^IN TEH BEGINNIN (d+) CUCUMBRZ$/ do |n|
    
        @basket = Basket.new(n.to_i)
    
      end
    
      WEN /^I EAT (d+) CUCUMBRZ$/ do |n|
    
        @belly = Belly.new
    
        @belly.eat(@basket.take(n.to_i))
    
      end
    
      DEN /^I HAZ (d+) CUCUMBERZ IN MAH BELLY$/ do |n|
    
       @belly.cukes.should == n.to_i
    
      end
    
      DEN /^IN TEH END (d+) CUCUMBRZ KTHXBAI$/ do |n|
    
       @basket.cukes.should == n.to_i
    
      end
    

(from <http://www.engineyard.com/blog/2009/cucumber-introduction/> )

------
cartab
Another great article Jeff.

