Databases Reference
In-Depth Information
Input: Prog,
Pos ;; Neg ;;
1
PLTS generateInitPLTS();
2
Test generateTests(PLTS);
3
foreach test 2 Test do
4
(trace;pass) runTest(test;Prog);
5
if pass then
6
Pos Pos[ftraceg;
7
if trace 2 ProL(PLTS) then
8
PLTS EDSM(Pos;Neg);
9
Test generateTests(PLTS);
10
11
else
12
Neg Neg[ftraceg;
13
if trace 2 PreL(PLTS) then
14
PLTS EDSM(Pos;Neg);
15
Test generateTests(PLTS);
16
17
end
18
end
19
return PLTS
20
Algorithm 4: InferWithTests
need to be human. If the software system exists already, there is no need for
any manual intervention to decide whether a trace is feasible or not; it can
simply be attempted automatically. This fact is crucially important; it sub-
stantially reduces the necessary involvement from the developer's perspective.
Traces can be gathered automatically (or at least semi-automatically).
Several techniques that are based on Angluin's L have emerged that ex-
ploit this. Techniques by Raffelt and Steffen [30] and Shahbaz and Groz [32]
have adapted Angluin's L technique [2] to convert its queries directly into
tests that can be executed on the system. However, even without relying on
a human to answer queries, the key challenge with such techniques is their
scalability. The number of questions required tends to rise exponentially with
the number of states and the alphabet size of the target machine.
Recent work by the authors has combined the use of heuristics such as
EDSM/Blue-Fringe with the ablity to automatically collect traces as tests.
Instead of tying the inference process to a rigid question-generation strategy
as is the case with L -based techniques, their work allows the user to choose
their own model-based testing strategy as a basis for selecting traces. In their
work on reverse engineering models of Erlang processes [38], they show how
a simple random test-set generator can be used to automatically generate a
 
Search WWH ::




Custom Search