Testing , why it should be fully integrated in the application lifecycle ?
description
Transcript of Testing , why it should be fully integrated in the application lifecycle ?
Interoperability
Testing, why it should be fully integrated in
the application lifecycle?
Danny Crone - nFocus
• What is testing?• Where have we come from?• Where are we now?
Why is nFocus at MSAIC?
Overview
Why do we test?
prove it works
to see if it is quick
enough
check that changes haven’t
broken it
find bugs
minimise tech support
costs
is it usable
is it reliablecheck
conformance with
regulations
prove it is secure
ensure we can install it
Testing is many things to many different people but we believe that testing:• Reduces the risk of failure• Increases the confidence of success• Supplies key information to make decisions
What is testing?
Testing is a balancing act
Cost
Time
Quality
• Waterfall• Testing at the end
Where have we come from?
Waterfall Model (planned)
Requirements
Design
Implementation
Testing
Maintenance
Waterfall Model (reality)
Requirements
Design
Implementation
Testing
Maintenance
Squeeze Squeeze
• Waterfall• Testing at the end• Mostly manual testing• Automated testing was difficult – Got bad press (record/playback)
• Often seen as a cost– Tick in the box– Didn’t understand inherent value in testing
Where have we come from?
• What is agile?• How do we test using agile principles?• What does “done” look like?
Where are we now?
• Agile and nFocus• Manifesto – principles and intentions
What is agile?
Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
That is, while there is value in the items on the right, we value the items on the left more.
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
• Agile and nFocus• Manifesto – principles and intentions• Short iterations – Sprints in Scrum• Works for development but challenges for test– Growing regression bucket– Agile embraces change but change can de-stabilise
• Highly people focused
What is agile?
• Plan and design for testing– Don’t assume it will be easy
• Use the quadrants, Luke
How do we test using agile principles?
Functional TestsExamples
Story TestsPrototypesSimulations
Q2
Exploratory TestingScenarios
Usability TestingUAT (User Acceptance Testing)
Alpha/BetaQ3
Q1
Unit TestsComponent Tests
Q4
Performance & Load TestingSecurity Testing“illity” Testing
Automated& Manual
Manual
ToolsAutomatedTechnology-Facing
Business-FacingSu
ppor
ting
the
Team Critique Product
Agile Testing Quadrants
Original idea by Brian Marick, www.exampler.com
Functional TestsExamples
Story TestsPrototypesSimulations
Q2
Exploratory TestingScenarios
Usability TestingUAT (User Acceptance Testing)
Alpha/BetaQ3
Q1
Unit TestsComponent Tests
Q4
Performance & Load TestingSecurity Testing“illity” Testing
Automated& Manual
Manual
ToolsAutomatedTechnology-Facing
Business-FacingSu
ppor
ting
the
Team Critique Product
Agile Testing Quadrants
Original idea by Brian Marick, www.exampler.com
Functional TestsExamples
Story TestsPrototypesSimulations
Q2
Exploratory TestingScenarios
Usability TestingUAT (User Acceptance Testing)
Alpha/BetaQ3
Q1
Unit TestsComponent Tests
Q4
Performance & Load TestingSecurity Testing“illity” Testing
Automated& Manual
Manual
ToolsAutomatedTechnology-Facing
Business-FacingSu
ppor
ting
the
Team Critique Product
Agile Testing Quadrants
Original idea by Brian Marick, www.exampler.com
Functional TestsExamples
Story TestsPrototypesSimulations
Q2
Exploratory TestingScenarios
Usability TestingUAT (User Acceptance Testing)
Alpha/BetaQ3
Q1
Unit TestsComponent Tests
Q4
Performance & Load TestingSecurity Testing“illity” Testing
Automated& Manual
Manual
ToolsAutomatedTechnology-Facing
Business-FacingSu
ppor
ting
the
Team Critique Product
Agile Testing Quadrants
Original idea by Brian Marick, www.exampler.com
• Automation– Goes someway to solve challenges– Automate as much as is feasibly possible– Just software too– Code architecture needs to support automation– Layered architectures work best– Bake into build and deploy process (twitter)
How do we test using agile principles?
• Manual testing– Exploratory testing– Frameworks help single definition– Adds value but long term becomes cost
• Always pick the right tools for the right job– Is VS2010 the right tools??
How do we test using agile principles?
• We know that testing is infinite• So we must prioritise– Most important – Most difficult
• Testing forms a large part of what “done” looks like
• Bring on the “done” thinking grid
What does “done” look like?
“done” thinking grid
User story clarity
Tasks identified
Build setup changes
Product owner approval
Product backlog updated
Environment ready
Design complete
Unit test cases written
Documentation
Pre-release builds
Code complete
Unit tests executed
Refactoring
Code checkin
Code merging and tagging
Automated code review
Peer review
Code coverage
Burndown chart ready
Release build
Functional testing
Regression testing
Performance testing
Acceptance testing
Closure
• Testing play a key part in “doneness”
• Agile represents progress• Agile is a mindset that embraces change• Testing solves some of the agile challenges– “Done”, Information, Culture, Working software
• Whole team approach to quality (test-infected)– Includes architects– Solution needs to be testable– Architecture needs to enable automation
• Reflect• Why nFocus at MSAIC
Summary
• Agile Manifesto – http://agilemanifesto.org
• Definition of Done– http://www.scrumalliance.org/articles/106-
definition-of-done-a-reference
• Agile testing quadrants– http://www.exampler.com
• nFocus Blog– http://blog.nfocus.co.uk
• Danny Crone
– @dannycrone
Resources
• We've come a long way from the days of testing coming last after report generation within the development lifecycle. Agile development practices and tooling have reaped many benefits but how do we ensure that testing is integrated end-end through out the lifecycle? How can testing become a first class citizen and what is the role of the architect in ensuring testing is made so?
Testing, why it should be fully integrated in the application lifecycle?