based project forecasting application. EPCOS is one
of the largest manufacturers of passive components
for electronic devices.
Project forecasting was, initially, not supported
through a computer system. Originally, external sales
representatives worked together with customers on
the design of electronic devices which embed EP-
COS’ products. They told Marketing which types
and volumes of components would be required, and
hence, should be produced in the future. All infor-
mation concerning product forecasting was gathered
by Marketing through phone and email. Eventually,
they sent out orders to the factories which assessed
the requests, planned the production, and estimated
the delivery dates. In order to streamline this infor-
mation flow, the company decided to develop and set
up a new web-based forecasting application.
The forecasting application has a typical 3-tier ar-
chitecture with a client layer, a web interface and a
database. The client is used by the sales represen-
tatives, with operations concerning project tracking
and forecasting. The web service connects the client
application database, and provides the business logic
and authentication features. The application is used
to forecast orders and calculate their budgets. Ini-
tially, it was done on a yearly basis, making forecasts
inaccurate. The goal was to increase accuracy by in-
creasing the frequency with which representatives up-
date the database. Additionally, tracking of forecasts
should be implemented, and access should be possi-
ble through a web interface. With the new system, the
factories are now able to view and confirm the fore-
casts placed by the marketing department, and they
can already start production before a concrete order is
placed. This improves delivery time considerably.
The project was developed on typical PCs, con-
necting to Windows servers. The servers we used
were Windows 2000 Servers running Microsoft .NET
2003 runtime libraries and IIS. The size of the project
is, with some 3 person years, rather small. However,
the system is typical in terms of size and complexity
for this development unit, so that we can use the expe-
riences gathered here, well for future projects. During
the project, we applied an iterative development pro-
cess. We had in total three iterations with a length of
two and a half months each. Before this project was
begun other developers had already worked on a pro-
totype system for approximately 6 months. The first
month of this project was used to gather requirements
from the “customers” (from within the company), and
understand their problems. The project was staffed
with some 2 FTE programmer positions, with 1/2 FTE
allocated to testing. The project team comprised two
graduates and one experienced programmer/tester.
4 EVALUATION DURING THE
CASE STUDY
TDD proposes to test every single atomic piece of
implementation in order to facilitate changes. After
devising a test, it should be realized and executed as
soon as the code to be tested becomes available. Fi-
nally, the code is refactored according to the outcome
of the test. Tests should be independent from each
other, meaning that one code piece should only be
assessed by one test, so that when this code piece is
changed, only one test has to be adapted. If tests were
not independent, we would have to amend all tests
that are somehow linked to the tested code when a
change imposes a code update. If that was not the
case, we would have to maintain a trace table that
links code pieces to corresponding test cases. It is,
therefore, important to keep in mind that poorly or-
ganized tests can impede code changes considerably,
which would be exactly the opposite of what we want
from using TDD.
Usability claim. The first question to answer is if
developers are able to use TDD anywhere in devel-
opment project, and continue using it. Since there is
not a predefined development process enforced, the
focus here is on using the TDD as a practice. If it
is too much effort to use TDD, developers will even-
tually let go off the practice which is especially the
case in small projects, where mostly no strict stan-
dard processes are defined. In order to get an idea of
usability of TDD over the lifetime of our project, ev-
ery time a development phase finished, the changes
were committed to the source repository. The com-
mits in the repository have been monitored for six
months throughout the development cycle.
Figure 1 and Figure 2 display the commits per
task category performed in percent and in absolute
numbers, respectively. Month 3 is not a very re-
liable data point, since it was the beginning of a
new iteration within the project. The figures show
that Test/Works/Refactored slightly go down making
place for more bug fixes. The figures indicate TDD
is still adopted by the developers, and more time is
spent on fixing bugs. After each new test case written,
there was a commit, and the the conclusion is primary
based on looking at the time spent for writing tests.
We could observe that the time spent on writing tests
was still around 50According to the programmers, the
charts give a good indication of the issue. During
this cycle, the Test/Works/Refactored sequence was
omitted selectively. This was due to the type of code,
e.g., user interfaces are hard to test. Figure 3 con-
firms this experience in that the effort spent for test-
EVALUATION OF TEST-DRIVEN DEVELOPMENT - An Industrial Case Study
105