[prac6] Test plan for shrink ray

Real-life Test Plan - Shrink Ray
================================

A shrink ray is a device that can generically shrink any object to a smaller
size. The target object may return to its original form after a given time or
trigger.

The device has two primary functions: reducing the size of an object, and
increasing the size of one. In addition to these functions, the triggers
to resize an object can be tested.

There's considerable risk that the device would damage objects being shrunk.
If the object cannot be properly resized to its original form, then the object
is obviously unsafe to use on anything living or volatile. This particular
behaviour of the device would need the most testing because it is of the
biggest risk.

Things such as the surface area, shape, and density of the target, its
position in space, and the duration for which its shrunk should all be tested.
It would be quite disastrous if the device was listed safe when, for example,
prolonged shrinkage may make the process irreversible.

If living things can reliably and safely be shrunk and resized, then it
should be tested whether or not person being shrunk will in most ways be
functionally similar with the exception of a comically high tone of voice,
similar to someone who has inhaled helium. This behaviour is a desired but not
necessary function of the device.

Reversing the shrinking is effectively an enlarge-ray effect. These effects
are similar but notably different. (They are exact opposites.) It's likely
that the device can't have this functionality implemented by inverting some
configuration value somewhere, so an extensive test covering both functions is
likely necessary.

If an object is shrunk, then placed in a box smaller than its original size,
then resizes, what is the outcome? Does the box experience some physical force
pushing outward as the object attempts to resize, or does the object resize
with the box simply inside of it? (This would surely prove fatal for anything
living.) In the former case, how strong is this force, and does the presence
of this force have any impact on the resizing? (Energy for this force must
come from somewhere.)

Related to the above, whether the object shrinks and resizes instantly
or gradually needs to be tested and documented.

The relative size of the object before and after being subject to the shrink
ray is important. It should be determined whether particular implementations
of the device bear with them an associated size ratio, or if the size ratio is
configurable. If the former is true, the size ratio of all devices
manufactured should be tested. If the latter is true, the mechanism by which
the device is configured should be tested.

Its foreseeable that since space and time are deeply connected that the shrink
ray may cause some unexpected time travel. This possibility should be tested
thoroughly, since devices that can affect the space-time continuum are
considerably dangerous if not used correctly.

Unit tests can cover the vast majority of these cases. Given behaviours with
the device should produce consistent and expected behaviours. Repeated testing
is important because the device by its nature may be subject to heisenbugs.
Fuzz testing with regards to the surface area, shape, and density of the
target would be nice but not very practical. (How do you generate random
physical objects?)