
2 BACKGROUND AND RELATED 
WORK 
A number of papers related to different aspects of 
testing BPEL processes have already been published 
(Dong, Yu and Zhang, 2006) (Yan et al., 2006) 
(Yuan, Li and Sun, 2006). However, the papers do 
not consider the testing of BPEL processes in which 
the coordinator orchestrates web-services. A method 
of generation of test scenarios for validation of the 
coordinator of a BPEL process was given in 
(Sapiecha and Grela, 2008a). Tests obtained by 
means of the method cover all functional 
requirements for the process and provide high 
validation accuracy (Sapiecha and Grela, 2008b). 
Hence, such tests could also be used as a starting set 
of tests for the process.  
Quality of generated test sets is an important 
issue, as only tests of high quality (high ability to 
detect faults) can help to provide dependable 
products (Wagner and Gericke, 2008) (Farooq and 
Lam, 2009). Several studies have proved validity of 
the mutation testing as a powerful technique for 
testing programs and for evaluation of the quality of 
test sets (Farooq and Lam, 2009) (Estero-Botaro, 
Palomo-Lozano and Medina-Bulo, 2008). A quality 
of the test set is determined by a ratio of mutants 
detected by the tests over all non-equivalent mutants 
(a mutation score). The higher is the mutation score 
the higher is the quality of tests. In the paper results 
of mutation testing were used as the reference when 
the results of fault injection were evaluated. The 
mutation testing is a white box testing technique that 
creates a large number of faulty programs (mutants) 
by introducing simple flaws (faults) in the original 
program. If a test case is able to detect the difference 
between the original program and the mutant, it is 
said that such test case kills the mutant. On the 
contrary, if none of the test cases is able to detect a 
difference, it is said that the mutant keeps alive for 
all used test cases. The mutants are created by 
applying so called mutation operators. Each of the 
mutation operators corresponds to a certain category 
of errors that the developer might commit. Such 
operators for various programming languages, 
including BPEL have already been designed (Offutt 
and Untch, 2000) (Woodward, 1993) (Estero-
Botaro, Palomo-Lozano and Medina-Bulo, 2008). 
Fault injection (Hsueh, Tsai and Iyer, 1997) is a 
popular technique that is mainly used for evaluation 
of fault-tolerance of computer systems. It consists in 
injection of deliberate faults into a running system 
and observation of its behaviour. So called fault 
coverage (Hsueh, Tsai and Iyer, 1997) for a set of 
tests is measured. The fault coverage is expressed as 
a percentage of detected faults to all faults injected 
into the system. Fault coverage is used as a metric of 
quality of a set of tests and plays similar role as the 
mutation score for mutation testing.  
Originally fault injection was applied to 
hardware systems, but currently it is also applied in 
software and mixed ones. Software fault injection 
(SFI) is implementation-oriented technique thus it 
targets computer applications and operating systems. 
SFI can be performed in near real-time, allowing for 
a large number of experiments. The technique was 
already applied for systems based on web services 
orchestration to emulate SOA faults at different 
levels (Reinecke and Wolter, 2008) (Juszczyk and 
Dustdar, 2010). The approaches were built upon 
existing fault injection mechanisms. However, these 
solutions are still under development. It is not clear 
which types of SOA faults are supported, and how 
the faults are modelled and injected. Moreover, these 
works do not concern quality of test sets. 
3 PROBLEM STATEMENT 
Quality of a test set impacts results of the testing, as 
only such of the sets which detect all faults in a 
system can answer the question whether the system 
is fault free or not. For object systems tests are 
usually evaluated via mutation testing, but this 
technique is very expensive due to the number of 
mutant that need to be generated, compiled and 
executed against the test set.  
A BPEL process uses web-services but the 
process itself is a web-service, too. Thus it needs to 
be deployed. So this concerns its mutants. The 
deployment is very time consuming because an 
application implementing the process and its related 
files need to be uploaded to a server. Since then the 
web application becomes available to the testing. 
This treatment must be repeated for all of the 
mutants. Thus, in contrast to other kinds of object 
systems, here the mutation testing seems to be rather 
complicated and expensive. In contrast to the 
mutation testing, the software fault injection 
generates faulty versions of the process at a run-
time. No the compilation and the deployment are 
required. Hence, it seems that not the mutation 
testing, but the fault injection should be used to 
evaluate quality of test sets for BPEL processes. 
An experiment aiming at providing this claim is 
presented in the paper. During the experiment, 
mutation testing and fault injection are applied to 
evaluate quality of the same sets of tests derived for 
AnApplicationofSoftwareFaultInjectionforAssessmentofQualityofTestSetsforBusinessProcessesOrchestrating
Web-Services
57