system quality? Testing can be used to show the
presence of bugs, but never their absence [4]. In
spite of how much testing is performed, the team can
never guarantee that an application is free of defects.
The possible combinations of the input and the
execution paths are too many to perform exhaustive
testing. Program testing is not a simple process.
7.1 Project X: Manual Test Plan
Since the programmers in Project X did not write
automated tests for the entire system, they developed
a 35-page comprehensive manual test plan to
validate system behaviours. The manual test plan
contained test criteria and expected results to guide
the users. In response to traditional software
development practice, the customers performed an
extensive manual user acceptance testing regimen
for project sign off.
7.2 Project Y: Customer Sign Off
The programmers in Project Y had a series of
automated tests that targeted to validate a wide range
of business logics. These tests became a
precondition for project sign off. Hence, the
customers performed selective manual tests rather
than extensive manual tests. As a result, the
influence of test driven development practice
reduced time from manual testing.
7.3 Lessons Learned
According to PMBOK (PMI, 2004), quality is the
degree to which a set of inherent characteristics
fulfil requirements. It is documented in requirement
specifications. It can be measured by a combination
of automated tests and manual tests
The automated tests should be executed as
frequently as possible to reduce repetitive tests
manually. They fill in the gaps incurred from
manual testing. This is especially the case when the
team stress level surfaced or human judgment started
to degrade.
During software maintenance stage, changes to
the automated tests should be made prior to changes
to the source codes. Therefore, tests are always kept
up-to-date with the specifications and code. This
approach requires strict discipline and familiarity to
the automated test architecture. Regardless of how
extensive automated tests are developed, manual
tests must still be performed, to some extent, in
order to assure the look and feel of the system. This
also increases system usability. As a result, any
tuning requirements can be identified and completed
prior to the production release.
Testing requires team experience and customer
involvement. Therefore, the trick is to know when
to stop testing, while at the same time keeping the
likelihood of having the application fail post-
deployment to under the target reliability objective.
A balance of pair programming, code reviews,
inspections, traditional manual testing, and user
acceptance testing provide a complementary
mechanism to test driven development for finding
defects and deliver quality and reliable software.
8 CONCLUSION
There is no such thing as instant success in test
driven development. However, there are clues
which can enable positive results. This paper used
the lessons learned from two teams to address
questions surrounding test driven development. Any
software development team can leverage these
lessons learned and develop their own version of test
driven development techniques to fit into their
unique team environment. Under these conditions,
we have a better chance of success in applying test
driven development.
REFERENCES
Beck, K., 2000. Extreme Programming Explained,
Addison Wesley Professional, p 116-117.
Bertolino, A., 2001. Software Testing, Guide to the
Software Engineering Body of Knowledge, Software
Engineering Coordinating Committe, IEEE.
Caputo, W., 2004. TDD Pattern: Do not Cross
Boundaries,
http://www.williamcaputo.com/archives/000019.html
Gamma, E., Helm, R., Johnson, R., Vlissides, J., 1995.
Design Patterns, Addison Wesley.
Humphrey, W., 1989. Managing the Software Process –
SEI Series in Software Engineering, Addison Wesley.
McBreen, P., 2002. Becoming a Software Developer Part
2: Test Driven Development with Ruby,
http://www.informit.com/articles/article.asp?p=26339
&seqNum=5
Mock Object, Project Description and Goals, 2003.
http://www.mockobjects.com
PMI, 2004. A Guide to the Project Management Body of
Knowledge, ANSI.
Poppendieck, M., Poppendieck T., 2003. Lean Software
Development – An Agile Toolkit, Addison Wesley.
Schum P., Punke S., 2001. Object Mother, XP Universe
Conference.
ICSOFT 2006 - INTERNATIONAL CONFERENCE ON SOFTWARE AND DATA TECHNOLOGIES
164