By Ashwin C on Jul 9, 2013 4:03:16 AM
What is Software Quality Assurance ?
"Quality Assurance" is the calling card for a software testing services provider. No matter how robust a software application is, its failure to perform at a critical instance can prove fatal to clients. Through the lens of history it has been observed that enterprises spend more in fixing bugs as compared to developing software applications.
Though an in-depth analysis of quality is outside the scope of this post, I will give a round up on "Quality Assurance" by ensuring maximum test coverage as means to achieving sustained client relationship.
One of the common challenges for a testing team is to deliver projects within the time-frame yet ensure maximum test coverage. Testing is not a one size fits all solution for problems as testers have to drill deeper to explore bugs that can damage the quality of an application. Though a solution to this is not readily available, however we may need to arrive at one, based on the project circumstances/needs.
Before I set out for a solution, let us explore some of the possible risks/outcome of not meeting the time-frame/maximum coverage:
a) Time Frame Overshoot: Delayed product delivery, Client Dissatisfaction, Extra Cost, Extended Time to market
b) No Coverage: No confidence in product quality, buggy product, user dissatisfaction, extra cost in fixing issues and re-releasing the product etc.
“Time Limit” is a management activity, but from a tester's perspective we run on a pretty tight schedule and have to focus primarily on ensuring maximum coverage within the prescribed time limit. We have to ensure the application performs its function time after time. And to achieve this, we can develop a few handy utilities/tools like the one I have described below:
1) Develop complete test suite, which includes:
- Test case for all functionality of the application
- Critical Functionality of the application being identified and filterable
- Prioritize test case as high/medium/low
[Benefits]: Allows to “Pick & Choose” test cases for execution based on:
- Criticality of the module/function
- High Priority test cases
- Regression cases based on Change/Bug Fix in the current build
2) Optimize test scenarios:
- Eliminate repetitive and non-valuable tests which may yield same results as other tests in the suite.
- Effective Coverage: Focus on combination testing using orthogonal array based mathematical model tools like All Pairs, PICT etc., and Decision Tables.
[Benefits]: Provides minimum scenarios covering all possible combinations which are non-repetitive and valuable in predicting the result.
3) Automated Regression Suite – Automate all possible regression test cases
[Benefits]: Ensures execution and coverage of all mandatory flows without much manual intervention, even during crunch situations
4) Focused Testing: Apart from the above in case we have a very tight deadline, it is always preferable to focus the testing efforts on some critical areas like:
- Areas which may be vulnerable to changes and yield more bugs
- Areas which have yielded more bugs in the past
- Areas which are Exposed to the End User or User Critical
All the above utilities applied together will provide a cohesive framework to guide a tester or a team to maximize test coverage and achieve greater quality within stipulated time limit. However, it also depends on the tester's knack of choosing the “Minimum most test cases” to draw upon insights that can help solve similar issues.
In the process, if the user over emphasizes on minimizing the test cases to meet the time limit or if the area of focus is incorrect, he may miss out in terms of coverage and may lead to under testing. Hence the tester should wisely balance in choosing the right focus area and the right test cases for the build and plan to execute them within the given time frame. If the tester feels that the selected/shortlisted test cases cannot be run in the given time frame, it is always advisable to buy more time. And in case that is not possible, it’s prudent to alert the stake holders about what test cases have been ignored and which modules are under tested.
Ignore "Quality Assurance" in your services road-map and you do so at your own peril.