Automated Software Test Data Generation
IEEE Transactions on Software Engineering
What every computer scientist should know about floating-point arithmetic
ACM Computing Surveys (CSUR)
ACM SIGSOFT Software Engineering Notes
Automated test-data generation for exception conditions
Software—Practice & Experience
Generating Software Test Data by Evolution
IEEE Transactions on Software Engineering
Improving Evolutionary Testing By Flag Removal
GECCO '02 Proceedings of the Genetic and Evolutionary Computation Conference
A Practical System for Mutation Testing: Help for the Common Programmer
Proceedings of the IEEE International Test Conference on TEST: The Next 25 Years
Constructing test suites for interaction testing
Proceedings of the 25th International Conference on Software Engineering
Pseudo-oracles for non-testable programs
ACM '81 Proceedings of the ACM '81 conference
IEEE Transactions on Software Engineering
Evolutionary testing of classes
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Stress testing real-time systems with genetic algorithms
GECCO '05 Proceedings of the 7th annual conference on Genetic and evolutionary computation
Search-based software test data generation: a survey: Research Articles
Software Testing, Verification & Reliability
From genetic to bacteriological algorithms for mutation-based testing: Research Articles
Software Testing, Verification & Reliability
Java Threads
Data Dependence Based Testability Transformation in Automated Test Generation
ISSRE '05 Proceedings of the 16th IEEE International Symposium on Software Reliability Engineering
TimeAware test suite prioritization
Proceedings of the 2006 international symposium on Software testing and analysis
The species per path approach to SearchBased test data generation
Proceedings of the 2006 international symposium on Software testing and analysis
Automated Unique Input Output Sequence Generation for Conformance Testing of FSMs
The Computer Journal
Search Algorithms for Regression Test Case Prioritization
IEEE Transactions on Software Engineering
Proceedings of the 2007 international symposium on Software testing and analysis
Pareto efficient multi-objective test case selection
Proceedings of the 2007 international symposium on Software testing and analysis
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
Automatic Generation of Floating-Point Test Data
IEEE Transactions on Software Engineering
The N-Version Approach to Fault-Tolerant Software
IEEE Transactions on Software Engineering
Empirical evaluation of a nesting testability transformation for evolutionary testing
ACM Transactions on Software Engineering and Methodology (TOSEM)
Introduction to Programming in Java: An Interdisciplinary Approach
Introduction to Programming in Java: An Interdisciplinary Approach
Testability transformation: program transformation to improve testability
Formal methods and testing
The relationship between search based software engineering and predictive modeling
Proceedings of the 6th International Conference on Predictive Models in Software Engineering
Science of Computer Programming
Hi-index | 0.01 |
Testability transformations are source-to-source program transformations that are designed to improve the testability of a program. This paper introduces a novel approach in which transformations are used to improve testability of a program by generating a pseudo-oracle. A pseudo-oracle is an alternative version of a program under test whose output can be compared with the original. Differences in output between the two programs may indicate a fault in the original program. Two transformations are presented. The first can highlight numerical inaccuracies in programs and cumulative roundoff errors, whilst the second may detect the presence of race conditions in multi-threaded code. Once a pseudo-oracle is generated, techniques are applied from the field of search-based testing to automatically find differences in output between the two versions of the program. The results of an experimental study presented in the paper show that both random testing and genetic algorithms are capable of utilizing the pseudo-oracles to automatically find program failures. Using genetic algorithms it is possible to explicitly maximize the discrepancies between the original programs and their pseudo-oracles. This allows for the production of test cases where the observable failure is highly pronounced, enabling the tester to establish the seriousness of the underlying fault.