Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
IBM dictionary of computing
Analysis of benchmark characteristics and benchmark performance prediction
ACM Transactions on Computer Systems (TOCS)
Using production grammars in software testing
Proceedings of the 2nd conference on Domain-specific languages
Making scientific computations reproducible
Computing in Science and Engineering
Linkers and Loaders
Generating Test Data with Enhanced Context-Free Grammars
IEEE Software
Massive Stochastic Testing of SQL
VLDB '98 Proceedings of the 24rd International Conference on Very Large Data Bases
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Random Program Generator for Java JIT Compiler Test System
QSIC '03 Proceedings of the Third International Conference on Quality Software
A Comparison of Bug Finding Tools for Java
ISSRE '04 Proceedings of the 15th International Symposium on Software Reliability Engineering
Empirical Software Engineering
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
An empirical study of Java bytecode programs
Software—Practice & Experience
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
Directed test generation using symbolic grammars
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
An Empirical Study of Class Sizes for Large Java Systems
APSEC '07 Proceedings of the 14th Asia-Pacific Software Engineering Conference
Grammar-based whitebox fuzzing
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Wake up and smell the coffee: evaluation methodology for the 21st century
Communications of the ACM - Designing games with a purpose
Distilling the essence of proprietary workloads into miniature benchmarks
ACM Transactions on Architecture and Code Optimization (TACO)
Dependability Benchmarking for Computer Systems
Dependability Benchmarking for Computer Systems
Automatic generation of test cases
IBM Systems Journal
Querying parse trees of stochastic context-free grammars
Proceedings of the 13th International Conference on Database Theory
An empirical investigation into a large-scale Java open source code repository
Proceedings of the 2010 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement
Finding and understanding bugs in C compilers
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Controllable combinatorial coverage in grammar-based testing
TestCom'06 Proceedings of the 18th IFIP TC6/WG6.1 international conference on Testing of Communicating Systems
Testing static analyzers with randomly generated programs
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
CarFast: achieving higher statement coverage faster
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Hi-index | 0.00 |
Benchmarks are heavily used in different areas of computer science to evaluate algorithms and tools. In program analysis and testing, open-source and commercial programs are routinely used as bench- marks to evaluate different aspects of algorithms and tools. Unfor- tunately, many of these programs are written by programmers who introduce different biases, not to mention that it is very difficult to find programs that can serve as benchmarks with high reproducibil- ity of results. We propose a novel approach for generating random benchmarks for evaluating program analysis and testing tools. Our approach uses stochastic parse trees, where language grammar production rules are assigned probabilities that specify the frequencies with which instantiations of these rules will appear in the generated pro- grams. We implemented our tool for Java and applied it to generate benchmarks with which we evaluated different program analysis and testing tools. Our tool was also implemented by a major soft- ware company for C++ and used by a team of developers to gener- ate benchmarks that enabled them to reproduce a bug in less than four hours.