SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
5.
From: Kent Beck
To: Jeff Sutherland <jsutherland>
Reply: 70761.1216@compuserve.com
Date: Mon, 15 May 1995 18:01:15 -0400 (EDT)
Subj: HBR paper
_________________________
Is there a good place to get reprints of the SCRUM paper from
HBR? I've written patterns for something very similar and I want to
make sure I steal as many ideas as possible.
Kent
5
8.
“Continuous Integration is a software
development practice where members of a
team integrate their work frequently,
usually each person integrates at least daily
- leading to multiple integrations per day.
Each integration is verified by an
automated build (including test) to detect
integration errors as quickly as possible.”
-Martin Fowler
8
24.
1. Compile & Build
Commit 2. Unit Tests
3. Integration Tests
4. Report Errors
A broken build or
Checkout integration test
here ...
24
25.
1. Compile & Build
Commit 2. Unit Tests
3. Integration Tests
4. Report Errors
A broken build or
Checkout integration test
here ...
will get propagated
here, here and here.
25
26.
The Friday Afternoon Pattern of
broken builds.
26
27.
Delivering smaller increments
of well tested functionality.
27
44.
TDD is a method of designing
software, not merely an
approach to testing.
44
45.
“We found that test-first
students on average wrote more
tests and, in turn, students who
wrote more tests tended to be
more productive.”
- Erdogmus, Hakan; Morisio,
Torchiano
45
46.
Over a period of time, TDD will
lead to suite of automated
integration tests.
46
47.
References
Erdogmus, Hakan; Morisio, Torchiano. “On the Effectiveness of Test-first
✦
Approach to Programming,” Proceedings of the IEEE Transactions on Software
Engineering, 31(1). January 2005. (NRC 47445). “We found that test-first students
on average wrote more tests and, in turn, students who wrote more tests tended to
be more productive.”
Newkirk, JW and Vorontsov, AA. “Test-Driven Development in Microsoft .NET,”
✦
Microsoft Press, 2004.
Feathers, M. “Working Effectively with Legacy Code,” Prentice Hall, 2004
✦
Beck, K. “Test-Driven Development by Example,” Addison Wesley, 2003
✦
Muller, Matthias M.; Padberg, Frank. “About the Return on Investment of Test-
✦
Driven Development (PDF)” Universitat Karlsruhe, Germany
47
50.
“Refactoring is a disciplined technique for
restructuring an existing body of code,
altering its internal structure without
changing its external behavior.”
- Martin Fowler
50
51.
“Each transformation (called a 'refactoring')
does little, but a sequence of
transformations can produce a significant
restructuring.”
51
52.
double disabilityAmount() {
if (_seniority < 2) return 0;
if (_monthsDisabled > 12) return 0;
if (_isPartTime) return 0;
// compute the disability amount
double disabilityAmount() {
if (isNotEligableForDisability()) return 0;
// compute the disability amount
52
53.
“Refactoring is a disciplined technique for
restructuring an existing body of code,
altering its internal structure without
changing its external behavior.”
- Martin Fowler
53
54.
How do we establish that the
behavior is unchanged?
54
55.
Continuous Integration
and
Test Driven Development
55