I. Introduction
Software testing has played an important role in the software development process. It is a process aiming at not only checking the software under test to ensure that it is free from errors and meets customer's needs but also enabling a cost reduction in the maintenance stage [1]. Therefore, more recently, software developers have realised the importance of software testing than in the past. One of the difficulties of current software testing is the lack of free testing tools which provide the appropriate and suitable software testing technique. Most free testing tools (e.g. Selenium [2] and Junit [3]) just perform an automated execution of the system under test. Software testers have to create test cases manually and then input them to these tools [4]. Furthermore, as the testing coverage is the heart of software testing [1], [5]–[7], test cases must be designed to cover all possible testing scenarios for all functionality of the system under test [5], [8]. This is still required in the current automated testing tool.