Abstract
One goal of software testing may be the identification or generation of a series of test cases that can detect a fault with as few test executions as possible. Motivated by insights from research into failure-causing regions of input domains, the even-spreading (even distribution) of tests across the input domain has been identified as a useful heuristic to more quickly find failures. This finding has encouraged a shift in focus from traditional random testing (RT) to its enhancement, adaptive random testing (ART), which retains the randomness of test input selection, but also attempts to maintain a more evenly distributed spread of test inputs across the input domain. Given that there are different ways to achieve the even distribution, several different ART methods and approaches have been proposed. This paper presents a new ART method, called ART by orthogonal recursive bisection (ART-ORB), which explores the advantages of repeated geometric bisection of the input domain, combined with restriction regions, to evenly spread test inputs. Experimental results show a better performance in terms of fewer test executions than RT to find failures. Compared with other ART methods, ART-ORB has comparable performance (in terms of required test executions), but incurs lower test input selection overheads, especially in higher dimensional input space. It is recommended that ART-ORB can be used in testing situations involving expensive test input execution.
Highlights
In software testing, exhaustive testing is almost never possible, due to the large and complex nature of most software systems
We propose a new adaptive random testing (ART) method that uses repeated geometric bisection of the input domain combined with use of restricted regions, to better spread test inputs
This paper proposes a new ART method that is based on partitioning, but that employs exclusion to achieve the even spread of test inputs across the input domain
Summary
Exhaustive testing (the testing of all possible input combinations) is almost never possible, due to the large and complex nature of most software systems. RT involves selecting inputs in a random manner from the input domain until a stopping condition—such as detection of a failure, complete execution of a test suite, or the passage of a specified amount of time—is reached It can efficiently generate large numbers of candidate tests, and need not have human influence or bias in the test case generation process [4]. The relative ease with which RT can usually be implemented, combined with the ability to calculate reliability estimates [4], make RT an attractive testing option that has been successfully applied in many real-world applications [5], [6], [7] Because it does not make use of additional available information from the program being tested [8], RT‘s failure detection effectiveness may be limited
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have