[rspec-users] stepping across features
James Byrne
lists at ruby-forum.com
Thu Dec 4 16:39:30 EST 2008
I need a bit of instruction. I have spent the day reading online
bloggs, tutorials, and howtos relating to BDD, RSpec and testing. I
have also spent several hours going through the cucumber spec/test
suites in an attempt to absorb some sense of how best to proceed. I am
somewhat nonplussed.
Here is my situation. I am the domain expert (together with a few
others) and I am the business analyst and I am the systems analyst and I
am the coding team. So, I am essentially in the position of having to
interview myself (mostly) to write specifications so that I can design a
system that I will have to code, myself.
I have spent the better part of the last two years learning ruby and
rails, taking related courses, investigating, acquiring, installing and
learning to use various support tools like Subversion, which I have
since replaced with GiT, and Trac project administration system, which I
have since replaced with Redmine. I also beat my head against a brick
wall trying to get some idea on how to use rspec stories to facilitate
my initial foray into TDD which then evolved (for me) into BDD.
Along came cucumber and in the space of a few days I have begun to write
and run actual tests derived from features that I have described in a
cucumber fashion. I have actually written working code driven by
feature requirements. Heavens, I have even "refactored" my initial step
definitions to remove instance variables and create cross feature steps.
I now have rcov reports telling me what tests need to be written for the
code I already have. Things seem good.
Where do I go from here? At issue for me is really how much detail goes
into the features. It was pointed out that the present form of many of
my features betray a "programming" bias. I admit to this. My question
is: Where does one specify the nitty gritty details of what columns go
into what relations that possess what associations with what other
relations? Where does one put the descriptions of business rules and
algorithms?
These are all examples of user driven details to at least some degree.
I mean, not every client management system need distinguish between an
operating name and a full legal style and yet keep both for the same
customer. So this is a detail that I feel should be expressed from the
user pov somewhere. Tax calculations and fee discount structures are
also areas that need user driven expression. Do these not belong in
features too?
I can see that features deal with high level stuff. But there is an
awful lot of low level details that end users have to specify as well.
Even if they do not need to know about database normalization or
attribute naming conventions they nonetheless have to express,
somewhere, their need to retain full addresses, postal codes of varying
format depending on country, telephone numbers, perhaps categorized into
meaningful classes, and the like. Where are these requirements
expressed if not in features? Presumably one must test to see that the
requisite information is retained and retrievable even if exactly how is
not explicitly stated in their requirements.
I had, at one point, the idea that, at least in the beginning, I would
do most of this detail expression in the form of feature steps. The
advice I have received has caused to reflect on whether this is a
desirable course to take. However, I can see no obvious alternative
other than to bury the design requirements in rspec specs or testunit
tests, both of which seems to defeat the idea of having users drive the
project.
Am I missing something obvious here?
--
Posted via http://www.ruby-forum.com/.
More information about the rspec-users
mailing list