On Thursday 27 March 2008 16:30:47 Eric Wilhelm wrote: > # from chromatic > >On Thursday 27 March 2008 12:42:13 Eric Wilhelm wrote: > >> What do you need to test that your users need to drive?
> >Business rules. > So, what is a good example of such a business rule? I posit that > payroll does not count because the user could more concisely write the > rule in a declarative form, this isn't Java, &c. Any rule the system models need to encode, such as: A payee with no deductions pays 8% federal withholding. A payee with one deduction pays 7.75% federal withholding. A payee with two deductions pays 7.50% federal withholding. ... A payee with the Congressional Medal of Honor pays 0% federal withholding. > >> How can it be expressed in a non-tedious and yet understandable way > >> that makes them feel like it is a worthwhile process? > > > >That's the guiding design question of FIT tests. > > That's conveniently intuitive then. So where do I get the guiding > design answer? Or at least, how do you decide when to be asking the > above question vs when to be asking "how do I set this up such that the > business rules are 'programmed' directly by the users?"? I suppose you ask them "Do you want this software to work correctly, or can I just take the money and go home now?" > >Don't mistake FIT tests for unit tests. You'll stab someone if you > > do. > Okay, so how do we be sure that the business rule is fully expressed by > the Fit input? (That is: guarantee that there are no edge cases.) You ask "And then what if?" a lot. Usually no one has written down these rules. In general, software maintenance means encoding these unwritten rules into deployed software when people realize that they're still figuring out what the software should do and how they do what they do. > Or, is this one of those complicated things where worse is better because > we don't like better better than worse? I still think you're overthinking this. Think of FIT as a way for non-programmers to write executable specifications in something resembling a spreadsheet. -- c