Writing a Do With specification
When do we use the DoWithInterpreter
The DoWithInterpreter is used to express interactions with the system under development that must be performed in a particular order. This form of specification provides information about the business flow.
When a sequence of action is executed,
confirms that each action has successfully been performed.
First row: Identification of the Do With
As for all other interpreters, the first row of the DoWithInterpreter specifies the name of the interpreter and the name of the sequence of actions to be tested. What makes the DoWithInterpreter particular is that it only have to be defined once for all the sequences of actions expressed in a page. Obviously, the DoWithInterpreter must be defined before any sequence of actions.
Example of a bank Account management system
Example context : The system under development must be able to manage two different types of bank account. The system should allow to execute the usual transactions within an account.
So the first line could be expressed as
| do with |
bank account management |
or more simply as
Following rows: Actions & Verifications
The second and following rows are used to express specific actions or verifications. The business expert should express the action in human readable format rather than using computer like language.
 |
The form of each row of a DoWithInterpreter must follow these rules:
- a row begins with a part of the action description.
- each parameter is isolated in a cell
- each parameter is separated by parts of the action description.
- an action description can be blank
More visually:
| Action description part 1 |
parameter 1 |
Action description part 2 |
parameter 2 |
Action description part 3 |
Parameter 3 |
... |
|
Example: In our bank example, the first action would be to create a bank account .
If we want to take the account number as a parameter, we would have:
| open checking account |
12345-67890 |
But, if we want to consider the type of account, the account number, the owner first name and last name as parameters, we would have:
| open |
checking |
account |
12345-67890 |
under the name of |
Spongebob |
|
Squarepants |
Example: Verify the balance of an account
To verify the success of a particular action, we write the keyword "Check" prior to the first part of the action description.
In our example, there would be two parameters: the account number and the amount of balance.
| check |
that balance of account |
12345-67890 |
is |
$0.00 |
Final expression of our example
Our first business rule says that a new account should have a balance of 0.00 dollars.
| open |
checking |
account |
12345-67890 |
under the name of |
Spongebob |
|
Squarepants |
| check |
that balance of account |
12345-67890 |
is |
$0.00 |
Our next rule says that the bank should not take any fees when we deposit money in our account.
| deposit |
$100.00 |
in account |
12345-67890 |
| check |
that balance of account |
12345-67890 |
is |
$100.00 |
The following rule says that a customer should be able to withdraw funds if the balance of his account is sufficient.
| withdraw |
$50.00 |
from account |
12345-67890 |
| check |
that balance of account |
12345-67890 |
is |
$50.00 |
| reject |
withdraw |
$75.00 |
from account |
12345-67890 |
| check |
that balance of account |
12345-67890 |
is |
$50.00 |
| accept |
withdraw |
$25.00 |
from account |
12345-67890 |
Execution of specification
Based on those executable specifications, the developers are now ready to code the functionality and the fixture (the fixture is the link between the system under development and the executable specification). Once this is done, the specification can be executed by clicking on the Execute button on the top of the page.
During execution,
will color cells in green if the execution has passed and color it in red if the execution has failed. The colored cells depends on the type of action described:
- in a standard action row (without a keyword at the beginning), only the Action description will be colored,
- if the action begins with the keyword Check, the value tested will be colored and in the case of a failure,
will show the expected and the returned values,
- if the action begins with the keywords Reject or Accept, only the cell containing the keyword will be colored.
- if the action begins with the keywords Display (NEW in 2.4), only a new cell at the end of the row containing the returned value will be colored.