Selecting Software Test Data Using Data Flow Information
IEEE Transactions on Software Engineering
An experimental evaluation of the assumption of independence in multiversion programming
IEEE Transactions on Software Engineering
Software testing techniques (2nd ed.)
Software testing techniques (2nd ed.)
A Theory of Fault-Based Testing
IEEE Transactions on Software Engineering
The Z notation: a reference manual
The Z notation: a reference manual
Dynamic fault tree models: techniques for analysis of advanced fault tolerant computer systems
Dynamic fault tree models: techniques for analysis of advanced fault tolerant computer systems
Elements of Style: Analyzing a Software Design Feature with a Counterexample Detector
IEEE Transactions on Software Engineering - Special issue: best papers of the 1996 international symposium on software testing and analysis ISSTA'96
A Framework for Specification-Based Testing
IEEE Transactions on Software Engineering
Model checking for programming languages using VeriSoft
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Software unit test coverage and adequacy
ACM Computing Surveys (CSUR)
Structural specification-based testing: automated support and experimental evaluation
ESEC/FSE-7 Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
Proceedings of the Conference on The Future of Software Engineering
Alcoa: the alloy constraint analyzer
Proceedings of the 22nd international conference on Software engineering
Galileo: a tool built from mass-market applications
Proceedings of the 22nd international conference on Software engineering
Validation, Verification, and Testing of Computer Software
ACM Computing Surveys (CSUR)
Symbolic execution and program testing
Communications of the ACM
Chaff: engineering an efficient SAT solver
Proceedings of the 38th annual Design Automation Conference
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Improving Software Tests Using Z Specifications
ZUM '95 Proceedings of the 9th International Conference of Z Usres on The Z Formal Specification Notation
Automating Test Case Generation from Z Specifications with Isabelle
ZUM '97 Proceedings of the 10th International Conference of Z Users on The Z Formal Specification Notation
ZUM '97 Proceedings of the 10th International Conference of Z Users on The Z Formal Specification Notation
Automating the Generation and Sequencing of Test Cases from Model-Based Specifications
FME '93 Proceedings of the First International Symposium of Formal Methods Europe on Industrial-Strength Formal Methods
Sound methods and effective tools for engineering modeling and analysis
Proceedings of the 25th International Conference on Software Engineering
The Galileo Fault Tree Analysis Tool
FTCS '99 Proceedings of the Twenty-Ninth Annual International Symposium on Fault-Tolerant Computing
Formal Semantics for Computational Engineering: A Case Study on Dynamic Fault Trees
ISSRE '00 Proceedings of the 11th International Symposium on Software Reliability Engineering
TestEra: A Novel Framework for Automated Testing of Java Programs
Proceedings of the 16th IEEE international conference on Automated software engineering
Dependability Assessment Using Binary Decision Diagrams (BDDs)
FTCS '95 Proceedings of the Twenty-Fifth International Symposium on Fault-Tolerant Computing
Engineering modeling and analysis: sound methods and effective tools
Engineering modeling and analysis: sound methods and effective tools
Shared Semantic Domains for Computational Reliability Engineering
ISSRE '03 Proceedings of the 14th International Symposium on Software Reliability Engineering
Software assurance by bounded exhaustive testing
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Generalized symbolic execution for model checking and testing
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
Generating tests from UML specifications
UML'99 Proceedings of the 2nd international conference on The unified modeling language: beyond the standard
Using CSP look-back techniques to solve real-world SAT instances
AAAI'97/IAAI'97 Proceedings of the fourteenth national conference on artificial intelligence and ninth conference on Innovative applications of artificial intelligence
yagg: an easy-to-use generator for structured test inputs
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
A new paradigm for programming competitions
Proceedings of the 39th SIGCSE technical symposium on Computer science education
A defect prediction method for software versioning
Software Quality Control
Two case studies in grammar-based test generation
Journal of Systems and Software
Amplifying tests to validate exception handling code
Proceedings of the 34th International Conference on Software Engineering
Modeling agent-based traffic simulation properties in Alloy
Proceedings of the 2012 Symposium on Agent Directed Simulation
Generation of test data structures using constraint logic programming
TAP'12 Proceedings of the 6th international conference on Tests and Proofs
Hi-index | 0.01 |
Bounded exhaustive testing (BET) is a verification technique in which software is automatically tested for all valid inputs up to specified size bounds. A particularly interesting case of BET arises in the context of systems that take structurally complex inputs. Early research suggests that the BET approach can reveal faults in small systems with inputs of low structural complexity, but its potential utility for larger systems with more complex input structures remains unclear. We set out to test its utility on one such system. We used Alloy and TestEra to generate inputs to test the Galileo dynamic fault tree analysis tool, for which we already had both a formal specification of the input space and a test oracle. An initial attempt to generate inputs using a straightforward translation of our specification to Alloy did not work well. The generator failed to generate inputs to meaningful bounds. We developed an approach in which we factored the specification, used TestEra to generate abstract inputs based on one factor, and passed the results through a postprocessor that reincorporated information from the second factor. Using this technique, we were able to generate test inputs to meaningful bounds, and the inputs revealed nontrivial faults in the Galileo implementation, our specification, and our oracle. Our results suggest that BET, combined with specification abstraction and factoring techniques, could become a valuable addition to our verification toolkit and that further investigation is warranted.