Improving software testing by employing software fault prediction methods & test case prioritization techniques

Written by Dr Golnoush Abaei, School of Information Technology

As today’s software grow rapidly in size and complexity, the prediction of software reliability plays a crucial role in a software development process. Reliability is a broad concept and it is applied whenever we expect something to behave in a certain way. A system without faults is considered to be highly reliable but constructing a correct system is a difficult task.

Software fault is an error situation of the software system that is caused by explicit and potential violation of security policies at runtime because of wrong specification and inappropriate development of configuration.

Many software disasters such as NASA Mars Climate Orbiter in 1999, European Space Agency's Ariane 5 rocket in 1996, North eastern united states and Ontario Canada blackout in 2003, Overexposure of radiation therapy patients in National Cancer Institute of Panama City in 2000 and may more, were happened due to lack of testing.

Quality assurance tasks such as testing, verification and validation, fault tolerance, and fault prediction play a major role in software engineering activities.

Software testing is an important and expensive task during the software development process which guarantees software quality and it has the potential to save time and budget by recognising defects as early as possible and delivering a more defect-free product.

One of the methods to improve the testing process is fault prediction which is used when a software company needs to deliver a finished product while it has limited time and budget for testing it. Fault prediction approaches identify parts of the system that are more defect prone. However, when the defect data or quality-based class labels are not identified or the company does not have similar or earlier versions of the software project, researchers cannot use supervised classification methods for fault prediction. Several techniques have been proposed to predict the fault proneness of software modules in the absence of fault data. However, the application of these techniques requires an expert assistant and is based on fixed thresholds and rules, which potentially prevents obtaining optimal prediction results.

In order to overcome mentioned limitations, and identify fault proneness of modules in software projects with high accuracy, and improve model generalisation ability, we focus on automated software fault prediction model using semi-supervised hybrid methods.

Case-Based process

Another method to improve the testing process while reducing the testing time and expenses is using test case prioritisation and test case selection. Test cases could be prioritised or selected based on some improved methods so during their execution, only selected or high prioritised ones, are executed which is beneficial for delivering a high quality product specially when project is behind schedule and over budget.

Both mentioned methods can improve the effectiveness of software testing processes.