You have a business problem (sometimes called a ‘business requirement’). Someone devises a solution. You create a blueprint (sometimes called a ‘specification‘) of the solution. Then you construct the solution that the blueprint specifies. This workflow suggests that there are at least two things to verify.
- Does my construction adhere to the blueprint?
- Is the blueprint correct in the first place?
Here is an example.
To determine the monies that we may have to refund a customer (say an auto-insurance holder), perform the following calculation.
The monies that the customer owes at the moment minus the monies that the customer has already paid us
If the customer has paid us more than she owes at the moment, the customer is due a refund.
However, we cannot count all of the payments that we have received from the customer. There are rules that tell us which payments must be ignored while calculating refunds. Here is one of them.
The ‘My Dog Died’ rule
Customers that are dis-enrolled because they failed to pay their premiums, can ask for and receive a sort of ‘grace period’, of usually 2 to 3 months, in which they can catch up (or perhaps even pay ahead). If they hit all the payment targets within this period, the customer is re-instated. Let’s call this the ‘My Dog Died, So Have Pity On Me‘ rule.
Specification of the solution – The Blueprint
So how will we satisfy the business requirement? What are we going to build?
The brain trust (the business analyst, the architect, the DBA, the resident loudmouth), go off into their huddle, and produce these instructions for the construction crew (a developer, and a tester).
- Using already known methods, determine if the customer is dis-enrolled because of failure to pay premiums.
- Determine if the customer was granted a ‘My Dog Died‘ grace period, and if so how long that period is for. In particular, look for the following attributes.
- An attribute called ‘GriefStricken‘. Its ‘Effective Date’ is the start of the ‘My Dog Died’ period.
- An attribute called ‘GriefStrickenExpiration‘, Its ‘Effective Date’ is the end of the ‘My Dog Died’ period.
- When calculating refunds, ignore all payments received during the ‘My Dog Died’ period.
Does construction match blueprint
As I mentioned earlier, in my environment the construction crew consists of a developer, and a tester.
The developer writes computer code that implements the blueprint. The developer and the tester verify that the computer code does indeed do what the blueprint lays out.
They discover bugs – mismatches between the construction and the blueprint. The developer fixes the bugs – removes the mismatches. At some reasonable point, the construction crew turns in the solution.
Who verifies the blueprint
Yea, you guessed it – the blueprint was wrong.
It turns out that the ‘My Dog Died’ period is stipulated to start on the day that the customer is dis-enrolled.
What we thought was the start date, the ‘EffectiveDate’ of the ‘GriefStricken’ attribute, is only the day on which the customer was approved for the ‘My Dog Died’ grace process, which is often several days after the dis-enrollment.
There was no way for the developer to know this. The tester did not know this either. The construction crew only knows what is in the specification of the solution.
Yet, this is a significant bug.