Knowledge Engineering Support for Intelligent Software Test Optimization

Knowledge Engineering Support for Intelligent Software Test Optimization

DOI: 10.4018/978-1-60960-509-4.ch012
OnDemand:
(Individual Chapters)
Available
$37.50
No Current Special Offers
TOTAL SAVINGS: $37.50

Abstract

Software testing is one of the most important processes in Software Development Life Cycle (SDLC) to ensure quality of software product. A large number of approaches for test data generation and optimization in software testing have been reported with varying degrees of success. In recent years, the application of artificial intelligence (AI) techniques in software testing to achieve quality software is an emerging area of research. It combines the concepts of the two domains AI and Software Engineering and yields innovative mechanisms that have the advantages of both of them. This chapter demonstrates the development of a novel software test sequence optimization framework using intelligent agents based graph searching technique. To ensure the quality, a set of test adequacy criteria such as path coverage, state coverage, and branch coverage have been applied in the approach discussed in this chapter, while achieving optimization.
Chapter Preview
Top

Introduction

Software Testing is the process of executing a program or system with the intent of finding errors (Grottke et.al, 2007, Pressman, 2006). Since it typically consumes at least 50% of the total cost involved in software development; an optimization approach is required for testing without compromising quality (Rudalf et.al, 2006). As Phil McMinn briefed in his paper (McMinn, 2004), exhaustive enumeration of a programs input is infeasible for any reasonably-sized program, yet random methods are unreliable and unlikely to exercise deeper features of software that are not exercised by mere chance.

Software testing is a dynamic activity in which test input generation and execution can be seen as optimization problems. The input domain of most of the programs is likely to be very large. A cost-surface could be formed by applying the cost function to every possible program input. It is this surface which is effectively being searched when attempting to generate test data.

Given the complexities of software systems, it is extremely unlikely that this cost surface would be linear or continuous. The size and complexity of the search space therefore limits the effectiveness of simple gradient-descent or neighborhood searches as they likely to get stuck in locally optimal solutions and hence fail to find the desired test data.

Ultimately, the cost function used for optimization is typically related to the cost and time needed for the testing process, the size of the test suite and the coverage or fault revealing capability of the test cases. The importance of software test optimization has increased in recent years due to customers need for quick delivery of quality software, reduced software development lifecycle, changing markets with global competition and rapid development of new processes and technologies.

Since software testing is a combinatorial problem in which finding solutions at a reasonable computational cost (Harman et al., 2007) is highly complex, it has been classified as NP-complete or NP-hard, or be a problem for which a polynomial time algorithm is known to exist but is not practical. Hence, software test optimization problem is devised as a multi-objective optimization problem and the overall objective function is to minimize the total cost and time needed for the testing process and to maximize the various test adequacy criteria (coverage based, mutation score/fault revealing ability based etc.) to achieve quality. It is formally given in Table 1.

Table 1.
Max.
Coverage (SUT)(1)
Fault Revealing (SUT)(2)
Min.
Cost (Testing Process)(3)
Time (Testing Process)(4)

Intelligent software testing techniques support quality assurance by gathering information about the software being studied (McMinn, 2004). Meta-heuristic search techniques are high-level frameworks which utilize heuristics in order to find solutions to combinatorial problems at a reasonable computational cost (Harman, 2007).

Complete Chapter List

Search this Book:
Reset