Quality of Quality Professional
Software Quality Engineering is an important aspect of product development. Where idea, design, user experience are face of a product, quality decides fate of the product. In today's fast moving mobile world, users are no longer complacent when it comes to the quality of any product or applications. A compelling product may quite likely fail if it is buggy or has poor user experience or poor performance or not secured enough to use or may be just not compatible. Companies are investing a major portion of budget on quality engineering department. Successful technology innovation giants are spending as much as 35-40% of the budget on Quality.
Software Quality engineering came to focus and demand in late 90s when products started failing because of poor quality, change in tech stack and market. Quality engineering was not an attractive career choice that time. We have come a long way. Quality engineering is now an integral part of the software lifecycle, respected and well paid. Good QA professionals are becoming assets for the company.
When we say quality engineering and resources are important then we should also see what all are considered as quality and what should be desirable to become a good QA professional. When I talk to people and ask about QA, I get the answer that it’s “Testing” and few points below.
- Test case writing and Feature testing of user stories
- Bug logging, retesting
- Some automation and performance
Is that really what Quality Engineering is? The answer is No. It’s just the first level of a black box QA testing aspect. More often, it is called as Click Tester.
Few major aspects of Testing are
- Integration Testing
- Regression Testing
- System Testing
- Functional Testing
- Usability Testing
- Compatibility Testing
- I18N Testing etc.
- Installation and Recovery Testing
- Etc.
There are few niche areas where it needs specific training, tooling and a QA professional can gain expertise in one of these and can build a career on it. Those can be...
- Performance Testing
- Security Testing
- Automation and Scripting
- Dev Ops (CI/CD)
- Mobile Testing
- DB Testing
There are few specific current trending areas …
- Big Data Testing
- Mobile security and performance
- Cloud tools
Is that all ? Is this what software quality engineering ? The answer again is No.
All the scope mentioned above probably sufficient from "Testing" perspective but Quality Engineering does have much vast scope. I think quality is an integral part in each stage of inception from concept to product and a quality professional can contribute in each of these stages. Please remember, the late we find a glitch/defect/bug in the SDLC cycle, the more expensive it becomes. Even if we develop in micro services where small chunks are getting developed, a late bug may end up with a design flaw and significant shoot up rework and effort resulting additional cost.
Below are the stages where a true quality engineering professional can contribute, quality in testing being a part of the scope. It’s similar to a Life Quality equation.
- Quality check at requirement gathering
Check that requirements or ideas defined by product manager or LoB are getting rightly mapped to user stories written by business analysts. Acceptance criteria are matching to the end user requirements. These criteria will be the source of truth for functional testing.
Requirements may not be always limited to functional requirement, it may also have usability, SLAs, KPIs, Device usage (compatibility), Monitoring etc.
- Quality check at design
This should be architecture team’s and dev lead’s job, why we need any QA here? It’s correct that it’s the arch team and dev leads who will design the system to make the above idea to a design flow. QA can chime in in terms of giving ideas on how we can avoid perf bottlenecks, security loopholes, minimize integration issues from past experience etc. There can be trivial issues from past like using UTC in time formats, handling localized values etc.
- Quality check at coding
Static code analysis, security analysis, threat modelling, code walk through to check how much percentage of code is commented, best practices in naming conventions etc.
White box tester should take the responsibility of unit test creation and code coverage too.
- Quality of testing
Depending upon the application or product, we need to choose what all types of testing required and how much depth and scope of testing needed in each of those types.
Exhaustive testing is a myth, however proper consideration on scope and priority of test cycle is highly essential. Too much in low risk areas and too little in high risk areas is a common pattern of test fault.
- Quality in user experience
Live school process is a part of testing user experience. This is a process where new resources with little knowledge of the product tests in a group and statistics are gathered based on their findings.
- Quality in monitoring
This part is ignored sometimes in design or implementation phase but an important aspect. We need to check that we have proper tools for monitoring and more importantly criterias of alerts. All negative test cases will act here.
- Quality in process
While we adhere to a process, a periodic review and check on process helps it improvising further.
- Quality in matrix
Defect matrix, bug aging report, bug injection report, MTTR, MTTD, defect removal efficiency, execution trend etc. are few examples of matrices we need to measure the quality of a product.
- Quality of documentation
Readme, installation doc, RAML, API Spec, SDK, Dev Portal etc. need to be checked for its correctness. A good product with an incorrect instruction is not less than having a critical issue in the product.
- End 2 End
Integration testers are the persons who get the E2E knowledge of a product. This is not only important but challenging too. Proper involvement of E2E testers and foreseeing integration issues with different components helps to minimize release schedule slippage. Integration issues may not be always system issue.
- Domain Expertise
After product management and business analysts, it’s the quality engineering people who get the opportunity to discuss, get involved in the whole product. They not only get involved in requirement gathering but also getting involved till UAT stage looking at the product from user’s lenses. Hence QA professional are considered to be the second best domain experts. Hence they can also contribute in domain areas and can even chose to become future product managers.
Quality of QA Professionals
It’s a transformation which is needed to become a true quality engineering professional from a click tester in terms of skills, technology knowledge and tooling. It also needs a change in mindset, behavior and approach. Now things are changing from CoE concept to more Agile methodologies like Kanban, Scrum, XP and micro service release mode where QAs are part of a small group and work tightly coupled with dev team and the focus is to deliver fast and with quality. Hence it’s even easier now to make the transformation as you work closely in all phases. Few of the low hanging fruits would be to start trouble shooting, knowledge of E2E of the system, vision to make product future ready adopting industry tech and tools trends.
From organizational perspective, cultural and mindset change are also imperative to make it happen.
In my next article, I will write what an organization should do and what best innovation organizations are already doing to create a true quality culture.
Tapas, you covered all the areas in QA to build a high Quality product. Very good article. Is a Test Architect a role we see adding value for Product Teams?