A practical algorithm for exact array dependence analysis
Communications of the ACM
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Model checking
A static analyzer for finding dynamic programming errors
Software—Practice & Experience
Symbolic execution and program testing
Communications of the ACM
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Symbolic Model Checking
Software Testing Techniques
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Generating finite state machines from abstract state machines
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
A Simple and Practical Approach to Unit Testing: The JML and JUnit Way
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
A Comparison of the BTT and TTF Test-Generation Methods
ZB '02 Proceedings of the 2nd International Conference of B and Z Users on Formal Specification and Development in Z and B
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
Bogor: an extensible and highly-modular software model checking framework
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
Generating Tests from Counterexamples
Proceedings of the 26th International Conference on Software Engineering
Test input generation with java PathFinder
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Rostra: A Framework for Detecting Redundant Object-Oriented Unit Tests
Proceedings of the 19th IEEE international conference on Automated software engineering
JCrasher: an automatic robustness tester for Java
Software—Practice & Experience
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
POOC: a platform for object-oriented constraint programming
ERCIM'02/CologNet'02 Proceedings of the 2002 Joint ERCIM/CologNet international conference on Constraint solving and constraint logic programming
Software verification with BLAST
SPIN'03 Proceedings of the 10th international conference on Model checking software
DART: directed automated random testing
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
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
Test input generation for red-black trees using abstraction
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Generalizing symbolic execution to library classes
PASTE '05 Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
A framework and tool supports for generating test inputs of AspectJ programs
Proceedings of the 5th international conference on Aspect-oriented software development
Test input generation for java containers using state matching
Proceedings of the 2006 international symposium on Software testing and analysis
From daikon to agitator: lessons and challenges in building a commercial tool for developer testing
Proceedings of the 2006 international symposium on Software testing and analysis
Efficient software model checking of data structure properties
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Automatic data environment construction for static device drivers analysis
Proceedings of the 2006 conference on Specification and verification of component-based systems
Compositional dynamic test generation
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Perspectives on automated testing of aspect-oriented programs
Proceedings of the 3rd workshop on Testing aspect-oriented programs
Feedback-Directed Random Test Generation
ICSE '07 Proceedings of the 29th international conference on Software Engineering
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Formal Software Analysis Emerging Trends in Software Model Checking
FOSE '07 2007 Future of Software Engineering
Towards a Framework for Differential Unit Testing of Object-Oriented Programs
AST '07 Proceedings of the Second International Workshop on Automation of Software Test
Delta execution for efficient state-space exploration of object-oriented programs
Proceedings of the 2007 international symposium on Software testing and analysis
Variably interprocedural program analysis for runtime error detection
Proceedings of the 2007 international symposium on Software testing and analysis
Dynamic test input generation for database applications
Proceedings of the 2007 international symposium on Software testing and analysis
Automated Software Engineering
State space exploration using feedback constraint generation and Monte-Carlo sampling
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Contract driven development = test driven development - writing test cases
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Automated Software Engineering
Test data generation for programming exercises with symbolic execution in Java PathFinder
Proceedings of the 6th Baltic Sea conference on Computing education research: Koli Calling 2006
Improving evolutionary class testing in the presence of non-public methods
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Evacon: a framework for integrating evolutionary and concolic testing for object-oriented programs
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Creating and visualizing test data from programming exercises
Informatics in education
Heuristics-based infeasible path detection for dynamic test data generation
Information and Software Technology
Search based software testing of object-oriented containers
Information Sciences: an International Journal
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Universal symbolic execution and its application to likely data structure invariant generation
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Automatic, evolutionary test data generation for dynamic software testing
Journal of Systems and Software
Using a pilot study to derive a GUI model for automated testing
ACM Transactions on Software Engineering and Methodology (TOSEM)
State Isomorphism in Model Programs with Abstract Data Structures
FORTE '07 Proceedings of the 27th IFIP WG 6.1 international conference on Formal Techniques for Networked and Distributed Systems
Profile-guided program simplification for effective testing and analysis
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Automation of broad sanity test generation
Programming and Computing Software
Whispec: white-box testing of libraries using declarative specifications
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
Dynamic Symbolic Execution for Testing Distributed Objects
TAP '09 Proceedings of the 3rd International Conference on Tests and Proofs
Unit Testing for Domain-Specific Languages
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
Integration of verification methods for program systems
Programming and Computing Software
The dependence condition graph: Precise conditions for dependence between program points
Computer Languages, Systems and Structures
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Predicting Effectiveness of Automatic Testing Tools
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
UnitCheck: Unit Testing and Model Checking Combined
ATVA '09 Proceedings of the 7th International Symposium on Automated Technology for Verification and Analysis
Error Detection in Concurrent Java Programs
Electronic Notes in Theoretical Computer Science (ENTCS)
Type-dependence analysis and program transformation for symbolic execution
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
Generating unit tests from formal proofs
TAP'07 Proceedings of the 1st international conference on Tests and proofs
White-box testing by combining deduction-based specification extraction and black-box testing
TAP'07 Proceedings of the 1st international conference on Tests and proofs
GenUTest: a unit test and mock aspect generation tool
HVC'07 Proceedings of the 3rd international Haifa verification conference on Hardware and software: verification and testing
Mutation-driven generation of unit tests and oracles
Proceedings of the 19th international symposium on Software testing and analysis
OCAT: object capture-based automated testing
Proceedings of the 19th international symposium on Software testing and analysis
Random unit-test generation with MUT-aware sequence recommendation
Proceedings of the IEEE/ACM international conference on Automated software engineering
Random testing for higher-order, stateful programs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Testing container classes: random or systematic?
FASE'11/ETAPS'11 Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software
kb-anonymity: a model for anonymized behaviour-preserving test and debugging data
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Symbolic execution with mixed concrete-symbolic solving
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Generating parameterized unit tests
Proceedings of the 2011 International Symposium on Software Testing and Analysis
A Parallel Approach to Concolic Testing with Low-cost Synchronization
Electronic Notes in Theoretical Computer Science (ENTCS)
Reducing the number of unit tests with design by contract
Proceedings of the 12th International Conference on Computer Systems and Technologies
Synthesizing method sequences for high-coverage testing
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
H-fuzzing: a new heuristic method for fuzzing data generation
NPC'11 Proceedings of the 8th IFIP international conference on Network and parallel computing
Optimized execution of deterministic blocks in java pathfinder
ICFEM'06 Proceedings of the 8th international conference on Formal Methods and Software Engineering
Eclat: automatic generation and classification of test inputs
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Augmenting automatically generated unit-test suites with regression oracle checking
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Software model checking: searching for computations in the abstract or the concrete
IFM'05 Proceedings of the 5th international conference on Integrated Formal Methods
Automated systematic testing of open distributed programs
FASE'06 Proceedings of the 9th international conference on Fundamental Approaches to Software Engineering
Symbolic execution with abstract subsumption checking
SPIN'06 Proceedings of the 13th international conference on Model Checking Software
Symbolic execution enhanced system testing
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Automated documentation inference to explain failed tests
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Finding errors in multithreaded GUI applications
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Sound empirical evidence in software testing
Proceedings of the 34th International Conference on Software Engineering
SymDrive: testing drivers without devices
OSDI'12 Proceedings of the 10th USENIX conference on Operating Systems Design and Implementation
Understanding myths and realities of test-suite evolution
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Test input generation using dynamic programming
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Efficiently generating structurally complex inputs with thousands of objects
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Hybrid learning: interface generation through static, dynamic, and symbolic analysis
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Feedback-directed unit test generation for C/C++ using concolic execution
Proceedings of the 2013 International Conference on Software Engineering
Automatic testing of sequential and concurrent substitutability
Proceedings of the 2013 International Conference on Software Engineering
Hi-index | 0.02 |
Object-oriented unit tests consist of sequences of method invocations. Behavior of an invocation depends on the method's arguments and the state of the receiver at the beginning of the invocation. Correspondingly, generating unit tests involves two tasks: generating method sequences that build relevant receiver-object states and generating relevant method arguments. This paper proposes Symstra, a framework that achieves both test generation tasks using symbolic execution of method sequences with symbolic arguments. The paper defines symbolic states of object-oriented programs and novel comparisons of states. Given a set of methods from the class under test and a bound on the length of sequences, Symstra systematically explores the object-state space of the class and prunes this exploration based on the state comparisons. Experimental results show that Symstra generates unit tests that achieve higher branch coverage faster than the existing test-generation techniques based on concrete method arguments.