Testing why it should be fully integrated in

Testing, why it should be fully integrated in the application lifecycle? Danny Crone - n. Focus Interoperability

Overview • What is testing? • Where have we come from? • Where are we now? Why is n. Focus at MSAIC?

Why do we test? check that changes haven’t broken it minimise tech support costs prove it is secure find bugs to see if it is quick enough prove it works is it usable check conformanc e with regulations is it reliable ensure we can install it

What is testing? 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

Testing is a balancing act Time Cost Quality

Where have we come from? • Waterfall • Testing at the end

Waterfall Model (planned) Requirements Design Implementation Testing Maintenance

Waterfall Model (reality) Requirements Design Implementation Squeeze Testing Squeeze Maintenance

Where have we come from? • • 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 are we now? • What is agile? • How do we test using agile principles? • What does “done” look like?

What is agile? • Agile and n. Focus • Manifesto – principles and intentions

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: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.

What is agile? • • Agile and n. Focus 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

How do we test using agile principles? • Plan and design for testing – Don’t assume it will be easy • Use the quadrants, Luke

Agile Testing Quadrants Business-Facing Automated Functional Tests Examples Story Tests Prototypes Simulations Manual Exploratory Testing Scenarios Usability Testing UAT (User Acceptance Testing) Alpha/Beta Q 2 Q 3 Q 1 Q 4 Unit Tests Component Tests Performance & Load Testing Security Testing “illity” Testing Critique Product Supporting the Team Automated & Manual Tools Technology-Facing Original idea by Brian Marick, www. exampler. com

Agile Testing Quadrants Business-Facing Automated Functional Tests Examples Story Tests Prototypes Simulations Manual Exploratory Testing Scenarios Usability Testing UAT (User Acceptance Testing) Alpha/Beta Q 2 Q 3 Q 1 Q 4 Unit Tests Component Tests Performance & Load Testing Security Testing “illity” Testing Critique Product Supporting the Team Automated & Manual Tools Technology-Facing Original idea by Brian Marick, www. exampler. com

Agile Testing Quadrants Business-Facing Automated Functional Tests Examples Story Tests Prototypes Simulations Manual Exploratory Testing Scenarios Usability Testing UAT (User Acceptance Testing) Alpha/Beta Q 2 Q 3 Q 1 Q 4 Unit Tests Component Tests Performance & Load Testing Security Testing “illity” Testing Critique Product Supporting the Team Automated & Manual Tools Technology-Facing Original idea by Brian Marick, www. exampler. com

Agile Testing Quadrants Business-Facing Automated Functional Tests Examples Story Tests Prototypes Simulations Manual Exploratory Testing Scenarios Usability Testing UAT (User Acceptance Testing) Alpha/Beta Q 2 Q 3 Q 1 Q 4 Unit Tests Component Tests Performance & Load Testing Security Testing “illity” Testing Critique Product Supporting the Team Automated & Manual Tools Technology-Facing Original idea by Brian Marick, www. exampler. com

How do we test using agile principles? • 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 VS 2010 the right tools? ?

What does “done” look like? • 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

“done” thinking grid User story clarity Environment ready Code complete Automated code review Functional testing Tasks identified Design complete Unit tests executed Peer review Regression testing Build setup changes Unit test cases written Refactoring Code coverage Performance testing Product owner approval Documentation Code checkin Burndown chart ready Acceptance testing Product backlog updated Pre-release builds Code merging and tagging Release build Closure • Testing play a key part in “doneness”

Summary • 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 n. Focus at MSAIC

Resources • 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 • n. Focus Blog – http: //blog. nfocus. co. uk • Danny Crone – dan_crone@nfocus. co. uk – @dannycrone

Testing, why it should be fully integrated in the application lifecycle? • 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?
- Slides: 25