Testing should help to insert new bugs or how to modify programs predictably?
Software maintenance is often regarded as consisting of two different activities, fixing bugs and modifying the code to adapt to changing requirements. We argue that these activities are really two faces of the same coin, but with modification corresponding to bug insertion rather than removal. This has an implication for the way testing is supported. Test tools should view system behaviour in the context given by the designers' models. Modification to a program will change the behaviour of one or more software components, and the designer must predict which components will be affected. If we think of a bug in a program as a modification from the desired behaviour then, in a similar way, it should be possible to predict which design components are causing the deviation. We propose a strategy for testing the design which will help with both forward modifications and error repair.