The document discusses challenges faced by a development team working within a large organization on a SOA project. Key challenges included long development cycles, separate testing teams, infrequent releases, and a lack of feedback mechanisms. The team adopted practices like TDD, trunk-based development, service mocking, and telemetry to reduce their cycle times, minimize risks, and improve quality despite the constraints of the larger organization. While integration issues persisted due to assumptions between teams, the team was able to react quickly to changes and had very low defect rates, though they did not significantly influence practices outside their team.
5. The Org
Large, horizontally sliced programme
!
Fixed-price contracts (inflexibility)
!
DevOps and testers in separate teams
6. The Org
Large, horizontally sliced programme
!
Fixed-price contracts (inflexibility)
!
DevOps and testers in separate teams
!
Theory X (leading to endemic risk/change
aversion)
10. The Process
“Agile” but….
!
Lack of feedback and improvement mechanisms
!
Enabling technical practices neglected
!
Very infrequent live releases, tons of WIP
11. The Process
“Agile” but….
!
Lack of feedback and improvement mechanisms
!
Enabling technical practices neglected
!
Very infrequent live releases, tons of WIP
!
Long cycle times, but nobody seemed to notice
23. The Pipeline
No pre-test integration environments
!
Very locked-down test environments
!
Separate test team per test environment -
ReleaseTesting3
!
!
!
24. The Pipeline
No pre-test integration environments
!
Very locked-down test environments
!
Separate test team per test environment -
ReleaseTesting3
!
Test automation team building vast Selenium suite
!
25. ENERGIZED WORK / Metal Box Factory Unit 323 30 Great Guildford Street London SE1 0HS / www.energizedwork.com
!
!!
Survival!
!
27. What does (as) good (as we can manage)
look like?
Keep our own cycle time down, but don’t locally
optimise
28. What does (as) good (as we can manage)
look like?
Keep our own cycle time down, but don’t locally
optimise
!
Minimise the risks we can control, manage those
we can’t
29. What does (as) good (as we can manage)
look like?
Keep our own cycle time down, but don’t locally
optimise
!
Minimise the risks we can control, manage those
we can’t
!
Don’t compromise on quality (even if others are)
30. The Basics
TDD + ATDD
!
Trunk-based development
!
Build discipline
!
Small batches (commits, pushes, releases)
49. SOAP minus WSDL
groovy-ws-lite - XML builders for SOAP messages,
not generated source
!
Tolerant reader
!
Reduced need for synchronised releases
50. SOAP minus WSDL
groovy-ws-lite - XML builders for SOAP messages,
not generated source
!
Tolerant reader
!
Reduced need for synchronised releases
!
Use WSDL for unit tests (with off switch)
61. Exploratory Testing as Peer Review
Sneaky tunnel to the test environment
!
Guided by common gotchas list
!
Reduce pressure on bottleneck - the testers
64. Did it work?
We didn’t work weekends (everyone else did)
!
Able to react quickly to late, complex changes
65. Did it work?
We didn’t work weekends (everyone else did)
!
Able to react quickly to late, complex changes
!
Defect rate so low that business sponsors thought
there was a reporting problem
67. Did it work?
Integration bugs due to bad assumptions about
semantics persisted
!
Manual testing remained a bottleneck
68. Did it work?
Integration bugs due to bad assumptions about
semantics persisted
!
Manual testing remained a bottleneck
!
Failed to significantly influence practices outside
our team
69. ENERGIZED WORK / Metal Box Factory Unit 323 30 Great Guildford Street London SE1 0HS / www.energizedwork.com
!
!!
Next time we’ll…!
!
70. …shun container security
Tight coupling
!
Frequent nasty surprises on deployment to test
environments
!
Hard to mock effectively for testing
71. …keep the build time down
Heavy-heavy-heavyweight framework (Grails)
!
Selenium overuse
!
Build breakage frequency increased with duration
!
Temptation to skimp on new test cases
!
Adding concurrency afterwards is hard
72. …choose a better optimised tech stack
Wire protocol supporting loose coupling and
evolution
!
Small framework - fast startup, small footprint
under no load
!
Embedded container - fast, simple deployments,
no compatibility hassles
!
Minimise need for browser-driven tests
73. If you only take away one thing
Don’t settle for the lowest common denominator -
CD can be practiced in hostile environments, and
it’s worth it!
74. ENERGIZED WORK / Metal Box Factory Unit 323 30 Great Guildford Street London SE1 0HS / www.energizedwork.com
!
!!
Ta!!
!
!
!
@TomAkehurst!
https://github.com/tomakehurst