2.3.2 Evaluated Testing Aspects
Testing Activity. In our survey, we were interested
in understanding whether testing is a consolidated
activity, or not, during the development of an OSS
product. Developers, customers and end users have
the perception that testing activities receive less
importance in OSS than in CSS. In their survey,
Zhao and Elbaum found that 58% of the analyzed
projects spent (Zhao and Elbaum, 2003) 20% of the
time on testing, while more than 15% of the projects
spent more than 40% of their time in testing. In
our sampling, we found that 58% of the projects
have a test suite or a testing activity, while the
remaining 42% does not publish the source code of
their testing activities. Specifically, 13 (out of 22)
old projects have an updated test suite, while 9 of
them do not have a testing activity; 5 (out of 10) adult
projects have an updated test suite, 1 project a very
preliminary test suite, and 4 projects do not have a
testing activity; the young project is released with
its test suite. Referring to the project size: the small
project has testing activities; all of the 5 medium
projects have testing activities; only 6 (out of 12)
large projects have a testing activity; and only 4 (out
of 7) very large projects have a testing activity. These
data confirm the Zhao and Elbaum statement: ”it
seems that larger projects tend to spend less time in
their testing phase compared with smaller projects.”
Test Planning. The IEEE Standard for Software Test
Documentation (IEEE, 1998) defines a test plan as:
”A document describing the scope, approach, re-
sources, and schedule of intended testing activities”.
It identifies test items, the features to be tested, the
testing tasks, who will do each task, and any risks
requiring contingency planning. Our investigation
has shown that only 15% of the analyzed projects
plan the testing activities separately, while 6 projects
use the development plan for documenting the testing
activities. This can be explained as for these projects
the focus is on unit testing which is usually performed
by the developers themselves. For the remaining 67%
of the 33 investigated projects, we were not able to
identify any test planning document. This strongly
supports the findings of Zhao and Elbaum (Zhao and
Elbaum, 2000) where more than 80% of the OSS
developer responded that their products do not have
testing plans.
Testing Strategies and Approaches. The Test Strat-
egy defines the strategic plan for how the test effort
will be conducted against one or more aspects of the
target system. Test Approach is the implementati-
on of the test strategy for a specific project. It
typically includes (a) the decisions made that fol-
low based on the (test) project’s goal and the risk
assessment carried out, (b) starting points regarding
the test process, (c) the test design techniques to
be applied, (d) exit criteria and (e) test types to be
performed. 21 of the investigated projects provide no
information about the test strategy and the approach
followed to implement it. The other 12 projects
provide some information on the test strategy and the
test approach. For example, the project ServiceMix
(http://servicemix.apache.org) provides recommen-
dations like ”every major code change must have
a unit test case”, ”the test must provide as much
coverage as possible” or ”every bug filled should
have a unit test case”. Though such recommendations
provide some information on the test strategy, it does
not provide a clear and comprehensive test strategy.
As for this testing aspect, we are not able to
provide a comparison with Zhao and Elbaum work,
because of the lack of this aspect in their survey.
Testing Levels. Testing can be done at different lev-
els; ranging from testing the individual smallest units
of code to testing the completely integrated system.
The analysis has shown that only for 1 project three
levels of testing are defined, namely: unit, integra-
tion and system testing. Unit testing is the preferred
activity (16 projects perform unit tests), while accep-
tance testing is the omitted activity (0 projects have
a serious campaign of acceptance tests). This can
be explained by the interpretation a lot of develop-
ers have regarding unit testing: often, an entire sub-
system is wrongly regarded as a unit, or acceptance
tests are wrongly mixed with unit tests. Just 1 project
has a comprehensive test suite that covers the follow-
ing testing levels: unit; integration; system testing;
and other non-functional tests. In 6 projects, non-
functional tests are also considered besides functional
tests. In Figure 3, we summarize the distribution of
testing levels covered by the investigated projects.
Testing at different levels reduces the costs of re-
pairs since most problems will be exposed early by
the lower testing levels (mostly by the developers
themselves). Having multiple testing levels increases
the chance of uncovering software errors.
Contrariwise to the results of Zhao and Elbaum,
where 68% of the respondents ”provide inputs trying
to imitate user behavior” and only 25% of them ”use
assertions”, our results suggest that the preferred ac-
tivity is unit testing. This can be explained by the
large popularity reached by xUnit frameworks in the
last few years.
HOW DEVELOPERS TEST THEIR OPEN SOURCE SOFTWARE PRODUCTS - A Survey of Well-known OSS Projects
25