6 RESULTS
6.1 Identification of Variability Within
Junit Tests
When we started the porting of the software, we were
not aware that Junit tests incorporate that high a de-
gree of variability. Most of the tests have not been
written with portability in mind which, in the begin-
ning, made our approach difficult.
6.2 Initiative Came from a Programmer
The initiative for changing the legacy testing system
came from a programmer who was involved in the
porting of the software. For those who were involved
in these activities it was initially almost impossible to
keep up with the porting of the test cases. The guide-
lines for writing test cases which we developed helped
a lot.
6.3 There is a Need for Training
We experienced that the appropriate coding of test
cases requires the training of programmers. Other-
wise they are not aware of the problems and do not
create platform-independent tests. We created a set
of guidelines and provided training to the program-
mers. The resulting awareness mitigated many prob-
lems during the porting.
6.4 Low Overhead
The overhead of the methodology is low, if it is ad-
justed at the start of a project. The overhead is then
limited to training programmers and keeping to the
coding guidelines. If the methodology is introduced
at a later stage, the additional work is higher because
all tests have to be refactored and it usually takes some
time for people to become familiar with it.
6.5 High Benefit
If the embedded software is used on more than one
hardware platform, the benefit of the methodology is
high. In embedded systems, there are usually several
hundred or thousand tests that could be reused. With
the number of supported PF the benefit also increases
with comparably little overhead.
7 RELATED WORK
Software Product Line Engineering (Pohl et al.,
2005)(Clements and Northrop, 2002) aims at system-
atically reusing software. For this purpose, a base
of reusable software components, the product family
is maintained. Rules of aggregation are explicitly
defined for code and tests.
Platform-based methodologies for embedded systems
are given in (Sangiovanni-Vincentelli and Martin,
2001). The authors discuss the specific reuqirements
of a reuse strategy for embedded systems, including
hardware and software. They provide a vision and a
conceptual framework for platform-based software
which starts with a high-level system description.
This description is then refined incrementally.
TDD is part of agile development practices (Cock-
burn, 2006) which are lightweight processes
that make use of feedback methodologies.
Greene (Greene, 2004) gives insight to the ap-
plication and requirements of agile practices on
embedded systems development. He discusses
several facets of XP and Scrum and their adoption of
embedded systems design. He concludes that there is
a positive effect of most of the applied practices.
Grenning (Grenning, 2007) describes special chal-
lenges of TDD in embedded systems. These
challenges are addressed with the embedded TDD
cycle that embraces several stages of testing which
are applied with different frequency. The five stages
range from testing on a workstation to manual testing
in the target. This approach has the benefit that the
most simple testing approaches are applied most fre-
quently. Finally, Greening discusses issues regarding
compiler compatibility and hardware dependencies
and possible solutions regarding TDD.
Karlesky et al. (Karlesky et al., 2007) present the
so-called Model-Conductor-Hardware design pattern
in order to facilitate testing in hardware-dependent
software. This design pattern is adopted from the
Model-View-Presenter (MVP) and the Model-View-
Controller (MVC) patterns. Both patterns address
issues regarding the development and interaction
with Graphical User Interfaces (GUI). A GUI has
similar challenges for programming and testing as
hardware (event-handling, asynchronous communi-
cation and accessibility). Furthermore, a four-tier
testing strategy is presented which deals with issues
in automation, hardware and communication testing.
In (Bohnet and Meszaros, 2005) a case study of
porting software using TDD is presented. The legacy
application is a business software which was ported
to adapt to a new database system. In order to port
the system, the test cases served as a template and
PECCS2015-5thInternationalConferenceonPervasiveandEmbeddedComputingandCommunicationSystems
266