Actions are not exactly the same as method calls. Most of the actions in Figure 8.3
correspond to a method call, but not all. Each client Receive method call corresponds
to two actions, for example:
ClientReceive_Start(),
ClientReceive_Finish(double("100")),
The first action, called the start action, is the method call. The second action, the
finish action, is the method return including the expected return value computed by
142 Testing Closed Systems
the model program, which appears in parentheses in the term. The pair of actions is
called a split action. Any action method that has outputs (a return value or C# out or
byref parameters) must be modeled as a split action. You do not have to code both
actions in your model program; the tools automatically create split actions from
every action method with outputs (use the mpv option combineActions- to display
both actions in each pair).
It is necessary to model the two actions separately because the implementation
might not execute the finish action. The start action is controllable; the test harness
can always cause the implementation to execute the method call. But the finish
action is observable; the test harness can only wait for the method return. If the
implementation crashes or hangs, the method will not return and the finish action
will not occur. The test runner indicates that these are failures.
Pages:
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209