This document provides an overview of QASymphony and discusses how it can help relieve testing bottlenecks in projects. It addresses how testing can become a bottleneck if testers cannot test efficiently. It proposes moving testing earlier in the development cycle using a test-first approach. This allows code to be deployed sooner by removing testing as the bottleneck. It also discusses how QASymphony can help optimize both manual and automated testing.
Report
Share
Report
Share
1 of 35
More Related Content
Relieving the Testing Bottle Neck in Your Projects | cPrime + QASymphony
2. AGENDA
• HowTesting Becomes a Bottleneck
• Removing the Bottleneck with a New Process
• Increasing ManualTesting Efficiency
• Improving AutomatedTesting Coverage & Reliability
• BuildTestability into the Application
• Managing anTesting Strategy
• Measuring a DevelopmentTeam on Quality
• Q&A (based on interest)
4. Past development cycles often modeled the Rational Unified Process:
Source: http://www.psa-software.com/_img/_knowledge_center/rup.jpg
WHEREWE CAME FROM
5. If testers cannot test efficiently with predictable estimates of effort,
testing can become the bottleneck for development (less features
deployed):
TESTING CAN BECOME A BOTTLENECK
Design Code Test Deploy
Features that couldn’t be
tested, so not deployed
6. Given a fixed level of depth in the testing , we can test and deploy more
features but it will be less coverage
WHAT IFWETEST LESS?
Design Code Test Deploy
Reduced depth of testing
on features
7. If given the choice, we would have moved testing earlier in the cycle, but
we were constrained by many environmental factors:
WHY DOESTESTING NEEDTO BE LAST?
Environment
Creation
Code Merges
On-Premise
Prevalence
Desktop
Focus
Lack of
Collaboration
Off-Shore
Development
8. Many of our prior limitations have been replaced, based on macro trends
around technology and industry:
WE CAN MOVETHETESTING UP FRONT
• Containers have simplified the process dramaticallyEnvironment Creation
• Git has replaced Subversion as the industry standardCode Merges
• Cloud adoption is at an all time high, increased securityOn-Premise Prevalence
• Prevalence of Web, Mobile, Internet of thingsDesktop Focus
• Increase in teamwork, chat and collaboration technologyLack of Collaboration
• Shifts towards rural sourcing, onshoring of laborOff-Shore Development
9. Now that we have freed ourselves of past limitations, the process can be
shifted to one that aligns more with our needs:
Traditional Approach
Test-First Approach
HOWTHE PROCESS CAN LOOK NOW
Design Requirements Code Test Deploy
Design
(Automated)
Test
Code Refactor Deploy
10. Creating tests up front means code can be deployed almost right upon
completion, removing the testing bottleneck:
HOWTHE FUNNEL LOOKS NOW?
Create
Tests
Code Deploy
11. Moving testing to the front of the process is desirable, but many realities
of software teams restrict them from doing so:
• Lack of automation coverage for legacy features
• Lack of testability (API’s, UI frameworks) in legacy applications
• Lack of automation talent within the organization
• Finite project length (i.e. package software implementation)
• Regulatory compliance (need to document requirements)
For these organizations – we will also cover ways to make a traditional
requirements driven approach more efficient
FLIPPINGTHE FUNNEL MAY NOT BE POSSIBLE
13. Manual test execution can be optimized by implementing exploratory testing. A 2007
controlled study found that:
– Testing with test cases vs. exploratory testing take almost 7 times longer, due to the
amount of time needed to write the tests and report on them – TEST FASTER
– Testing with test cases vs. exploratory testing doesn’t find any more defects, and
does not miss many (if any) critical or severe defects in comparison to test case
testing – TEST BETTER
– Testing with test cases causes more false defect reports vs. exploratory testing –
TEST SMARTER
Study link: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.167.3696&rep=rep1&type=pdf
HOWTO OPTIMIZE MANUALTESTING
14. 1. Parallel test planning, test design, and test execution
2. Specific yet flexible
3. Aligned towards investigation of potential opportunities
4. Values depth and attention to detail during testing
5. Fosters knowledge sharing and awareness
WHAT IS EXPLORATORYTESTING?
15. Unlike traditional testing techniques, planning, design, and execution happen concurrently,
allowing efficiencies of time as well as flexibility in approach
PARALLEL PLANNING, DESIGN & EXECUTION
Plan Design Execute Report
Plan
DesignExecute
Report
16. Exploratory testing provides a specific lens through which to perform testing – whether
that be a user persona, functionality, criteria (i.e. localization), etc.
However, it allows testers to use the tool as an end user would, not necessarily as the
product owner envisioned it
SPECIFIC,YET FLEXIBLE
Manual Scripted Testing
I tested the application as the script
prescribed
Exploratory Testing
I tested the application as the end user
would
17. Exploratory testing rewards testers who identify unknown areas of “opportunity” within
the application, as they are essential in maintaining a backlog of future test charters
INVESTIGATING OPPORTUNITIES
Manual Scripted Testing Exploratory Testing
18. Exploratory testing relies on knowledge sharing to reach full potential – developing testers
who understand the impact of more areas of the application allows them to identify more
areas of risk and opportunity
KNOWLEDGE SHARING
Plan
DesignExecute
Report
Transfer
Learning
Example Questions to Ask
• Have you seen this before?
• What am I not considering?
• Why would someone do this?
• How would you have tested this?
20. Moving towardsTDD will also demand a more complete automated
testing strategy focused on more than just UI testing:
BUILDINGA COMPLETETESTING STRATEGY
UI Tests
Integration
Tests
Unit
Tests
UI Tests
Integration
Tests
Unit Tests
21. UI automation should be only be used for key features and functionality,
given the following limitations:
• SPEED – tests take much longer to run when waiting for pages to load,
objects to interact, etc.
• RELIABILITY – tests break frequently for reasons besides failing
functionality (like renamed or moved objects)
• MAINTENANCE – tests require frequent updating as UI elements are
changed, requiring more maintenance
• COST – many UI automation tools are expensive and based on
perpetual licensing
WHY UI AUTOMATION IS LIMITING
22. The ideal testing pyramid would look like the following:
THE IDEAL RATIOS
UI Tests
Integration
Tests
Unit Tests 70% of coverage, effort, maintenance
20% of coverage, effort, maintenance
10% of coverage, effort, maintenance
23. Focus on the missing box (es) in the AgileTesting Matrix - typically the
performance and load tests:
Source: http://image.slidesharecdn.com/agiletestingandtheroleoftheagiletester2008-09-26rev4-090615163750-phpapp01/95/agile-
testing-the-role-of-the-agile-tester-40-728.jpg?cb=1245084455
ADDING OTHER MISSINGTESTS
25. Moving toTDD process moves testing activity from solely UI based to
focusing more testing at the services/API layer:
BUILDINGTESTABLE SOFTWARE
Need for Testability
26. Testing in the Unit Layer will require more mock objects to “unhinge”
features that are being tested, removing them from dependencies:
Source: http://zeroturnaround.com/wp-content/uploads/2015/12/PUZZLE-1-min.png
BUILDINGTESTABLE SOFTWARE
27. Many teams struggle to pick an automation framework, but the reality is
most frameworks are similar and differentiate in a few key areas:
PICKING AN AUTOMATION FRAMEWORK
•Does it support dev
centric languages
(i.e. Java) or easier
to use languages
(i.e. Ruby)
•Does it support the
concept of
features, or
stories?
•Does it have
features to support
large enterprises,
as well as small
teams?
•Is it more focused
on BDD, TDD, or
ATDD?
Dev Style Scalability
LanguageWorkflow
29. There is a myth that EVERY test should be automated immediately for a
team to be as agile as possible
It is impossible that creating an automated test would the most efficient
approach in all scenarios
Some examples:
• Tests being used one time
• Tests on difficult parts of an application
• Tests for parts of the system that change frequently
THE AUTOMATE EVERYTHING MYTH
30. A more balanced approach is to estimate the total cost of creating AND
maintaining a test over a course of its life vs the cost of manual testing:
AN ROI BASED APPROACH
Automation Manual
Script Creation Cost $500 $200
Script Maintenance Cost $200/year $50/year
Script Execution Cost $120/year $480/year
Cost after Year 1 $820 $730
Cost after Year 2 $1140 $1260
Cost after Year 3 $1460 $1790
Manual
Even
Automate
31. For teams that are looking to build automation coverage on legacy
applications, another approach might be to automate based on time saved
A SAVINGS BASED APPROACH
Test Case A Test Case B Test Case C
Manual Execution $500/year $300/year $400/year
Manual Maint. $200/year $100/year $200/year
Auto. Creation $300 $150 $480
Automation Maint. $100/year $50/year $100/year
Year 1 Savings $400 $250 $120
33. Agile promotes delivering software quickly, so development managers
often incentivize developers based on features, story points, or lines of
code delivered
However, this approach can often incentivize bad behavior – pushing
incomplete or unstable code over to testers, who are then responsible to
identify the issues developers missed
Development managers should incentivize their teams for building good
code quickly, which is understandable and easy to test and debug
MANAGING ENGINEERSTO QUALITY METRICS
34. Coupling Between Objects (CBO) – A measure of how closely or loosely
coupled methods are. 1-4 is good, higher than that may mean risk in
trying to refactor or resolve issues
Comment Ratio – Ratio of comments to total lines of code, indicating how
much the developer has documented the code for future debugging or
refactoring
Associated Critical Defects Ratio – Ratio of critical defects opened on
specific features divided by the effort (story points) for that feature. Often
normalized for feature complexity
SOME GOOD QUALITY METRICSTOTRACK