Uploaded by 3cfmct5ur6

Random Test Generator - Bridging the gap BCS

advertisement
7/14/22, 7:58 PM
Random Test Generator - Bridging the gap | BCS
Random Test Generator - Bridging the
gap
Recently we faced the task of testing software, which was a bridge
between two other tools: taking the output of one and transforming it into
the input of the other. The transformation was complex.
BCS MEMBERSHIP
A test suite was developed manually for this transformation. However each test required the
construction
ofIT
a complex
data structure, which limited the sizes of the tests. The problem was to
CHARTERED
PROFESSIONAL
develop large data structures to test the correctness and efficiency of the transformation.
To do this manually would have taken too long and been error prone. NPL has over the years
developed a means to generate random self-compilers, in particular for PASCAL, (also variants),
Ada and several other languages.
This article describes briefly the random self-checking program generator and how the
technology used to construct it was applied to generate tests for the bridging software described
above.
APPRENTICESHIPS
Background
CONTINUING PROFESSIONAL DEVELOPMENT
Validation suites for compilers have been developed consisting of manually produced programs,
which
are used
to test compilers.
Unfortunately compilers can pass these and still have serious
IT
SKILLS
FRAMEWORK
(SFIAPLUS)
bugs in them.
SOFTWARE TESTING CERTIFICATION
The aim of the random program generators was to generate programs, which should compile
ESSENTIAL
DIGITAL
SKILLS
and on execution
perform
a self-check. The basic idea is to generate very complicated
constructs by recursive descent and check that these are evaluated correctly. A very simple
example might be the following:
V1 : = 6;
V2 : = (4 – (2 – 1)) * ((3 * 2) / (8 mod 5));
IF V1 = V2 THEN
EVENTS CALENDAR
write1n('Test Passed')
ELSE
write1n('Test failed');
https://www.bcs.org/membership-and-registrations/member-communities/software-testing-specialist-group/the-tester/newslette…
1/3
7/14/22, 7:58 PM
Random Test Generator - Bridging the gap | BCS
The value for V1 is chosen at random but such that it is correct in terms of its type. V2 is then
assigned a value by means of a complex data structure, which is created by recursive descent
from the value that V1 has been set to, in this case 6. The values of V1 can then be checked
against that of V2.
ARTICLES,
The
same technique
OPINIONcan
AND
beRESEARCH
generalised for most of the constructs of a programming language.
The main technical problem is preserving the correct semantics while doing the recursive
IN FOCUS
descent. This technique has produced program generators, which have found many bugs in
commercial compilers and has been used to give assurance for compilers in a safety-critical
context.
Application
The bridging tool forms a bridge between two commercially available tools, NP-Tools (available
from Prover Technology AB and distributed in the UK by the National Physical Laboratory) and
FaultTree+ (available from IsographDirect).
NP-Tools is a tool which can be use to model the logic of systems and prove properties about the
models. FaultTree+ is a reliability analysis tool, which allows you too develop fault trees and do
some analysis on them.
The bridge between them, is the Automatic Fault Tree Generator (AFTG), see Figure 1. Fault
trees consist of logical gates. To test the AFTG fully it was required to produce fault trees of the
order of 4000 gates (maximum for FaultTree+ is 5000).
BCS MEMBERSHIP
CHARTERED IT PROFESSIONAL
To create the appropriate model in NP-Tools would be too time consuming, so it was decided to
generate fault trees. The random generator technology described above was used to generate
the fault trees.
The fault tree generator had to enforce two semantic properties. The first being that there existed
one set of values for which the fault tree evaluated to true and the second being that there were
no circularities (fault trees are allowed to refer to other parts of the tree rather than just repeat it).
APPRENTICESHIPS
To enable the results of the tests to be checked the ability of NP-Tools to prove that two logical
models are equivalent was used.
CONTINUING PROFESSIONAL DEVELOPMENT
https://www.bcs.org/membership-and-registrations/member-communities/software-testing-specialist-group/the-tester/newslette…
2/3
7/14/22, 7:58 PM
Random Test Generator - Bridging the gap | BCS
A fault tree was generated automatically and placed in NP-Tools (via a converter FTtoNPT), see
Figure 2. The fault tree in NP-Tools, was then transformed via AFTG into FaultTree+ and then
IT back
SKILLS
(SFIAPLUS)
intoFRAMEWORK
NP-Tools, see Figure
3. NP-Tools can be used to prove the two fault trees are logically
equivalent in which case the test has passed, if not the test has failed.
The fault tree
generator
was implemented in a scripting language Tcl/Tk with parameters to
SOFTWARE
TESTING
CERTIFICATION
select size and degree of repetition within the generated fault tree.
Fault trees were generated of the order of 4000 gates. This technique was found to be very
ESSENTIAL
effective in DIGITAL
testing the
SKILLS
AFTG as the generated fault trees are more complex than would normally
be produced.
Conclusion
The technique described above was very good in generating complex tests. It can be applied
when the tests require complex structures, have relatively simple semantics and there is a
means to check the results automatically.
EVENTS
GraemeCALENDAR
Parkin, National Physical Laboratory
ARTICLES, OPINION AND RESEARCH
IN FOCUS
/
/
/
/
Random Test Generator - Bridging the gap
https://www.bcs.org/membership-and-registrations/member-communities/software-testing-specialist-group/the-tester/newslette…
3/3
Download