Abstract: |
Creating test cases to cover all functional requirements of real-world systems is hard, even for domain experts.
Any method to generate functional test cases must have three attributes: (a) an easy-to-use formal notation
to specify requirements, from a practitioner’s point of view, (b) a scalable test-generation algorithm, and (c)
coverage criteria that map to requirements.
In this paper we present a method that has all these attributes. First, it includes Expressive Decision Table
(EDT), a requirement specification notation designed to reduce translation efforts. Second, it implements
a novel scalable row-guided random algorithm with fuzzing (RGRaF)(pronounced R-graph) to generate test
cases. Finally, it implements two new coverage criteria targeted at requirements and requirement interactions.
To evaluate our method, we conducted experiments on three real-world applications. In these experiments,
RGRaF achieved better coverage than pure random test case generation. When compared with manual approach,
our test cases subsumed all manual test cases and achieved up to 60% effort savings. More importantly,
our test cases, when run on code, uncovered a bug in a post-production sub-system and captured three
missing requirements in another. |