Another kind of “BDD”: Bullet Driven Development

Cucumber is great but …

I’ve used Cucumber for test automation for a lot of my career, and honestly I’ve been pretty happy. It’s a great way to pull one’s thinking out of the granular code level, and starting thinking about domain or enterprise level problems. I don’t think I’ve ever reached the BDD holy grail of Product writes it, Dev implements it, and QA verifies it, all from the same spec, but … well hell, who actually drinks from a grail these days anyhow.

“Futo” is Japanese for “envelope”

The idea goes something like,

killer.spec

The Killer App
* loads successfully
* does some things
* calculates some stuff
* charges happy customers
* ???
* profit !

“Chizu” is Japanese for “Map”

Implementation, inspired by Cucumber’s step_definitions layer, looks like this:

killer_app.chizu

On "loads successfully" do
load_base_app
wait_for_dashboard_screen
end

On "does some things" do
press_things_button
fill_in_things
press_go
end

On "profit !" do
expect(earnings).to be > costs
end

For the curious

The initial code is on Github and RubyGems, an early prototype so far (works though). Some developer friends are planning to try it out with a React Native project over the summer and fall as well, so I’m hoping to have lots of a̶n̶n̶o̶y̶i̶n̶g̶ ̶b̶u̶g̶s̶ great progress over the summer and fall 2020.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Add Lightness | Better Testing, Better Software

Add Lightness | Better Testing, Better Software

26 Followers

A software dev in test thinking against the grain. “To go faster, simplify, then add lightness.” ~Colin Chapman #cleancode #minaswan #innovate