The 10 commandments to achieve Quality, Cost Savings, and Faster Releases
The world of Software Testing has seen waves of innovation when it comes to increasing the pace of delivery to production. It has evolved from the Waterfall, to the Agile, and to the semi/fully automated mode using CI/CD, virtualization and, even, AI. This evolution has expedited product releases from several months to a few days. This has also enabled companies to optimize their IT operations and beef it up with best in class technologies and processes in software testing.
Yet, we come across clients who have misconceptions about testing and have very minimal to no testing process in place. Some remarks and objections we often hear are:
- Testing is good to have but not important; our business is doing well with existing IT applications and processes.
- Our business team is responsible for (high-level) testing before the go-live.
- Our application is simple. Our developers do enough testing before pushing the code to production.
- Testing is an unnecessary expense. Or, how can we reduce the cost of IT operations and still carry a QA team?
- Functional testing is good enough we do not need non-functional testing.
- We are launching the MVP. The functionality will be minimal hence we may not require testing.
- My manual testing team is with us for last 10 years and we do not want to automate away their jobs.
- There are many more but the best excuse for not testing is this: What is the ROI of testing? I can see developers are producing something but what do testers produce? How does testing help the business make more money?
These misconceptions and not realizing testing as a continuous need pose a great risk to the product quality and the business.
At CES we have been solving these problems for our clients, giving them utmost confidence in their software releases. Here, I would like to share 10 commandments or testing best practices for an efficient bug free release while maintaining the fast pace of product development.
1. Automate more API tests than UI tests
Automated API tests execute in a fraction of a second and can provide a larger test coverage when compared to UI tests. Balance UI and API tests by smartly identifying what really needs to be validated on screen versus what can be validated through backend API calls.
2. Bring automation to every aspect of the product development
Automating UI tests is not enough for assuring test coverage and efficiency. There are opportunities to implement automation of backend API’s, Test data management, Test environment setup, Load testing, User acceptance testing, and Security testing. All these assure an End-to-End coverage and fast releases.
3. Continuous Testing in DevOps
Regression testing is costly when done manually and that makes a strong case for automation. Doing it on every code deployment increases its value by two folds and prevents defect leaks to production. Tools like Jenkins, Azure DevOps, and AWS code pipelines offer wide range of integrations and features to efficiently deliver faster releases.
4. Setup parallel execution on auto scalable cloud infrastructure
Cloud service providers offer virtual machines and storage space at very low costs. Parallel execution in cloud addresses the issue of Enterprises with thousands of tests which take weeks to execute in a single machine. By creating an auto-scalable test environment, one can execute massive numbers of tests within minutes.
5. Use containerization to run large regression suites in minutes
Containerization services like Docker and Kubernetes can scale the level of parallelization up to 10 times and that helps test execution for large number of test cases. With containerization test environments can be spawned up in real-time and destroyed post-test execution, optimizing the infrastructure usage.
6. Choose a device cloud provider instead of maintaining a local device lab
With digital revolution, mobile device testing services have increased in recent years. Key service providers like Browser stack, AWS device cloud and Perfecto are offering a wide range of services, devices, and platforms to test application compatibility, performance, and usability.
7. Never shy away from using open source solutions
Open source frameworks and tools can offer great value in terms of cost savings for Web, Mobile and API automation. The case for a licensed tool should only be made for very specialized needs when the open source tools cannot support. For example, automating Desktop applications or PDF validation, etc. Frameworks like Selenium, Appium and Rest-Assured are some popular ones in the market. CES has built an in-house Test Accelerator – Zyna using these frameworks that can jumpstart automation projects within a week.
8. Implement real time test analytics & reporting
Having a real-time test analytics improves the ability to measure the test coverage, conduct root cause analysis, and make Go/No-go decision for the build real time. Integrating automation with data analytics tools like Klov and Tableau can even help predict post-production impact for product releases. Test analytics can help enterprises make educated decisions during releases. For example, feature-gating a module (which broke a few areas of the application when enabled) and proceeding with a partial release.
9. Do not ignore the non-functional needs
It is widely accepted that businesses are impacted by non-functional aspects like (Performance, Security, Usability, etc.) rather than the functional issues. Of late, Cyber Security has been one the biggest concerns for large enterprises while on the other hand Usability testing is influencing the marketing strategy of companies in positioning their products and services to the customers.
10. Harness the power of Artificial Intelligence (AI) in 21st century
A new breed of functional testing tools are in the market now, coming with in-built AI capabilities like self-healing scripts, real time predictive analytics, smart object-recognition, record & playback codeless script creation, integration with CI/CD, etc. By using these tools testers can:
- Create scripts at 10X speed
- Perform in-sprint test automation (test automation in parallel with development)
- Reduce script maintenance efforts
- Use predictive analytics to prevent deployment of a buggy build
- Release code fast and even ad-hoc
Tools like Testim.io, Sealights, 21Labs, Mabl, and TestProject (open source) are slowly creating a niche market to cater to customers who want in-sprint automation and have aggressive go-to-market milestones.
Closing thought: Shift left and fail fast
With change in the technology ecosystem and the market needs we must evolve, transform, and adapt our test strategy, tools, and processes to cater to the industry’s future needs. For a faster go-to-market strategy, testing in agile is de-facto. Agile methodologies like Scrum and Kanban have been serving product teams’ needs for over a decade and have now evolved into hybrid methodologies like Scrumban, SAFe, Squads, etc. Smaller self-organizing teams have a better sense of ownership; they quickly resolve conflicts, bring consensus, and take decisions. It is proven that smaller teams build and release software faster into production. The idea of Shift-left-fail-fast encourages developers to write more unit tests which helps in catching bugs earlier in the software development life cycle. CES brings in the best processes and industrial practices, while giving agility to every individual product team to operate independent of each other while maintain their alignment to product roadmap and organization goals. For more information or a conversation on how CES can help build a world-class QA capability in your IT department, contact us at firstname.lastname@example.org.