A web application model offers a high-level description of a web application's behaviour. Using the web application's model to derive test cases serves as a good starting point in testing, since the model is created based on the web application's specification. To improve the capabilities of the derived test cases in revealing faults in the web application's behaviour, these test cases can be improved using search-based testing. In this thesis, we propose a search-based testing approach that explores a large search space of possible combinations of a web application's behaviour. The approach evolves an initial set of model-based test cases to produce more test cases that are more effective in finding failures in the web application's behaviour. Firstly, we present a pseudo-Genetic Algorithm that evolves a set of model-based test cases by mutating or recombining their model-based genes to obtain a set of model-based offspring test cases. The algorithm transforms the offspring test cases into executable test cases. We incorporate the pseudo-Genetic Algorithm in a search-based testing tool called MutateIFML. We describe the model-based test representation which uses the Interaction Flow Modelling Language to model the test cases and the system under test. We define the mutation score of the population as the fitness function for MutateIFML. Secondly, we validate MutateIFML's capability and applicability using two web applications: OpenBiblio and RosarioSIS. We discuss our results and the achievements of MutateIFML in producing effective test cases that are measured by the capability of the population in killing faults that are seeded into these web applications. The validation of the approach reveals that enhancing the single fitness function with a coverage indicator can help in guiding the selection phase of the search-based testing approach. We discover MutateIFML's limitation in scaling up to larger more complicated web applications due to the initial manual task of fault-seeding, the absence of a suitable automated support tool for the testing framework and the complexities of MutateIFML. We then extend the single fitness function used in MutateIFML to include branch coverage. We validate the improved multi-objective fitness function with a small case study that focuses on a module of a web application to examine the viability of the multi-objective fitness function in killing additional mutant systems under test. Although the multiobjective fitness function is able to kill additional mutants, we realise that it can cause MutateIFML's testing cost to increase substantially. Finally, we suggest possible directions for future work. Financial support Scholarship support from the Ministry of Higher Education Malaysia (MoHE) and Universiti Tun Hussein Onn Malaysia (UTHM) in Malaysia is gratefully acknowledged. Temporary scholarship support and financial assistance from the