Everest is a practical tool to check whether an implementation complies with its respective specification, and also generate complete test suites. The conformance checking is provided in a white-box testing mode, where the internal implementation behavior is known. Implementations can be checked against their respective specifications based on a more general conformance relation using regular languages. The classical IOCO relation is a particular case of the new conformance relation and it is also provided by the tool. Moreover, our tool can generate test suites in practical black-box testing scenarios.
Everest is developed in Java and composed by four modules: View, Parser, Automaton Construction, and Verification & Generation. Arrows indicate the data flow among the modules.
The Swing library is used in the View module to create the interface that deals with input and output data. The user can provide IUTs and specification models in Aldebaran format, the conformance verification mode, IOCO or language-based, the regular expressions that model (un)desirable behaviors, and the number of test cases to be generated. Verdicts of conformance testing and the associated details are produced by the tool on conformance verification. In the test suite generation can also be informed an upper bound on the number of states of implementations to be covered, multi-graph and TPs can also be provided for the test generation and execution.
The Parser module checks if the IUT and the specification models given in Aldebaran files are valid. The Automaton construction module gets underlying automaton from IOLTS/LTS model and also the automaton that recognizes the regex received by the view. The process of checking conformance between IUT and specification, and test generation/run is performed by the Verification & Generation module.
An example of Aldebaran file format and its corresponding model. Input labels are tagged by '?', and output labels are tagged by '!'.
The header indicates the initial state, the number of transitions and the number of states, respectively.
Each line below the header is a transition, which is defined as a tuple (s,l,p), where 's' is source state, 'l' is the label of transition and 'p' is the target state
Fields:
Fields:
Everest is developed in Java and the Bytecode is available for download click here.
The source code is available on the Gitlab Repository click here.
Using the above models, the configuration view must be filled in according to the figure on the side. The models are IOLTS. In .aut file, the input labels are started with '?' and output labels with '!'
Example 1: The IOCO verification between the S and R models result in non-conformity, and the test cases generate are {b,aa,ba,aaa,ab,ax,abb,axb}.
Example 2a: The IOCO verification between the S and Q models result in conformity.
Example 2b: The language-based conformance verification using the models S, Q and regex D=(a|b)*ax and F=∅, result in non-conformity verdict, and the test cases generate are {ababax, abaabax}.
Example 3a: The mutigraph generation using specification S, and the coverage of implementations with up to 4 states.
Example 3b: The test purpose generation using multigraph (generated in Example 3a) and run on implementation R. The tool detected a fault when generated and executed the third test purpose.
Example 3c: The test run using the test purposes at the 'TPs' folder (generated in Example 3b), and run on implementation R. A fault was found.