A lot of work has been done to make the distributed system as abstract as possible, so that users do not have to worry about the distribution semantics. Each software vendor works to ensure that their products meet the relevant standards. Both of these factors make it possible to construct sets of model-specific test cases and then sets of application specific test cases.
Model-specific test cases
The result of each standard model is its own set of design patterns. In turn, this leads to the appearance of some set of test patterns.
Tests for the basic client / server model
There are different patterns of the basic client / server model. In the test patterns described below, the design pattern being tested is a commonly usable version, called distributed callbacks.
Task: Synchronous messaging between two objects is converted to asynchronous messaging by adding a Callback object. The client creates a Callback object and forwards it the request and the server’s address. The Callback object synchronously passes this request to the server. Once the response is received, the Callback object forwards it to the Client object.
Context: The program code for the design being tested is used, because the designer prefers to do other work while this message is being replied to. Theoretically, the source thread will accomplish its work before the answer is ready.
Factors of influence: Functional tests may be successful when they are executed once, however, the race conditions can lead to contradictory results, i.e. repeating the same test may produce completely different results. Numerous factors influence detectability of failures because of the race conditions.
Is quality your primary concern? Are you interested in raising customer confidence? If so, make up your mind to use independent software testing services provided to improve software code.
Solution: Build test suites in which each test case is executed multiple times. Such a test set should adjust the factors to increase visibility of the race conditions. After each test, the system must return to its original state. Testing should contain the following tests:
a test in which the server returns the expected result almost immediately;
a test in which the client is deleted before a callback is received;
a test in which the server generates an exception.
a test in which the server is deleted before returning a value.
Comments are closed.