Article Preview
Top1. Introduction
Image processing applications continue to provide more features, handle larger data and generate complex outputs. Advancement in signal processing and digital imaging devices has enabled their extensive use. These applications play a vital role in our daily life such as medical imaging, surveillance, biometrics etc., and the human dependence on these systems has increased the demand of their reliability.
Testing is a practical approach to evaluate the quality of these systems which includes input generation, test execution and evaluation of output. Generation of test images and evaluation of output images are considered a challenging task due to complex nature of images and their visual semantics. Currently, these applications are tested by giving manually crafted test images or commonly used standard test images. The outputs of these images are analyzed by visual inspection carried out by domain expert. This procedure is tedious and sometimes ineffective in a way that a human inspector can only analyze a limited number of images which may not enough to find out subtle errors. Automatic output image analysis is required to make the testing procedure cost effective and larger scaled.
Let function be an implementation of algorithm and be a subset of input space given by. Function is executed to produce output, whereas set of expected output of function is given by. Test oracle is a mechanism to determine whether the executed test has passed or failed. In the article by (Zhou & Huang, 2004), the authors says that in output evaluation, the actual output is compared with the expected output to analyze the correctness i.e. whether, or not. In the books by (Binder, 2000)(Weyuker, 1982), the authors says that in practice, the test oracle is either not available or very expensive to apply, which is known as test oracle problem. In case of image processing applications, sometimes test oracle cannot be clearly defined, e.g. visually similar images may have slight difference at pixel level.