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 on bug fixes 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 a means of achieving sustained client relationships.
One of the common challenges for a software testing team is to deliver projects within the time-frame yet ensure maximum test coverage. Software testing is not a one size fits all solution for problems as testers have to drill deeper to explore bug fixes 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/outcomes of not meeting the time-frame/maximum coverage:
a) Time Frame Overshoot: Time Consuming 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 a 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:
- Critical module/function
- High Priority test cases
- Regression testing cases based on Change/Bug Fix in the current build
2) Optimize test scenarios:
- Eliminate repetitive and non-valuable tests that may yield the 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 that may be vulnerable to changes and yield more bug fixes
- Areas that 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 development team to maximize test coverage and achieve greater quality within the stipulated time limit. However, it also depends on the tester’s knack for choosing the “Minimum most test cases” to draw upon insights that can help solve similar issues.
In the process, if the user over emphasizes 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 stakeholders 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.