Inverting the Pyramid

Similar documents
Test Automation Strategies in Continuous Delivery. Nandan Shinde Test Automation Architect (Tech CoE) Cognizant Technology Solutions

How Can Testing Teams Play a Key Role in DevOps Adoption?

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

BEHAVIOR DRIVEN DEVELOPMENT BDD GUIDE TO AGILE PRACTICES. Director, Strategic Solutions

ROTATE TO THE NEW: FROM TESTING TO QUALITY ENGINEERING

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

Agile Testing Course: 15 16/11

Test-driven development

Kanban One-Day Workshop

Testing in the Agile World

Shift Left, Automation, and Other Smart Strategies for Getting Ahead in QA

Testing in an Agile Environment Understanding Testing role and techniques in an Agile development environment. Just enough, just in time!

Software Quality in a Modern Development Team. Presented by Timothy Bauguess and Marty Lewis

Final Paper. Automation in Agile Testing. Vijay Kumar - Senior Software Engineer - Testing CenturyLink Technologies

Shift Left Testing: are you ready? Live Webinar, Sept 19

Orchestrating the Continuous Delivery Process

Automated Acceptance testing by Developers & Automated Functional Testing by Testers

How technical excellence helps in LeSS adoption. Anton Bevzuk Dodo Pizza Chief Agile Officer

JOB TITLE: Senior Database Administrator PRIMARY JOB DUTIES Application Database Development

Turning a Marathon Runner into a Sprinter: Adopting Agile Testing Strategies and Practices at Microsoft

How to Build an Appium Continuous Testing Pipeline

Continuous Testing at Scale

l e a n Lean Software Development software development Faster Better Cheaper

Test-driven development

Agile Test Automation ICAgile

CAPABILITY. Managed testing services. Strong test managers experienced in working with business and technology stakeholders

Chapter 1 - Continuous Delivery and the Jenkins Pipeline

The Future of Testing: Continuous Enterprise Testing

Agile Accessibility. Presenters: Ensuring accessibility throughout the Agile development process

Collaboration at Scale: Prioritizing a Backlog. 13-Dec-2017

I keep hearing about DevOps What is it?

Acceptance Testing What does it mean to you?

HOW TO WRITE USER STORIES (AND WHAT YOU SHOULD NOT DO) Stuart Ashman, QA Director at Mio Global Bob Cook, Senior Product Development Manager, Sophos

In This Webinar. ConEnuous Load TesEng & ConEnuous Delivery with Jenkins

Exam Questions

Responsive Redesign dispatch.com 10tv.com thisweeknews.com

JenkinsPipelineUnit. Test your Continuous Delivery Pipeline. Ozan Gunalp - Emmanuel Quincerot

Agile Software Development Agile UX Work. Kati Kuusinen TUT / Pervasive / IHTE

Agile Tester Foundation E-learning Course Outline

Jenkins: A complete solution. From Continuous Integration to Continuous Delivery For HSBC

Agile vs Fragile. Susmit Bhattacharya, Solution Architect, Asia Pacific. - The need for Automation in Agile Tricentis GmbH. All Rights Reserved.

CONFERENCE PROCEEDINGS QUALITY CONFERENCE. Conference Paper Excerpt from the 28TH ANNUAL SOFTWARE. October 18th 19th, 2010

DevNet Workshop-Hands-on with CloudCenter and Jenkins

Disruptive Technology

Turbo boost your digital app test automation with Jenkins

ICAgile Learning Roadmap Agile Testing Track

Testing Tools to Support Agile Software Delivery. The Critical Role of Automated Functional Testing in Enterprise Environments

Achieving Continuous Delivery - Micro Services. - Vikram Gadang

Test Automation: Agile Enablement for Business Intelligence Teams

Successful Test Automation without Coding. Marc J. Balcer Chief Architect Model Compilers

(Complete Package) We are ready to serve Latest Testing Trends, Are you ready to learn? New Batches Info

A CONFUSED TESTER IN AGILE WORLD

Case Management Digital Service Sprint Review Sprint 5.1: 11/16/17 11/29/17. CWDS / Child Welfare Digital Services

Struggling to Integrate Selenium into Your Ice Age Test Management Tools?

Administering SQL Servers for Development Teams. Mike Acord & Tony Sebion Omni Resources

TM DevOps Use Case TechMinfy All Rights Reserved

Azure DevOps. Randy Pagels Intelligent Cloud Technical Specialist Great Lakes Region

HP APPs v.12 Solutions for Dev-Ops

Seven Key Factors for Agile Testing Success

SBB. Java User Group 27.9 & Tobias Denzler, Philipp Oser

Final Paper/Best Practice/Tutorial Advantages OF BDD Testing

CloudCenter for Developers

Agile Load Testing using StormRunner Load September 15, Copyright 2016 Vivit Worldwide

Project Automation. If it hurts, automate it! Jan Pool NioCAD University of Stellenbosch 19 March 2008

Benefits of the Build

Suman Sourav Director DevSecOps, Vantage Point Security. OWASP Indonesia Day 2017

About Us. Services CONSULTING OUTSOURCING TRAINING MENTORING STAFF AUGMENTATION 9/9/2016

We re redefining Software Quality

Shift Happens. The Role of Continuous Testing in DevOps. Alex Martins. CTO Continuous Testing. May 15 th, 2018 CA Technologies.

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

Adapt your tes-ng approach for Agile

NYS Forum. Optimized Test Driven Development Maximize development efforts through Behavior Driven Development and Model Based Testing

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

DevOps, Continuous Integration & Automated Testing: Rule Them All

Accelerate High-Quality App Delivery with the Micro Focus DevOps Suite March 28, 2018

Intelligent test automation

Automating Security Practices for the DevOps Revolution

Continuous Security Testing. In a DevOps World

Revolutionize the Way You Work With IMS Applications Using IBM UrbanCode Deploy Evgeni Liakhovich, IMS Developer

From Continuous Integration To Continuous Delivery With Jenkins

Performance Testing in a Containerized World. Paola Rossaro

Agile, Testing, and Quality: Looking Back, Moving Forward

Aspirin as a Service: Using the Cloud to Cure Security Headaches

DEVOPSIFYING NETWORK SECURITY. An AlgoSec Technical Whitepaper

Designed in collaboration with Infosys Limited

PERSPECTIVE. End-to-end test automation A behaviordriven and tool-agnostic approach. Abstract

Accelerate at DevOps Speed With Openshift v3. Alessandro Vozza & Samuel Terburg Red Hat

Quality Assurance and IT Risk Management

Using Layered Model-Based Requirements to achieve Continuous Testing

Continuous Integration / Continuous Testing

Utilizing Fast Testing to Transform Java Development into an Agile, Quick Release, Low Risk Process

FROM VSTS TO AZURE DEVOPS

Seven Key Factors for Agile Testing Success

DevOps Anti-Patterns. Have the Ops team deal with it. Time to fire the Ops team! Let s hire a DevOps unit! COPYRIGHT 2019 MANICODE SECURITY

Designing. Simon Wilson Interaction designer, DWP Digital

Amir Zipory Senior Solutions Architect, Redhat Israel, Greece & Cyprus

LEVERAGING VISUAL STUDIO TEAM SYSTEM 2008 Course LTS08: Five days; Instructor-Led Course Syllabus

SDx and the Future of Infrastructure

CASE STUDY Application Migration and optimization on AWS

SAFe Atlassian Style (Updated version with SAFe 4.5) Whitepapers & Handouts

Transcription:

Inverting the Pyramid Naresh Jain naresh@agilefaqs.com @nashjain http://nareshjain.com

Time/Money/Opportunity Cost Plan Back in the Stone-age Happiness/Excitement Design Distribute Work in Isolation Integrate

Last Minute Integration Surprises

BAD things were visible too Late...

Birth of CI

CI Helped Us Learn That... Life can Suck a lot Less! Collaboration Feedback Quality Delivery Time Wastage

Lean-Start-up Community Tried something quite disruptive...

Continuous Deployment

But...

Software Testing Ice-cream Cone Manual Checking End-to-End GUI Tests 10-20% Integration Tests 5-10% Unit Tests 1-5%

Commercial Break!

Mumbai

Tech Talks!

Testing VS. Checking Testing is explorative, probing and learning oriented. Checking is confirmative (verification and validation of what we already know). The outcome of a check is simply a pass or fail result; the outcome doesn t require human interpretation. Hence checking should be the first target for automation. James Bach points out that checking does require some element of testing; to create a check requires an act of test design, and to act upon the result of a check requires test result interpretation and learning. But its important to distinguish between the two because when people refer to Testing they really mean Checking. Why is this distinction important? Michael Bolton explains it really well: A development strategy that emphasizes checking at the expense of testing is one in which we ll emphasize confirmation of existing knowledge over discovery of new knowledge. That might be okay. A few checks might constitute sufficient testing for some purpose; no testing and no checking at all might even be sufficient for some purposes. But the more we emphasize checking over testing, and the less testing we do generally, the more we leave ourselves vulnerable to the Black Swan.

Inverting the Testing Pyramid Typical testing strategies lead to an inverted testing pyramid... Manual Checking End-to-End GUI Tests 80-90% Integration Tests 5-15% Unit Tests 1-5%

Inverting the Testing Pyramid GUI Tests 1% End to End Flow Tests One Layer Below GUI Workflow Tests 4% Performance Tests 6% Security Tests Integration Test 9% Biz Logic Acceptance Tests 10% Unit Tests 70% This is the need of the hours...

Number of End-to-End Tests T1 T2 T3 DB Classes Method Calls 8 9 11 70 Complex, Fragile End-to-End Tests vs. 61 Unit tests + 8 End-to-End Tests

Best ROI for Testing Impact Lines of Test Code End to End 10% 90% Layers API 65% 35% Modules 70% 30% Unit 90% 10% 0 25 50 75 100 Value

Inverting the Pyramid How to?

Types of Tests in the Testing Pyramid GUI Tests Acceptance Tests GUI Tests 1% End to End Flow Tests One Layer Below GUI 4% Performance Tests Security Tests Unit Tests Workflow Tests 6% Small Agile Projects with Single Team Integration Test 9% Biz Logic Acceptance Tests 10% Unit Tests 70% Large Scale Agile Projects with Global Teams

Types of Tests for Large Agile Project Type Tool Who When Level Objective Unit Tests xunit, Mockito/ Moq, Jasmine, HSqlDB, Jumble Developers During the sprint, while coding Class Each class functions correctly in isolation. The UI components (including JS) can also be unit tested in isolation. Biz Logic Acceptance Tests Cucumber (some may need Lisa) JMeter/LoadRunner TechBAs + Developers + Testers (QA) Acceptance Criteria are defined before sprint starts. Acceptance Tests are written during sprint, before coding Work-steam specific business functionality (At component level) From a business logic point of view, the functionality is implemented correctly. Works in isolation with other work-streams/modules. Also good point to do some basic performance testing. Integration Test xunit + Lisa Developers + Testers (QA) + TechBAs Contracts are defined before sprint, tests are implemented during the sprint Between dependencies (work-streams, upstream/down-stream systems, 3 rd Party) 2 Components can communicate with each other correctly. Best suited for negative path testing. Should not test any functional aspects of the application. Workflow Tests Cucumber + Lisa SMEs + TechBAs + UX + Developers + Arch + Testers (QA + UAT) When a theme is picked (functional group of sprints) Across a few workstreams (Issuance/ Acceptance) Inside a trade work flow, a particular step (issuance or acceptance workflow) works correctly from the business point of view. Upstream/Downstream dependencies stubbed. End to End Flow Tests Cucumber JMeter/LoadRunner SMEs + TechBAs + UX + Developers + Arch + Testers (QA + UAT) When an Internal Milestone is decided, the E2E flow tests are defined & authored. As & when the complete workflow is implemented these tests are enabled. End to end Trade flow, one layer below the UI Ensure a specific type of trade can go thru all the steps successfully. Very important to do detailed performance testing at this stage. GUI Tests Selenium/Sahi/ Watir/White/ SWTBot TechBAs + UX + Testers (QA) Usually its takes 3-4 sprints to complete one whole workflow including the UI. After that the UI tests will be authored and executed. End to end Trade flow with GUI Ensure few basic types of trades can go thru all the steps successfully via a UI.

Testing Touch Points during Project Lifecycle Product Discovery Release Planning 1 st Release Themes Work- Stream Planning Sprint Planning Sprint Sprint Review Internal Milestone Release Release Collaborate to create the story map Help SMEs to define Acceptance Criteria at each level in story map Ensure themes are coherent Create theme level epics Author End-toend flow tests Validate Acceptance criteria at story level Estimate Tasks Show demo (parts) Confirm that the biz requirements are met with stakeholders Participate in Sprint retrospectives Sanity Testing in Live environment Participate in Release retros Define goals & readiness criteria for each Release. Author Work-flow tests Collaborate on identifying dependency and documenting them Create stream level epics Create Integration Test Collaborate with Dev & Biz to write Automated Acceptance Test Exploratory Testing Buddy testing UI automation of previous sprint tasks Performance & Security Tests Sanity Testing in ER cycles Confirm user goals are met with operations team Participate in Internal Release retrospective The Continuous Integration and Build Pipeline process will execute all tests as part of the regression pack and report various quality parameters to all stakeholders. On going Governance & Test Data management

Collaborative Product Discovery Steps Elevator Pitch Chartering Business Goals Participants Product Owners SMEs Operation/Support Reps Tech BAs User Experience Designer App Developers Architects Testers (QA+UAT) Project Managers Pragmatic Personas Story Mapping UI Sketch Reiterating Planning User Goals Scenarios & Narratives Interaction Design Grouping by Themes User Story Authoring Acceptance Criteria Personas Day in Life of each Persona Activity Map Task Map Prioritization User Stories A c c e p t a n c e C r i t e r i a

Typical Continuous Integration Process Reports Checkstyle Test Test

Dev Box Local Dev Build ~5 Min Retrieve Artifacts Publish Artifacts (jars) Update Checkin Team CI Server Smoke Build ~10 Min Continuous Integration Build Pipeline Retrieve Artifacts Dependency Management Checkout Retrieve Published Artifacts Version Control Checkout Team CI Server Functional Build ~30 Min Retrieve Published Artifacts Publish/Promote Dependent Artifacts Each build will broadcast build stats and other reports to all relevant stakeholders at each stage of the build pipeline Checkout Checkout Dev Env Cross Stream Build ~60 Min Retrieve Published Artifacts Checkout Retrieve Published Artifacts Each build will update Task statues SIT Env Theme Build ~60 Min QA Env Product Build ~60 Min SCM Project/Task Management Tool UAT Env UAT Build ~30 Min Staging Env Staging Build ~30 Min Prod Env Live Build ~30 Min

Local Dev Build Smoke Build Func Build Cross Stream Build Theme Build Prod Build UAT Build Staging Build Live Build Objective Ensure basic sanity before the developer checks in code. Ensure the developer has checked in all files, the code compiles, all unit tests work and basic code quality related stats are reported to the devs. Ensure each story s business logic is implemented correctly and satisfies the doneness criteria at the story level Ensure each story integrates with other streams and business logic continues to work as expected. Promote new produced jars to dependent teams. Ensure each implemented, complete trade workflow works as expected. Interact with as many sub-systems & interfaces as possible. Ensure each implemented end-toend feature works as expected including various performance and security related SLAs are met. Also test out the migration scripts Ensure Operations can execute an end to end workflow and it meets their goals. Ensure the product as as a whole can work with other systems in the enterprise. Make Go/No-Go decision. Deploy the product to the live environment. Job Duration Stakeholders Retains the environment. Only compiles and tests locally changed code (incremental). Compiles, Unit test and static/dynamic code analysis on an incremental environment Clean environment, setup database, team specific biz acceptance tests. Stubs/Mocks out other functional modules or subsystems. Integrate promoted code with other modules, runs crossteam workflow & integration tests in an incremental env. Stubs/Mocks other sub-systems. Promote jars to dependent stream. Clean environment, setup dependent systems, execute theme-level acceptance tests. As few stubs/ mocks as possible. Migrate existing system to the latest version, setup dependent systems, execute product-level acceptance and UI tests. Almost no stubs/ mocks. Migrate existing system to the latest version, setup dependent systems, let the Operations team use the system thoroughly. Migrate existing system to the latest version, test the system with other systems during the Enterprise Release cycle. Migrate existing system to the latest version and party! ~ 5 mins. ~ 10 mins. ~ 30 mins ~ 60 mins ~ 60 mins ~ 60 mins ~ 30 mins ~ 30 mins ~ 30 mins Developer writing the code Developers of a given team Team members of a given team + Teach BA All functionally affected Teams + SMEs All teams + SMEs All teams + SMEs SCM + SMEs + Operations Team Enterprise Wide World-wide Trigger/ Frequency Before checking in code. At least every 30 mins. Every checkin. At least every 30 mins. On successful Smoke build. At least every 2 hours On successful Functional build. At least twice each day On successful Cross-Stream build. At least once each day On successful Theme build. At least once each week Each Sprint Each Enterprise Release Cycle On Successful Staging Build (Manually triggered for now) Where On developer s workstation Team CI Server Team CI Server Dev Environment SIT Environment QA Environment UAT Environment Stating Environment Production Env Artifacts Code+Tests +Config Team produced Jars, static code analysis reports Team produced Jars/ Wars. Static+ Dynamic Code Analysis reports Integrated jars pushed to dependent teams Fully functional app with workflow level reports Configured & packaged app (war) with migration scripts & traceability reports. Configured & packaged app (war) with migration scripts Configured & packaged app (war) with migration scripts $$ DevOps Roles (currently missing) & Test Data strategy is very important to get this working. Overall governance model will also be required to make sure build failures are addressed immediately.

Example Jenkins Build Pipeline Plugin s View

Test Driven Development Add a Test Pass Run the Test TDD Rhythm - Test, Code, Refactor Fail Make a little change Run the Test Fail Pass Refactor

Acceptance Test Driven Development Iteration Story Acceptance Criteria Automated Unit Test Automated Acceptance Tests Automated UI Tests P E R F O R M E N C E T E S T S Automated Acceptance Tests Exploratory Testing Acceptance Criteria

Thank you Naresh Jain naresh@agilefaqs.com