SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
©ASERT/Suncorp2006-2008
Technical lessons learned
turning the agile dials to eleven!
Dr Paul King
ASERT, Australia
Craig Smith
Suncorp, Australia
Agile 2008 - 1
©ASERT/Suncorp2006-2008
Topics
• Introduction
• Quality Metrics
• Dealing with Boundaries
• Easing the
mocking burden
• Instance providers
• Autochecking
• Atoms, Molecules and
disposable tests
Agile 2008 - 2
Introduction
• Initial goals (dials to ten)
– 100% code coverage from unit tests
– All production code paired and test-driven
– Minimal design up front but an appreciation
for when such design made sense
– Customer focused outcomes
– Full continuous integration
– Daily pair rotation
– Continuous improvement through retrospectives
– High levels of automation
– Light-weight metrics to monitor progress
• Now how can we crank the dials further?
Agile 2008 - 3
©ASERT/Suncorp2006-2008
Agile 2008 - 4
Quality Metrics
• Duplication
– 0% duplication or build breaks (threshold = 4 lines)
• Now cranking back this metric for acceptance tests
• Method and Class Complexity
– Extremely simple classes and code
• Rarely used escape mechanism
• Graph true exceptions over time
• Method and Class Size
– Approx 10 lines per method, 80 lines per class
• 5-7 lines led to Ravioli code so we cranked this back
• Still hard to do try … catch … finally
but for us that need mostly occurs in boundaries
• To split 50 lines, use approx 7 methods of 7 lines not
two 25-line methods or twenty five 2-line methods
©ASERT/Suncorp2006-2008
Dealing with Boundaries
• Boundaries used with 3rd party APIs
• Ways to create
– IDE plugin to create static boundaries
– Groovy to automatically eliminate checked
exceptions through a language feature
– Use autoboundaries of an interface
Agile 2008 - 5
©ASERT/Suncorp2006-2008
package autoboundary.java.io;
public interface File {
String getCanonicalPath();
}
public class FileBoundary {
private File delegate;
public String getCanonicalPath() {
try {
return delegate
.getCanonicalPath();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
Easing the mocking burden…
• Mocking became a pain point
– JMock 1 style mocking, small classes, 100% test
driven, rampant refactoring
• Want to avoid boiler plate set up of tests
– Instead of this:
– Have ‘magic’ framework allowing auto mock creation
• Based on most specific constructor matching fields
• Using naming conventions or annotations (shown):
Agile 2008 - 6
©ASERT/Suncorp2006-2008
private DocumentProperties docProps;
private DocumentReader reader;
private WordCounter counter;
@Before public void before() {
reader = context.mock(DocumentReader.class);
counter = context.mock(WordCounter.class);
docProps = new DocumentPropertiesImpl(reader, counter);
}
@Subject DocumentPropertiesImpl docProps;
@Mock DocumentReader reader;
@Mock WordCounter counter;
…Easing the mocking burden
• Avoid cumbersome expectation DSL:
– Not this:
– Instead this:
– Then have IDE support to convert between the two:
Agile 2008 - 7
©ASERT/Suncorp2006-2008
expectOneCallTo("getName", mockAuthor)
.will(returnValue(name));
name = author.getName();
Instance providers
• Instance/mock creation (annotations):
• Also have auto instance provider (naming
convention example):
– POJOs generated recursively or overridden using
numerous other conventions Agile 2008 - 8
©ASERT/Suncorp2006-2008
@Subject(auto=false) DocumentPropertiesImpl docProps;
@Mock private DocumentReader reader;
@Stub private String fileName;
@Wired private DocumentWriter writer;
String uniqueStringA;
String uniqueStringB;
Summer subject = new Summer();
public void testSumStringsAutoTriangulation() {
assertEquals(
uniqueStringA + uniqueStringB,
subject.sum(uniqueStringA, uniqueStringB));
}
Autochecking
• Numerous checks built in to testing
framework
– Auto null checking for public
methods and public constructors
– Auto check getters and setters
– Particular project-wide rules to
do with final, equals, hashCode
(not covered by checkstyle)
• Numerous types of classes had further
checks
– Immutable
– Serializable
– Components (remotable)
– Data (non-persistent POJO)
– Domain (persistent POJO)
Agile 2008 - 9
©ASERT/Suncorp2006-2008
Atoms, Molecules and disposable tests
• Deleting tests that don’t pull their weight:
– Distinguish between atoms and molecules
– Only support reuse at the molecular level
– Require 100% test coverage at the molecular level
– Can safely discard atomic interaction-based unit tests
• IDE automation allows them to be recreated trivially
– Allow state-based atomic tests to be kept if desired
Agile 2008 - 10
©ASERT/Suncorp2006-2008
Stage 2 Velocity
Agile 2008 - 11
©ASERT/Suncorp2006-2008
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000 Iteration9
Iteration10
Iteration11
Iteration12
Iteration13
Iteration14
Iteration15
Iteration16
Iteration17
Iteration18
Iteration19
Iteration20
Iteration21
Iteration22
Iteration23
Iteration24
Iteration25
Iteration26
Iteration27
ScopeinIdealDeveloperHours
Schedule in Iterations
Release 7 Burn-Up Chart Burn-Up
Future Directions
• Acceptance-TDD or Functional-TDD
when appropriate
– Grails, Tester and Customer involvement
• Evolve how we use TDD & CI
– Disposable Atomic Tests, Groovy,
BDD, EasyB, Instinct, Performance
• Leverage a broader base
of testing approaches
– Jester, AllPairs, Reductio, Theories, Exploratory, Grids
• Further use of DSLs
– Testing, Business Rules, Workflows, Configuration
• Further use of more powerful languages
– Groovy, Scala, Ruby, Polyglot programming
Agile 2008 - 12
©ASERT/Suncorp2006-2008
About the contributing organizations
• About ASERT
– ASERT helps organisations define and make best use of their
eBusiness platforms by providing professional and cost-
effective training and consulting & system development
solutions including but not limited to Agile development,
Java/J2EE development, Groovy and Grails development, SOA
and web services implementations and agile deployment.
• About Suncorp
– Suncorp is one of Australia and New Zealand's largest
diversified financial services providers, supplying banking,
insurance and wealth management products to around 7 million
customers through well-established and recognized brands
such as AAMI, Australian Pensioners Insurance Agency,
Shannons, Vero, Asteron and Tyndall, as well as Suncorp and
GIO. Today, Suncorp is Australia's sixth largest bank and
second largest domestic general insurance group, with over
16,000 staff. Suncorp has representation in 450 offices,
branches and agencies throughout Australia and New Zealand.
Agile 2008 - 13
©ASERT/Suncorp2006-2008

Contenu connexe

Tendances

DevOpsGuys Scaling DevOps @ #CIOWaterCooler - June 2018
DevOpsGuys Scaling DevOps @ #CIOWaterCooler - June 2018DevOpsGuys Scaling DevOps @ #CIOWaterCooler - June 2018
DevOpsGuys Scaling DevOps @ #CIOWaterCooler - June 2018DevOpsGroup
 
Introduction To Enterprise Agility
Introduction To Enterprise AgilityIntroduction To Enterprise Agility
Introduction To Enterprise AgilitySynerzip
 
How To Introduce Cloud Based Load Testing to Your Jenkins Continuous Delivery...
How To Introduce Cloud Based Load Testing to Your Jenkins Continuous Delivery...How To Introduce Cloud Based Load Testing to Your Jenkins Continuous Delivery...
How To Introduce Cloud Based Load Testing to Your Jenkins Continuous Delivery...Jennifer Finney
 
Ralph Jocham, effective agile - Scaled Scrum at Swiss Postal Services | Agile...
Ralph Jocham, effective agile - Scaled Scrum at Swiss Postal Services | Agile...Ralph Jocham, effective agile - Scaled Scrum at Swiss Postal Services | Agile...
Ralph Jocham, effective agile - Scaled Scrum at Swiss Postal Services | Agile...Agile Greece
 
How to Start Your Application Modernization Journey
How to Start Your Application Modernization JourneyHow to Start Your Application Modernization Journey
How to Start Your Application Modernization JourneyVMware Tanzu
 
cdSummit Austin - The Future of Enterprise Service Mangagement in a DevOps Wo...
cdSummit Austin - The Future of Enterprise Service Mangagement in a DevOps Wo...cdSummit Austin - The Future of Enterprise Service Mangagement in a DevOps Wo...
cdSummit Austin - The Future of Enterprise Service Mangagement in a DevOps Wo...Miles Blatstein
 
Artem Kolyshkin - Nexus: How We Do Scrum with 150+ People
Artem Kolyshkin - Nexus: How We Do Scrum with 150+ PeopleArtem Kolyshkin - Nexus: How We Do Scrum with 150+ People
Artem Kolyshkin - Nexus: How We Do Scrum with 150+ PeopleAgile Lietuva
 
From Waterfall to Agile: A ScrumMaster’s View
From Waterfall to Agile: A ScrumMaster’s ViewFrom Waterfall to Agile: A ScrumMaster’s View
From Waterfall to Agile: A ScrumMaster’s ViewTechWell
 
Delivering Better Software Faster (Without Breaking Everything)
Delivering Better Software Faster (Without Breaking Everything)Delivering Better Software Faster (Without Breaking Everything)
Delivering Better Software Faster (Without Breaking Everything)XebiaLabs
 
SONY - Process as Code: Continuous Delivery of a CD Pipeline
SONY - Process as Code: Continuous Delivery of a CD PipelineSONY - Process as Code: Continuous Delivery of a CD Pipeline
SONY - Process as Code: Continuous Delivery of a CD PipelineDevOps Enterprise Summit
 
Continuous Delivery and DevOps at Rabobank
Continuous Delivery and DevOps at RabobankContinuous Delivery and DevOps at Rabobank
Continuous Delivery and DevOps at RabobankXebiaLabs
 
Automated Governance
Automated GovernanceAutomated Governance
Automated GovernanceJohn Willis
 
Agile Defense - Changing the Way Wars Are Fought, Logistics Delivered, and Ho...
Agile Defense - Changing the Way Wars Are Fought, Logistics Delivered, and Ho...Agile Defense - Changing the Way Wars Are Fought, Logistics Delivered, and Ho...
Agile Defense - Changing the Way Wars Are Fought, Logistics Delivered, and Ho...JJ Sutherland
 
Treating Your Pipeline as a Product - Full Day Workshop
Treating Your Pipeline as a Product - Full Day WorkshopTreating Your Pipeline as a Product - Full Day Workshop
Treating Your Pipeline as a Product - Full Day WorkshopManuel Pais
 
Diving Into Docker
Diving Into Docker Diving Into Docker
Diving Into Docker XebiaLabs
 
Soasta | CloudBees webinar 11/12/2015
Soasta | CloudBees webinar 11/12/2015Soasta | CloudBees webinar 11/12/2015
Soasta | CloudBees webinar 11/12/2015SOASTA
 
Apply Scrum to Your Hardware & Manufacturing Projects for Better Results by H...
Apply Scrum to Your Hardware & Manufacturing Projects for Better Results by H...Apply Scrum to Your Hardware & Manufacturing Projects for Better Results by H...
Apply Scrum to Your Hardware & Manufacturing Projects for Better Results by H...SmitsMC LLC
 

Tendances (20)

DevOps in your Oracle Stack
DevOps in your Oracle StackDevOps in your Oracle Stack
DevOps in your Oracle Stack
 
DevOpsGuys Scaling DevOps @ #CIOWaterCooler - June 2018
DevOpsGuys Scaling DevOps @ #CIOWaterCooler - June 2018DevOpsGuys Scaling DevOps @ #CIOWaterCooler - June 2018
DevOpsGuys Scaling DevOps @ #CIOWaterCooler - June 2018
 
Introduction To Enterprise Agility
Introduction To Enterprise AgilityIntroduction To Enterprise Agility
Introduction To Enterprise Agility
 
How To Introduce Cloud Based Load Testing to Your Jenkins Continuous Delivery...
How To Introduce Cloud Based Load Testing to Your Jenkins Continuous Delivery...How To Introduce Cloud Based Load Testing to Your Jenkins Continuous Delivery...
How To Introduce Cloud Based Load Testing to Your Jenkins Continuous Delivery...
 
Ralph Jocham, effective agile - Scaled Scrum at Swiss Postal Services | Agile...
Ralph Jocham, effective agile - Scaled Scrum at Swiss Postal Services | Agile...Ralph Jocham, effective agile - Scaled Scrum at Swiss Postal Services | Agile...
Ralph Jocham, effective agile - Scaled Scrum at Swiss Postal Services | Agile...
 
How to Start Your Application Modernization Journey
How to Start Your Application Modernization JourneyHow to Start Your Application Modernization Journey
How to Start Your Application Modernization Journey
 
cdSummit Austin - The Future of Enterprise Service Mangagement in a DevOps Wo...
cdSummit Austin - The Future of Enterprise Service Mangagement in a DevOps Wo...cdSummit Austin - The Future of Enterprise Service Mangagement in a DevOps Wo...
cdSummit Austin - The Future of Enterprise Service Mangagement in a DevOps Wo...
 
Artem Kolyshkin - Nexus: How We Do Scrum with 150+ People
Artem Kolyshkin - Nexus: How We Do Scrum with 150+ PeopleArtem Kolyshkin - Nexus: How We Do Scrum with 150+ People
Artem Kolyshkin - Nexus: How We Do Scrum with 150+ People
 
From Waterfall to Agile: A ScrumMaster’s View
From Waterfall to Agile: A ScrumMaster’s ViewFrom Waterfall to Agile: A ScrumMaster’s View
From Waterfall to Agile: A ScrumMaster’s View
 
Delivering Better Software Faster (Without Breaking Everything)
Delivering Better Software Faster (Without Breaking Everything)Delivering Better Software Faster (Without Breaking Everything)
Delivering Better Software Faster (Without Breaking Everything)
 
SONY - Process as Code: Continuous Delivery of a CD Pipeline
SONY - Process as Code: Continuous Delivery of a CD PipelineSONY - Process as Code: Continuous Delivery of a CD Pipeline
SONY - Process as Code: Continuous Delivery of a CD Pipeline
 
Continuous Delivery and DevOps at Rabobank
Continuous Delivery and DevOps at RabobankContinuous Delivery and DevOps at Rabobank
Continuous Delivery and DevOps at Rabobank
 
Automated Governance
Automated GovernanceAutomated Governance
Automated Governance
 
Agile Defense - Changing the Way Wars Are Fought, Logistics Delivered, and Ho...
Agile Defense - Changing the Way Wars Are Fought, Logistics Delivered, and Ho...Agile Defense - Changing the Way Wars Are Fought, Logistics Delivered, and Ho...
Agile Defense - Changing the Way Wars Are Fought, Logistics Delivered, and Ho...
 
Treating Your Pipeline as a Product - Full Day Workshop
Treating Your Pipeline as a Product - Full Day WorkshopTreating Your Pipeline as a Product - Full Day Workshop
Treating Your Pipeline as a Product - Full Day Workshop
 
What is DevOps?
What is DevOps?What is DevOps?
What is DevOps?
 
Diving Into Docker
Diving Into Docker Diving Into Docker
Diving Into Docker
 
Soasta | CloudBees webinar 11/12/2015
Soasta | CloudBees webinar 11/12/2015Soasta | CloudBees webinar 11/12/2015
Soasta | CloudBees webinar 11/12/2015
 
APAC Tour 2019 update
APAC Tour 2019 updateAPAC Tour 2019 update
APAC Tour 2019 update
 
Apply Scrum to Your Hardware & Manufacturing Projects for Better Results by H...
Apply Scrum to Your Hardware & Manufacturing Projects for Better Results by H...Apply Scrum to Your Hardware & Manufacturing Projects for Better Results by H...
Apply Scrum to Your Hardware & Manufacturing Projects for Better Results by H...
 

En vedette

Agile 2008 Retrospective
Agile 2008 RetrospectiveAgile 2008 Retrospective
Agile 2008 RetrospectiveCraig Smith
 
Visual Management: Leading With What You Can See
Visual Management: Leading With What You Can SeeVisual Management: Leading With What You Can See
Visual Management: Leading With What You Can SeeCraig Smith
 
Visual Management: Leading With What You Can See
Visual Management: Leading With What You Can SeeVisual Management: Leading With What You Can See
Visual Management: Leading With What You Can SeeCraig Smith
 
7 Deadly Sins of Agile Software Test Automation
7 Deadly Sins of Agile Software Test Automation7 Deadly Sins of Agile Software Test Automation
7 Deadly Sins of Agile Software Test AutomationCraig Smith
 
40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes40 Agile Methods in 40 Minutes
40 Agile Methods in 40 MinutesCraig Smith
 
Startup Metrics for Pirates
Startup Metrics for PiratesStartup Metrics for Pirates
Startup Metrics for PiratesDave McClure
 
It All Starts With An idea: Kicking Off Initiatives For Success
It All Starts With An idea: Kicking Off Initiatives For SuccessIt All Starts With An idea: Kicking Off Initiatives For Success
It All Starts With An idea: Kicking Off Initiatives For SuccessCraig Smith
 
Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Coaching Nightmares: Lessons We Can Learn From Gordon RamsayCoaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Coaching Nightmares: Lessons We Can Learn From Gordon RamsayCraig Smith
 
Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Coaching Nightmares: Lessons We Can Learn From Gordon RamsayCoaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Coaching Nightmares: Lessons We Can Learn From Gordon RamsayCraig Smith
 
Agile Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Agile Coaching Nightmares: Lessons We Can Learn From Gordon RamsayAgile Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Agile Coaching Nightmares: Lessons We Can Learn From Gordon RamsayCraig Smith
 
40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes40 Agile Methods in 40 Minutes
40 Agile Methods in 40 MinutesCraig Smith
 
40 Agile Methods In 40 Minutes
40 Agile Methods In 40 Minutes40 Agile Methods In 40 Minutes
40 Agile Methods In 40 MinutesCraig Smith
 

En vedette (12)

Agile 2008 Retrospective
Agile 2008 RetrospectiveAgile 2008 Retrospective
Agile 2008 Retrospective
 
Visual Management: Leading With What You Can See
Visual Management: Leading With What You Can SeeVisual Management: Leading With What You Can See
Visual Management: Leading With What You Can See
 
Visual Management: Leading With What You Can See
Visual Management: Leading With What You Can SeeVisual Management: Leading With What You Can See
Visual Management: Leading With What You Can See
 
7 Deadly Sins of Agile Software Test Automation
7 Deadly Sins of Agile Software Test Automation7 Deadly Sins of Agile Software Test Automation
7 Deadly Sins of Agile Software Test Automation
 
40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes
 
Startup Metrics for Pirates
Startup Metrics for PiratesStartup Metrics for Pirates
Startup Metrics for Pirates
 
It All Starts With An idea: Kicking Off Initiatives For Success
It All Starts With An idea: Kicking Off Initiatives For SuccessIt All Starts With An idea: Kicking Off Initiatives For Success
It All Starts With An idea: Kicking Off Initiatives For Success
 
Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Coaching Nightmares: Lessons We Can Learn From Gordon RamsayCoaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
 
Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Coaching Nightmares: Lessons We Can Learn From Gordon RamsayCoaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
 
Agile Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Agile Coaching Nightmares: Lessons We Can Learn From Gordon RamsayAgile Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Agile Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
 
40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes
 
40 Agile Methods In 40 Minutes
40 Agile Methods In 40 Minutes40 Agile Methods In 40 Minutes
40 Agile Methods In 40 Minutes
 

Similaire à Technical Lessons Learned Turning the Agile Dials to Eleven!

When assertthat(you).understandUnitTesting() fails
When assertthat(you).understandUnitTesting() failsWhen assertthat(you).understandUnitTesting() fails
When assertthat(you).understandUnitTesting() failsMartin Skurla
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherencearagozin
 
谷歌 Scott-lessons learned in testability
谷歌 Scott-lessons learned in testability谷歌 Scott-lessons learned in testability
谷歌 Scott-lessons learned in testabilitydrewz lin
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projectsVincent Massol
 
Level Up Your Integration Testing With Testcontainers
Level Up Your Integration Testing With TestcontainersLevel Up Your Integration Testing With Testcontainers
Level Up Your Integration Testing With TestcontainersVMware Tanzu
 
Boston 2009 q1_kappler_chris
Boston 2009 q1_kappler_chrisBoston 2009 q1_kappler_chris
Boston 2009 q1_kappler_chrisObsidian Software
 
Insights and Lessons Learned Verifying the QoS Engine of a Network Processor
Insights and Lessons Learned Verifying the QoS Engine of a Network ProcessorInsights and Lessons Learned Verifying the QoS Engine of a Network Processor
Insights and Lessons Learned Verifying the QoS Engine of a Network ProcessorDVClub
 
Make Your Testing Groovy
Make Your Testing GroovyMake Your Testing Groovy
Make Your Testing GroovyPaul King
 
Системный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовСистемный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовCOMAQA.BY
 
Moog Test and Simulation Overview
Moog Test and Simulation  OverviewMoog Test and Simulation  Overview
Moog Test and Simulation OverviewKrishnaswamy Sanjay
 
Rethinking Testing
Rethinking TestingRethinking Testing
Rethinking Testingpdejuan
 
Learning on Deep Learning
Learning on Deep LearningLearning on Deep Learning
Learning on Deep LearningShelley Lambert
 
Thesis Defense (Gwendal DANIEL) - Nov 2017
Thesis Defense (Gwendal DANIEL) - Nov 2017Thesis Defense (Gwendal DANIEL) - Nov 2017
Thesis Defense (Gwendal DANIEL) - Nov 2017Gwendal Daniel
 
Structured Functional Automated Web Service Testing
Structured Functional Automated Web Service TestingStructured Functional Automated Web Service Testing
Structured Functional Automated Web Service Testingrdekleijn
 
Improving The Quality of Existing Software
Improving The Quality of Existing SoftwareImproving The Quality of Existing Software
Improving The Quality of Existing SoftwareSteven Smith
 
Automated Testing for Digital Experiences With JUnit 5
Automated Testing for Digital Experiences With JUnit 5Automated Testing for Digital Experiences With JUnit 5
Automated Testing for Digital Experiences With JUnit 5VMware Tanzu
 
Mcknight well built extensions
Mcknight well built extensionsMcknight well built extensions
Mcknight well built extensionsRichard McKnight
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsOrtus Solutions, Corp
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projectsVincent Massol
 

Similaire à Technical Lessons Learned Turning the Agile Dials to Eleven! (20)

Advanced Java Testing
Advanced Java TestingAdvanced Java Testing
Advanced Java Testing
 
When assertthat(you).understandUnitTesting() fails
When assertthat(you).understandUnitTesting() failsWhen assertthat(you).understandUnitTesting() fails
When assertthat(you).understandUnitTesting() fails
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherence
 
谷歌 Scott-lessons learned in testability
谷歌 Scott-lessons learned in testability谷歌 Scott-lessons learned in testability
谷歌 Scott-lessons learned in testability
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
 
Level Up Your Integration Testing With Testcontainers
Level Up Your Integration Testing With TestcontainersLevel Up Your Integration Testing With Testcontainers
Level Up Your Integration Testing With Testcontainers
 
Boston 2009 q1_kappler_chris
Boston 2009 q1_kappler_chrisBoston 2009 q1_kappler_chris
Boston 2009 q1_kappler_chris
 
Insights and Lessons Learned Verifying the QoS Engine of a Network Processor
Insights and Lessons Learned Verifying the QoS Engine of a Network ProcessorInsights and Lessons Learned Verifying the QoS Engine of a Network Processor
Insights and Lessons Learned Verifying the QoS Engine of a Network Processor
 
Make Your Testing Groovy
Make Your Testing GroovyMake Your Testing Groovy
Make Your Testing Groovy
 
Системный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовСистемный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестов
 
Moog Test and Simulation Overview
Moog Test and Simulation  OverviewMoog Test and Simulation  Overview
Moog Test and Simulation Overview
 
Rethinking Testing
Rethinking TestingRethinking Testing
Rethinking Testing
 
Learning on Deep Learning
Learning on Deep LearningLearning on Deep Learning
Learning on Deep Learning
 
Thesis Defense (Gwendal DANIEL) - Nov 2017
Thesis Defense (Gwendal DANIEL) - Nov 2017Thesis Defense (Gwendal DANIEL) - Nov 2017
Thesis Defense (Gwendal DANIEL) - Nov 2017
 
Structured Functional Automated Web Service Testing
Structured Functional Automated Web Service TestingStructured Functional Automated Web Service Testing
Structured Functional Automated Web Service Testing
 
Improving The Quality of Existing Software
Improving The Quality of Existing SoftwareImproving The Quality of Existing Software
Improving The Quality of Existing Software
 
Automated Testing for Digital Experiences With JUnit 5
Automated Testing for Digital Experiences With JUnit 5Automated Testing for Digital Experiences With JUnit 5
Automated Testing for Digital Experiences With JUnit 5
 
Mcknight well built extensions
Mcknight well built extensionsMcknight well built extensions
Mcknight well built extensions
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applications
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
 

Plus de Craig Smith

40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes40 Agile Methods in 40 Minutes
40 Agile Methods in 40 MinutesCraig Smith
 
Code of Ethical Conduct for Agile Coaching
Code of Ethical Conduct for Agile CoachingCode of Ethical Conduct for Agile Coaching
Code of Ethical Conduct for Agile CoachingCraig Smith
 
Public Sector Agility Accelerator
Public Sector Agility AcceleratorPublic Sector Agility Accelerator
Public Sector Agility AcceleratorCraig Smith
 
Rethinking Retrospectives: Beyond the Three Columns
Rethinking Retrospectives: Beyond the Three ColumnsRethinking Retrospectives: Beyond the Three Columns
Rethinking Retrospectives: Beyond the Three ColumnsCraig Smith
 
Agile Coaching Ethics - The Powerful Questions Behind What, Why & How
Agile Coaching Ethics - The Powerful Questions Behind What, Why & HowAgile Coaching Ethics - The Powerful Questions Behind What, Why & How
Agile Coaching Ethics - The Powerful Questions Behind What, Why & HowCraig Smith
 
Public Sector Agility Accelerator
Public Sector Agility AcceleratorPublic Sector Agility Accelerator
Public Sector Agility AcceleratorCraig Smith
 
Public Sector Agility Accelerator
Public Sector Agility AcceleratorPublic Sector Agility Accelerator
Public Sector Agility AcceleratorCraig Smith
 
Agility Accelerator
Agility AcceleratorAgility Accelerator
Agility AcceleratorCraig Smith
 
FailAgility: Recognising and Resetting the Agile Boundaries
FailAgility: Recognising and Resetting the Agile BoundariesFailAgility: Recognising and Resetting the Agile Boundaries
FailAgility: Recognising and Resetting the Agile BoundariesCraig Smith
 
Mind the Gap: Realising the Value of Agility
Mind the Gap: Realising the Value of AgilityMind the Gap: Realising the Value of Agility
Mind the Gap: Realising the Value of AgilityCraig Smith
 
Mind the Gap: Realising the Value of Agility
Mind the Gap: Realising the Value of AgilityMind the Gap: Realising the Value of Agility
Mind the Gap: Realising the Value of AgilityCraig Smith
 
40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes40 Agile Methods in 40 Minutes
40 Agile Methods in 40 MinutesCraig Smith
 
Agile Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Agile Coaching Nightmares: Lessons We Can Learn From Gordon RamsayAgile Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Agile Coaching Nightmares: Lessons We Can Learn From Gordon RamsayCraig Smith
 
The Speed to Cool: Agile Testing & Building Quality In
The Speed to Cool: Agile Testing & Building Quality InThe Speed to Cool: Agile Testing & Building Quality In
The Speed to Cool: Agile Testing & Building Quality InCraig Smith
 
Scrum Masters: The Full Time Role Conundrum (Brisbane Agile)
Scrum Masters: The Full Time Role Conundrum (Brisbane Agile)Scrum Masters: The Full Time Role Conundrum (Brisbane Agile)
Scrum Masters: The Full Time Role Conundrum (Brisbane Agile)Craig Smith
 
Scrum Masters:The Full-Time Role Conundrum
Scrum Masters:The Full-Time Role ConundrumScrum Masters:The Full-Time Role Conundrum
Scrum Masters:The Full-Time Role ConundrumCraig Smith
 
Agile...Looking Back Looking Forward
Agile...Looking Back Looking ForwardAgile...Looking Back Looking Forward
Agile...Looking Back Looking ForwardCraig Smith
 
Going All XP On Your Business
Going All XP On Your BusinessGoing All XP On Your Business
Going All XP On Your BusinessCraig Smith
 

Plus de Craig Smith (18)

40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes
 
Code of Ethical Conduct for Agile Coaching
Code of Ethical Conduct for Agile CoachingCode of Ethical Conduct for Agile Coaching
Code of Ethical Conduct for Agile Coaching
 
Public Sector Agility Accelerator
Public Sector Agility AcceleratorPublic Sector Agility Accelerator
Public Sector Agility Accelerator
 
Rethinking Retrospectives: Beyond the Three Columns
Rethinking Retrospectives: Beyond the Three ColumnsRethinking Retrospectives: Beyond the Three Columns
Rethinking Retrospectives: Beyond the Three Columns
 
Agile Coaching Ethics - The Powerful Questions Behind What, Why & How
Agile Coaching Ethics - The Powerful Questions Behind What, Why & HowAgile Coaching Ethics - The Powerful Questions Behind What, Why & How
Agile Coaching Ethics - The Powerful Questions Behind What, Why & How
 
Public Sector Agility Accelerator
Public Sector Agility AcceleratorPublic Sector Agility Accelerator
Public Sector Agility Accelerator
 
Public Sector Agility Accelerator
Public Sector Agility AcceleratorPublic Sector Agility Accelerator
Public Sector Agility Accelerator
 
Agility Accelerator
Agility AcceleratorAgility Accelerator
Agility Accelerator
 
FailAgility: Recognising and Resetting the Agile Boundaries
FailAgility: Recognising and Resetting the Agile BoundariesFailAgility: Recognising and Resetting the Agile Boundaries
FailAgility: Recognising and Resetting the Agile Boundaries
 
Mind the Gap: Realising the Value of Agility
Mind the Gap: Realising the Value of AgilityMind the Gap: Realising the Value of Agility
Mind the Gap: Realising the Value of Agility
 
Mind the Gap: Realising the Value of Agility
Mind the Gap: Realising the Value of AgilityMind the Gap: Realising the Value of Agility
Mind the Gap: Realising the Value of Agility
 
40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes40 Agile Methods in 40 Minutes
40 Agile Methods in 40 Minutes
 
Agile Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Agile Coaching Nightmares: Lessons We Can Learn From Gordon RamsayAgile Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
Agile Coaching Nightmares: Lessons We Can Learn From Gordon Ramsay
 
The Speed to Cool: Agile Testing & Building Quality In
The Speed to Cool: Agile Testing & Building Quality InThe Speed to Cool: Agile Testing & Building Quality In
The Speed to Cool: Agile Testing & Building Quality In
 
Scrum Masters: The Full Time Role Conundrum (Brisbane Agile)
Scrum Masters: The Full Time Role Conundrum (Brisbane Agile)Scrum Masters: The Full Time Role Conundrum (Brisbane Agile)
Scrum Masters: The Full Time Role Conundrum (Brisbane Agile)
 
Scrum Masters:The Full-Time Role Conundrum
Scrum Masters:The Full-Time Role ConundrumScrum Masters:The Full-Time Role Conundrum
Scrum Masters:The Full-Time Role Conundrum
 
Agile...Looking Back Looking Forward
Agile...Looking Back Looking ForwardAgile...Looking Back Looking Forward
Agile...Looking Back Looking Forward
 
Going All XP On Your Business
Going All XP On Your BusinessGoing All XP On Your Business
Going All XP On Your Business
 

Dernier

Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Dernier (20)

Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Technical Lessons Learned Turning the Agile Dials to Eleven!

  • 1. ©ASERT/Suncorp2006-2008 Technical lessons learned turning the agile dials to eleven! Dr Paul King ASERT, Australia Craig Smith Suncorp, Australia Agile 2008 - 1
  • 2. ©ASERT/Suncorp2006-2008 Topics • Introduction • Quality Metrics • Dealing with Boundaries • Easing the mocking burden • Instance providers • Autochecking • Atoms, Molecules and disposable tests Agile 2008 - 2
  • 3. Introduction • Initial goals (dials to ten) – 100% code coverage from unit tests – All production code paired and test-driven – Minimal design up front but an appreciation for when such design made sense – Customer focused outcomes – Full continuous integration – Daily pair rotation – Continuous improvement through retrospectives – High levels of automation – Light-weight metrics to monitor progress • Now how can we crank the dials further? Agile 2008 - 3 ©ASERT/Suncorp2006-2008
  • 4. Agile 2008 - 4 Quality Metrics • Duplication – 0% duplication or build breaks (threshold = 4 lines) • Now cranking back this metric for acceptance tests • Method and Class Complexity – Extremely simple classes and code • Rarely used escape mechanism • Graph true exceptions over time • Method and Class Size – Approx 10 lines per method, 80 lines per class • 5-7 lines led to Ravioli code so we cranked this back • Still hard to do try … catch … finally but for us that need mostly occurs in boundaries • To split 50 lines, use approx 7 methods of 7 lines not two 25-line methods or twenty five 2-line methods ©ASERT/Suncorp2006-2008
  • 5. Dealing with Boundaries • Boundaries used with 3rd party APIs • Ways to create – IDE plugin to create static boundaries – Groovy to automatically eliminate checked exceptions through a language feature – Use autoboundaries of an interface Agile 2008 - 5 ©ASERT/Suncorp2006-2008 package autoboundary.java.io; public interface File { String getCanonicalPath(); } public class FileBoundary { private File delegate; public String getCanonicalPath() { try { return delegate .getCanonicalPath(); } catch (IOException e) { throw new RuntimeException(e); } } }
  • 6. Easing the mocking burden… • Mocking became a pain point – JMock 1 style mocking, small classes, 100% test driven, rampant refactoring • Want to avoid boiler plate set up of tests – Instead of this: – Have ‘magic’ framework allowing auto mock creation • Based on most specific constructor matching fields • Using naming conventions or annotations (shown): Agile 2008 - 6 ©ASERT/Suncorp2006-2008 private DocumentProperties docProps; private DocumentReader reader; private WordCounter counter; @Before public void before() { reader = context.mock(DocumentReader.class); counter = context.mock(WordCounter.class); docProps = new DocumentPropertiesImpl(reader, counter); } @Subject DocumentPropertiesImpl docProps; @Mock DocumentReader reader; @Mock WordCounter counter;
  • 7. …Easing the mocking burden • Avoid cumbersome expectation DSL: – Not this: – Instead this: – Then have IDE support to convert between the two: Agile 2008 - 7 ©ASERT/Suncorp2006-2008 expectOneCallTo("getName", mockAuthor) .will(returnValue(name)); name = author.getName();
  • 8. Instance providers • Instance/mock creation (annotations): • Also have auto instance provider (naming convention example): – POJOs generated recursively or overridden using numerous other conventions Agile 2008 - 8 ©ASERT/Suncorp2006-2008 @Subject(auto=false) DocumentPropertiesImpl docProps; @Mock private DocumentReader reader; @Stub private String fileName; @Wired private DocumentWriter writer; String uniqueStringA; String uniqueStringB; Summer subject = new Summer(); public void testSumStringsAutoTriangulation() { assertEquals( uniqueStringA + uniqueStringB, subject.sum(uniqueStringA, uniqueStringB)); }
  • 9. Autochecking • Numerous checks built in to testing framework – Auto null checking for public methods and public constructors – Auto check getters and setters – Particular project-wide rules to do with final, equals, hashCode (not covered by checkstyle) • Numerous types of classes had further checks – Immutable – Serializable – Components (remotable) – Data (non-persistent POJO) – Domain (persistent POJO) Agile 2008 - 9 ©ASERT/Suncorp2006-2008
  • 10. Atoms, Molecules and disposable tests • Deleting tests that don’t pull their weight: – Distinguish between atoms and molecules – Only support reuse at the molecular level – Require 100% test coverage at the molecular level – Can safely discard atomic interaction-based unit tests • IDE automation allows them to be recreated trivially – Allow state-based atomic tests to be kept if desired Agile 2008 - 10 ©ASERT/Suncorp2006-2008
  • 11. Stage 2 Velocity Agile 2008 - 11 ©ASERT/Suncorp2006-2008 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 Iteration9 Iteration10 Iteration11 Iteration12 Iteration13 Iteration14 Iteration15 Iteration16 Iteration17 Iteration18 Iteration19 Iteration20 Iteration21 Iteration22 Iteration23 Iteration24 Iteration25 Iteration26 Iteration27 ScopeinIdealDeveloperHours Schedule in Iterations Release 7 Burn-Up Chart Burn-Up
  • 12. Future Directions • Acceptance-TDD or Functional-TDD when appropriate – Grails, Tester and Customer involvement • Evolve how we use TDD & CI – Disposable Atomic Tests, Groovy, BDD, EasyB, Instinct, Performance • Leverage a broader base of testing approaches – Jester, AllPairs, Reductio, Theories, Exploratory, Grids • Further use of DSLs – Testing, Business Rules, Workflows, Configuration • Further use of more powerful languages – Groovy, Scala, Ruby, Polyglot programming Agile 2008 - 12 ©ASERT/Suncorp2006-2008
  • 13. About the contributing organizations • About ASERT – ASERT helps organisations define and make best use of their eBusiness platforms by providing professional and cost- effective training and consulting & system development solutions including but not limited to Agile development, Java/J2EE development, Groovy and Grails development, SOA and web services implementations and agile deployment. • About Suncorp – Suncorp is one of Australia and New Zealand's largest diversified financial services providers, supplying banking, insurance and wealth management products to around 7 million customers through well-established and recognized brands such as AAMI, Australian Pensioners Insurance Agency, Shannons, Vero, Asteron and Tyndall, as well as Suncorp and GIO. Today, Suncorp is Australia's sixth largest bank and second largest domestic general insurance group, with over 16,000 staff. Suncorp has representation in 450 offices, branches and agencies throughout Australia and New Zealand. Agile 2008 - 13 ©ASERT/Suncorp2006-2008