Automatic synthesis of test cases for conformance testing has been principally developed with the objective of generating sequential test cases. In the distributed system context, it is worth extending the synthesis techniques to the generation of multiple testers. We base our work on our experience in using model-checking techniques, as successfully implemented in the TGV tool. Continuing the works of A. Ulrich and H. Konig, we propose to use a trueconcurrency model based on graph unfolding. The article presents the principles of a complete chain of synthesis, starting from the definition of test purposes and ending with a projection onto a set of testers.Key words: Test, Distributed systems, Synthesis, True-concurrency models, Interoperability
INTRODUCTIONAlgorithms for automatic test synthesis have been proposed both in the academic world, and in industry. However, the use of these tools reaches a limit when testing distributed systems. This is because they are dedicated to the synthesis of sequential test cases (represented by event sequences or finite automata). Such synthesis is not always well-suited to test systems containing parallel activities. It is also known that a state representation of a specification with parallelism often suffers from a combinatorial explosion.
302
TESTING DISTRIBUTED SYSTEMSThe interest in generating distributed test cases was recognised a few years ·ago, as demonstrated by the inclusion of concurrent constructs in the TTCN standard. We retain three main motivations to synthesise distributed test cases:It can be naturally imposed by the test architecture under consideration. Let us consider a system geographically scattered on a network. The idea is to design a set of testers, each tester being located at the communicating entity to be checked, and communicating with the other testers to co-ordinate the test activity and the production of diagnosis.It allows more compact and clear test cases to be obtained. This is the case when the system under test produces concurrent observable events: a sequential representation would require all possible interleavings to be computed. This rapidly suffers from a combinatorial explosion as the concurrency increases.In certain cases parallel testing is needed to check particular behaviours. For example, one often considers for controllability reasons that the testers must wait for the system stabilisation before injecting new interactions. Under this assumption, it was shown by [2] that a distributed test case can position the system under test into states which are not reachable by a sequential test. More generally, the situation will also occur in the context of real-time testing.One can distinguish two main approaches to synthesising distributed test cases:The generation of sequential test cases, followed by their automated distribution. The idea is to produce a set of communicating testers which behave like the sequential test (i.e. in the sense of trace equivalence). The advantage of this approach is that it requires no more th...