An empirical study of the reliability of UNIX utilities
Communications of the ACM
Automated Robustness Testing of Off-the-Shelf Software Components
FTCS '98 Proceedings of the The Twenty-Eighth Annual International Symposium on Fault-Tolerant Computing
Automated-generating test case using UML statechart diagrams
SAICSIT '03 Proceedings of the 2003 annual research conference of the South African institute of computer scientists and information technologists on Enablement through technology
Formal Test-Case Generation for UML Statecharts
ICECCS '04 Proceedings of the Ninth IEEE International Conference on Engineering Complex Computer Systems Navigating Complexity in the e-Engineering Age
JCrasher: an automatic robustness tester for Java
Software—Practice & Experience
Modeling and Verification Using UML Statecharts: A Working Guide to Reactive System Design, Runtime Monitoring and Execution-based Model Checking
State Based Robustness Testing for Components
Electronic Notes in Theoretical Computer Science (ENTCS)
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Robustness testing for software components
Science of Computer Programming
Hi-index | 0.00 |
This paper presents a methodology to test the robustness of reactive state-based software components by executing defined and undefined transitions of a UML Statechart specification, and therefore simulating a usage scenario under normal and abnormal conditions. The Z3 constraint solver is used to generate corresponding test cases. Since robustness testing is time-intensive due to a large number of undefined transitions to be tested, a main advantage of our presented approach is that it accelerates robustness testing by returning to reached states of a component, using reverse execution, and then refining them as a starting point for further tests. Furthermore, the presented approach provides runtime verification capabilities to test transition guards defined in the specification and therefore increases the test significance. This is done without instrumenting the source code. Due to the high acceleration achieved, our approach is well-suited for daily regression testing during component development.