Develop Software with Confidence : Develop Software with Confidence Introduction for SingTel
Anming Chen, 2010-01-18
Our Mission : By making developer testing
effective for the enterprise Our Mission
Our Customers See Big Benefits : Our Customers See Big Benefits
What Do You Want from Software? : What Do You Want from Software?
Software DevelopmentIs Still Immature . . . : Software DevelopmentIs Still Immature . . . $ 100+ Billion Wasted annually on software bugs 1 Projects take 84% Longer Than originally scheduled 4 Sources: 1: US NIST study, 2002; 2 and 4: Standish Group data contrasting 2004 with 2002; 3: Cutter Consortium, May 2005
Goals ofSoftware Development Organizations : Goals ofSoftware Development Organizations Release software that works, on time, on budget
What is the biggest challenge for developers?
It’s too hard to know that their code works properly
What is the biggest challenge for QA people?
They get buggy code that’s hard to integrate and system test
What is the biggest challenge for managers?
They don’t know the real status of the project
The Traditional Approach Is Flawed : The Traditional Approach Is Flawed Source: “The Software Development Paradox”, Alberto Savoia, 2004
There Is a Better Approach : There Is a Better Approach Test Bugs Out Build Quality In vs.
Developer Testing Is the Solution : Developer Testing Is the Solution Each code unit is accompanied by unit tests thatvalidate and document its correct behavior
The developer creates these unit tests while coding
Each unit test is self-sufficient and self-evaluatingso it can be run and checked automatically
The unit tests are run very frequently
Developer testing may also include functional (scenario) testing done by developers, often using JUnit
Find and Fix Defects Sooner : Integration & System Testing by QA Find and Fix Defects Sooner ? Done Without
Developer Testing Source: “The Software Development Paradox”, Alberto Savoia, 2004
The Economics Are Compelling : The Economics Are Compelling Source: Applied Software Measurement, Capers Jones, 1996
Why Is Developer TestingNot Yet Pervasive? : Why Is Developer TestingNot Yet Pervasive? PoorDivision of Labor Developers deliver code, not knowing if it works
QA verifies, integrates, and does system tests, but cannot fix problems
Detection and repair is deferred until long after the bug is created Too MuchManual Work A combinatorial problem, so full coverage is hard for unit tests or debugger
Often 2x – 4x more test code than code to test
Most time spent in tedious setup and data creation
Tests get stale
Tough to be thoroughand meet the schedule UncertainStatus and Goals Are you done, and have you done enough?
What has been tested and what has not?
Have you focused enough on the riskiest or most complex code? Manual approaches (usually JUnit-based) tend to stall.
Make Developer TestingEffective for Your Organization : Make Developer TestingEffective for Your Organization BALANCE The division of labor Everyone owns quality
Developers deliver tested code that works
QA verifies in a near-production environment and does system tests REDUCE The manual workof test creation Automate, so developers spend less time running their code to test it
Developers get feedback to write code that works
Free developer time to complete much more good code every day EMPOWER Teams with
objective data Use clear and objective quality metrics
Set goals, manage to them, analyze trends
Treat developer testing as a business process
AgitarOne™: the Best Way toCreate, Use, and Manage Unit Tests : AgitarOne™: the Best Way toCreate, Use, and Manage Unit Tests Change-Risk Management Dashboard Code-RuleEnforcement ContinuousIntegration & Test Java Code Analysis Engine Developers Developers Managers Team
Leaders QA Teams Build Teams
AgitarOne Enterprise Deployment : AgitarOne Enterprise Deployment
Explore Behavior, Prevent Complexity –AgitarOne Agitation : Explore Behavior, Prevent Complexity –AgitarOne Agitation
Make It Safer to Change Your Code –AgitarOne JUnit Generator : Make It Safer to Change Your Code –AgitarOne JUnit Generator
SWAT Team Usage Model: Cut Drag without Disrupting the Rest : SWAT Team Usage Model: Cut Drag without Disrupting the Rest Champion SAFETY NET forCODE CHANGES DELIVER BETTER CODE FASTER Champion Developers REDUCEthe DRAG fromEXISTING CODE Cut the cost of maintenance and enhancement Create the foundation for safe and effective code refactoring Prevent complexity and reduce bugs entering QA Significantly more effective than purely manual unit testing IMPROVEthe CREATION ofNEW CODE
Agitar Has Helped Hundreds ofOrganizations Become More Agile : Agitar Has Helped Hundreds ofOrganizations Become More Agile
Improve the Developer’s Daily Work : Improve the Developer’s Daily Work
Supercharge Your QA Team : Supercharge Your QA Team Developer Testing … Developer
Testing
The Leader in Developer Testing : The Leader in Developer Testing
Agitar Management Dashboard:Know Your Code, Trust Your Code : Agitar Management Dashboard:Know Your Code, Trust Your Code
Development Needs Automation : Development Needs Automation Developers are committed to writing code that works make mistakes spend time finding and fixing mistakes find it hard to be thorough find it hard to create durable test assets Build automation can provide frequent and detailed project feedback is most powerful when it runs thorough unit tests, frequently manually Managers are committed to delivering functionality, on time, on budget manually are unable to get reliable status information spend time talking with each developer
Agitator Empowers Development Teams : Developers are committed to writing code that works make mistakes avoid mistakes, or quickly find and fix them can be much more thorough easily create durable test assets Build automation can provide frequent and detailed project feedback manually Managers are committed to delivering functionality, on time, on budget manually make decisions based on reliable information work with their teams more constructively withAgitator withAgitator enables easy creation of a dense set of tests Agitator Agitator Empowers Development Teams
Good Unit Tests Serve as Sensors, Quickly Detecting Problems : Good Unit Tests Serve as Sensors, Quickly Detecting Problems
The Benefit of Continuous Integration and Agitation : The Benefit of Continuous Integration and Agitation
Quality, Productivity, Confidence : Quality, Productivity, Confidence
Develop Software with Confidence : Develop Software with Confidence
Services for Maximum Benefit : Services for Maximum Benefit We’ll help you: PREPARE Your environment and metrics MENTOR Your team as they learn to use Agitator TUNE Agitator to know your code base IMPROVE Your development process
Committed to Your Success : Committed to Your Success Invest in tools
Train staff
Integrate into development process
Set goals and manage to them
Stick with it
Develop Software with Confidence : Develop Software with Confidence
Slide 33 :
Real Visibility into Unit-Level Quality : Real Visibility into Unit-Level Quality
Metrics for High-Performance Teams : Metrics for High-Performance Teams High code coverage
Manage Risk : Manage Risk
Control Complexity : Control Complexity
Add Agitator to Your JUnit Testing : Add Agitator to Your JUnit Testing 95% of our customers start with JUnit
JUnit is not required to use Agitator
Agitator and Dashboard understandand leverage existing JUnit + Kent Beck Agitar Fellow
Open Quality™:An Emerging Competitive Advantage : Open Quality™:An Emerging Competitive Advantage Binding commitment,based on objective quality data,
to improve trustamong partners Quality-Level Agreement™ (QLA) Visit www.agitar.com/openquality
Details of Test Coverage : Details of Test Coverage
Observations: Candidate Tests : Observations: Candidate Tests
Assertions: Invariants to Validate : Assertions: Invariants to Validate
Flexible Code-Rule Enforcement : Flexible Code-Rule Enforcement
Code Rules UI : Code Rules UI