27.07.2013 Views

2 Why We Need Model-Based Testing

2 Why We Need Model-Based Testing

2 Why We Need Model-Based Testing

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Systems with Complex State 193<br />

This test run executes:<br />

TestResult(0, Verdict("Success"), "",<br />

Trace(<br />

ServerSocket(),<br />

ServerBind(),<br />

ServerListen(),<br />

ClientSocket(),<br />

ClientConnect(),<br />

ServerAccept(),<br />

ServerSend(double("99.9")),<br />

ClientReceive_Start(),<br />

ClientReceive_Finish(double("99.9")),<br />

ServerSend(double("99.9")),<br />

ClientReceive_Start(),<br />

ClientReceive_Finish(double("99.9")),<br />

ClientSend(),<br />

ServerReceive(),<br />

ServerSend(double("100")),<br />

ClientReceive_Start(),<br />

ClientReceive_Finish(double("100")),<br />

ClientSend(),<br />

ServerReceive(),<br />

ClientSend(),<br />

ServerReceive(),<br />

ClientClose(),<br />

ServerCloseConnection(),<br />

ServerClose()<br />

)<br />

)<br />

This test succeeded because the server didn’t send 100 until the last message.<br />

After a few more random test runs, ct executes a run that fails, revealing the<br />

defect.<br />

This example shows that a random test strategy generates a lot of test runs easily;<br />

it is no more work for us to set /nruns:1000. But many of those randomly generated<br />

runs do not exercise the implementation thoroughly, so in this example the built-in<br />

random strategy does not achieve good coverage rapidly. <strong>We</strong> can often do better<br />

by programming our own strategy, which we can load into ct with the /strategy<br />

option. The following sections show how.<br />

more free ebooks download links at:<br />

http://www.ebook-x.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!