An empirical study of the reliability of UNIX utilities
Communications of the ACM
Testing object-oriented systems: models, patterns, and tools
Testing object-oriented systems: models, patterns, and tools
Automatic extraction of object-oriented component interfaces
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Modular architecture for a toolset supporting OCL
Science of Computer Programming - Special issue on unified modeling language (UML 2000)
The grand challenge of Trusted Components
Proceedings of the 25th International Conference on Software Engineering
Automated Robustness Testing of Off-the-Shelf Software Components
FTCS '98 Proceedings of the The Twenty-Eighth Annual International Symposium on Fault-Tolerant Computing
JCrasher: an automatic robustness tester for Java
Software—Practice & Experience
Practical refinement-type checking
Practical refinement-type checking
Modeling and Verification Using UML Statecharts: A Working Guide to Reactive System Design, Runtime Monitoring and Execution-based Model Checking
Feedback-Directed Random Test Generation
ICSE '07 Proceedings of the 29th international conference on Software Engineering
A state-based approach to integration testing based on UML models
Information and Software Technology
Test Sequence Generation For Integration Testing Of Component Software1
The Computer Journal
Robustness testing for software components
Science of Computer Programming
A graph-based implementation for mechanized refinement calculus of OO programs
SBMF'10 Proceedings of the 13th Brazilian conference on Formal methods: foundations and applications
Proceedings of the 14th international conference on Model driven engineering languages and systems
A systematic review of software robustness
Information and Software Technology
Software and Systems Modeling (SoSyM)
Accelerated robustness testing of state-based components using reverse execution
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Accelerated model-based robustness testing of state machine implementations
ACM SIGAPP Applied Computing Review
Hi-index | 0.00 |
Component based development allows to build software upon existing components and promises to improve software reuse and reduce costs. To gain reliability of a component based system, verification technologies such as testing can be applied to check underlying components and their composition. Conformance testing checks the consistency between the behavior and component specifications. On the other hand, robustness testing detects vulnerability of software with unexpected input or stressful environment. Existing robustness testing tools aim to crash components with preset values of different data types. But they do not take into account component states, which are vital to the detecting robustness problem of a component. We propose a state machine based approach to detect robustness problems of components. Firstly, a set of paths is generated to cover transitions of the state machine. Test inputs which follow the paths achieve high coverage of the system states and examine more transitions than stateless API testing. Secondly, invalid inputs and inopportune method calls are fed to the component in different states to test the robustness. When unexpected exceptions arise in the test runs, robustness failures are reported. We do a case study on a component from an open source software and it results in positive results.