Monday, March 24, 2014

Case Study. How to match Regression Testing Scope with available QA Resources.


A Problem from CTO
Our services are accessed through a browser from a PC or Mac platform. It is also accessed through a browser from tablets.
We will soon introduce an ios app and later on Android.
I would like to be able to test our applications (all have an English and French version) from a combination of browsers and devices. At first count we have more than 60 combinations and permutations.
Our manual regression test takes about 2 days and our automated version take about 2.5 hours.
We run the automated regression test with every deployment which happens most weekends
Please propose a strategy and explain your choices.

Strategy Proposal.
In general  quality (Q)  can be declared as Q = (R*T)/S where R - resources; T - time; S - scope.
In order to be able to finish regression testing in time and not lose quality I have the following options:
- Test Automation
- reduce the scope;
- use available time better;
- get appropriate help with testing within and/or outside scrum team(s).
           
Strategies:
0. Test Automation
Manual testing should be minimized by extending:
a) Unit testing.
No code line of code should be left without a unit test.
b) Functional testing.
c) Regression testing.
d) Performance and load testing.
The growing regression testing suite helps increase stability of the application quality dramatically.

This is long term strategy that will help to convert mini water-fall projects into right iterative development process.

I. Reduce the scope.
 
Approach 1.1
Collect statistics about what device/OS/browser combinations are used.
Select device/OS/browser combinations that exceed a base line value, set by business for mandatory testing. For example use for testing only device/OS/browser combinations that exceed 5%.
Prioritize with business stakeholders the selected device/OS/browser combinations with High, Medium, and Low priority.

Approach 1.2
For the selected combinations exclude an OS parameter. An operation system would not affect the behavior of a web application radically, when on the same browser for the same device.
For example:
Combination1: PC/Windows 7/Chrome 30
Combination2: PC/Windows XP/Chrome 30
Combination3: PC/Windows 8/Chrome 30
It can be reliable to do full manual regression test only on one of those combinations.

Approach 1.3.
Use different device/OS/browser combinations for full manual regression testing during different releases.
Use automated regression testing for the rest of device/OS/browser combinations.

Approach 1.4
Limit browser support.
Majority of the browsers support automatic updates regardless of the operation system. It is secure to support only the latests versions of a browser.

Approach 1.5
Test different parts of the application using different device/OS/browser combination.

The result of those approaches can be summarized in a table. See Table 1 as an example.
If required a similar table can be prepared for each release.

Table 1. NOTE: THIS TABLE IS JUST AN ILLUSTRATION.
Device Type
Operation System
Browser
Priority
Feature
Test Type
PC
Windows XP
IE8
High
Full regression
Automated
PC
Windows XP
IE9
Low

N/A
PC
Windows 7
IE 8
Low

N/A
PC
Windows 7
IE 9
High
Sign in;
Manual
Mac
10.9: "Mavericks"

Chrome
Low
Full regression
Automated
Mac
Version 10.8: "Mountain Lion"

Safari
High
Full regression
Manual
Tablet
Windows 8
IE 10
High
Feature 1; Feature 2; …., Feature N
Manual
Tablet
Android4: Jelly Bean
Native
High
Full regression
Automated
Tablet
iOS 6
Safari
High
Full regression
Automated














II Use available time more efficiently

Approach 2.1
Run automated regression tests more often (for example: every night) against several device/OS/browser combinations.
Create automated tests to cover bugs. Include the tests into automated regression suite. Automated regression test suite should be constantly growing.

Approach 2.2
Make sure an estimation of a story, an improvement, a bug etc. includes testing related tasks.
For example, the complexity of a story is estimated as 5 points. Does this estimation consider testing?
Better estimation will lead to better prioritization.

III Get help within or outside a scrum team.
Approach 3.1
Ask developers to help with testing.
By the end of a sprint, some developers may help with manual regression testing. It can help with the overall quality as well. It also can help to reduce segregation between Development and Testing in a scrum.

Approach 3.2
Ask business stakeholders to help do regression testing.

REFERENCES 
http://www.netmarketshare.com/