Degree Name

Master of Philosophy


School of Computing and Information Technology


Despite endeavour to do their best to eliminate defects and to satisfy the end users as much as possible, developers hardly ever deliver faultless software. It is imperative for software developers to detect the defects and errors by software testing. However, for a long time, the oracle problem has often been an unavoidable challenge for software testing, which indicates that it is unlikely or unaffordable to verify the output given by a piece of software. To mitigate the oracle problem, metamorphic testing has become a popular method. Identification of effective metamorphic relations is critical when applying metamorphic testing. In most of the previous research, testers identify metamorphic relations manually and the way they do this is not systematic. Compared with identifying metamorphic relations case by case in most scenarios, deriving metamorphic relations from a high level of abstraction by a systematic methodology becomes an ambitious goal. For this purpose, this thesis propose a concept of metamorphic relation input patterns. A metamorphic relation input pattern can help both developers and end users to construct various concrete metamorphic relations to detect defects in software under test across many different application domains. Using this method, empirical studies have been further conducted using a variety of popular real-life services and applications. The present research proves the simplicity of the process and the wide applicability of the methodology by showing the detection of many previously unknown failures in the software under test.