QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Symbolic execution and program testing
Communications of the ACM
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Automated Software Engineering
Symmetry Reduction Criteria for Software Model Checking
Proceedings of the 9th International SPIN Workshop on Model Checking of Software
Automatic software model checking via constraint logic
Science of Computer Programming - Special issue on 12th European symposium on programming (ESOP 2003)
Test input generation with java PathFinder
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Software assurance by bounded exhaustive testing
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
TestEra: Specification-Based Testing of Java Programs Using SAT
Automated Software Engineering
DART: directed automated random testing
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
CUTE: a concolic unit testing engine for C
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Automatic testing of software with structurally complex inputs
Automatic testing of software with structurally complex inputs
Test input generation for java containers using state matching
Proceedings of the 2006 international symposium on Software testing and analysis
Bogor/Kiasan: A k-bounded Symbolic Execution for Checking Strong Heap Properties of Open Systems
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
EXE: automatically generating inputs of death
Proceedings of the 13th ACM conference on Computer and communications security
Constraint Logic Programming using Eclipse
Constraint Logic Programming using Eclipse
Automated testing of refactoring engines
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
DySy: dynamic symbolic execution for invariant inference
Proceedings of the 30th international conference on Software engineering
Grammar-based whitebox fuzzing
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Efficient solving of structural constraints
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Reducing the Costs of Bounded-Exhaustive Testing
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Optimizing Generation of Object Graphs in Java PathFinder
ICST '09 Proceedings of the 2009 International Conference on Software Testing Verification and Validation
MSeqGen: object-oriented unit-test generation via mining source code
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Purely functional lazy non-deterministic programming
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
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
Delayed nondeterminism in model checking embedded systems assembly code
HVC'07 Proceedings of the 3rd international Haifa verification conference on Hardware and software: verification and testing
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
Pex: white box test generation for .NET
TAP'08 Proceedings of the 2nd international conference on Tests and proofs
Refactoring using type constraints
SAS'07 Proceedings of the 14th international conference on Static Analysis
Testing object-oriented programs using dynamic aspects and non-determinism
Proceedings of the 1st Workshop on Testing Object-Oriented Systems
A meta-aspect protocol for developing dynamic analyses
RV'10 Proceedings of the First international conference on Runtime verification
Towards complete reasoning about axiomatic specifications
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Incorporating coverage criteria in bounded exhaustive black box test generation of structural inputs
TAP'11 Proceedings of the 5th international conference on Tests and proofs
Practical, low-effort equivalence verification of real code
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
PREFAIL: a programmable tool for multiple-failure injection
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Praspel: a specification language for contract-based testing in PHP
ICTSS'11 Proceedings of the 23rd IFIP WG 6.1 international conference on Testing software and systems
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Formal testing for separation assurance
Annals of Mathematics and Artificial Intelligence
Mixed constraints for test input generation - An initial exploration
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
TestEra: A tool for testing Java programs using alloy specifications
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Efficient and formal generalized symbolic execution
Automated Software Engineering
Proceedings of the 27th Annual ACM Symposium on Applied Computing
Using coverage criteria on RepOK to reduce bounded-exhaustive test suites
TAP'12 Proceedings of the 6th international conference on Tests and Proofs
Generation of test data structures using constraint logic programming
TAP'12 Proceedings of the 6th international conference on Tests and Proofs
Automated behavioral testing of refactoring engines
Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity
Automated behavioral testing of refactoring engines
Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity
Test input generation using dynamic programming
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Scaling symbolic execution using staged analysis
Innovations in Systems and Software Engineering
Synthesis modulo recursive functions
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Systematic testing of refactoring engines on real software projects
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.01 |
We present an approach for describing tests using non-deterministic test generation programs. To write such programs, we introduce UDITA, a Java-based language with non-deterministic choice operators and an interface for generating linked structures. We also describe new algorithms that generate concrete tests by efficiently exploring the space of all executions of non-deterministic UDITA programs. We implemented our approach and incorporated it into the official, publicly available repository of Java PathFinder (JPF), a popular tool for verifying Java programs. We evaluate our technique by generating tests for data structures, refactoring engines, and JPF itself. Our experiments show that test generation using UDITA is faster and leads to test descriptions that are easier to write than in previous frameworks. Moreover, the novel execution mechanism of UDITA is essential for making test generation feasible. Using UDITA, we have discovered a number of bugs in Eclipse, NetBeans, Sun javac, and JPF.