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