Like this article? We recommend
Link Tests
Link Tests
Sometimes you need more detail than is appropriate in a vision test. In those cases, you can write what we're calling a link test. Link tests specify and verify the connection between a higher-level specification of value and a lower-level specification of design, with this test intended as the link between the solution design and its corresponding value.
Let's imagine that many people are involved in the development of our pet-recovery system, and we need to coordinate architectural decisions and codify them as tests just so that everyone knows where to look.
Perhaps our hypothetical organization has already created a concierge service comprising trained hounds and scent samples, collected in advance from particularly affluent (and paranoid) pet owners. This design allows us to track a lost animal from its last-known location to a fairly small area in a relatively efficient manner; however, once a pet-recovery agent gets too close, these hounds become a liability, frightening off the lost pet.
All of these circumstances conspire to indicate that the most important piece of the value stream envisioned in Figure 4 is the ability to find a lost pet, by using an RFID tag (see Figure 5).
Having a deeper understanding of that specific portion of the value stream enables the development of a simple architectural sketch built around those steps, as shown in Figure 6.
Again, while we can imagine this architecture, we need to avoid coupling a link test directly to the design decisions. It should only be coupled to value. To create link tests specifying that the near-term goal is that particular segment of the hypothetical value stream, we do two things:
- Show the segment of the value stream we want to enable.
- Specify the key design decisions we've made.
This is why we call this kind of test a link test: It links lower-level steps in the value stream with higher-level values, as shown in Example 2.
Here again, this story could be conveyed in several ways: A recovery agent arrives on the scene, uses specialized hardware to scan for nearby animals with RFID chips, approaching them and using hardware to identify them. After locating a lost pet, the recovery agent captures the animal, and the larger value stream continues.
The big difference between a link test and a vision test is that the link test specifies details from which more granular design decisions can be made. For instance, the readings that come back from a long-range scanner imply scanning a horizontal span of 45 degrees and a vertical span of 30 degrees, with a short-range scan expected to pick up an ID at around 10 feet.
Traditional acceptance tests differ from link tests and vision tests in two important ways. First is the goal. Acceptance tests specify the existence of value-adding features, whereas link or vision tests specify the flow of value through a value stream. Second is the scope of what is tested. Acceptance tests are almost all about the behavior of a software system, while link or vision tests can specify software, hardware, and even human behavior.
With the link test written, in addition to the vision test, certain information can be communicated easily:
- Everyone can see the overall vision, as well as how much of that vision has been realized.
- Everyone can see the next big piece of the vision to build, as well as how much of that piece has already been built.
- Everyone can understand how the next big piece should be broken apart.
- At the touch of a button, everyone can verify that these divisions have been made.