8 tips to optimizing your continuous testing strategy
Thuc Nguyen, Associate Product Manager at LogiGear, has the tips and tricks you need for better continuous testing. Find out the challenges to achieving effective strategies, key considerations, and how to overcome them. Before you know it, you and your team will streamline test automation.
Though Continuous Testing (CT) offers many benefits, such as accelerating software delivery, keeping tabs on the product’s health, fostering collaboration among previously-siloed teams and exposing business risks early so that key stakeholders can make more informed business decisions, many organizations seriously lack a functional CT implementation that covers all aspects of testing.
This article will provide 8 tips to improve your CT plumbing and to a certain extent, smooth out your DevOps adoption.
The challenges to an effective Continuous Testing strategy
Organizations find implementing CT challenging primarily due to the sheer volume of plumbing work required across the DevOps pipeline. For example, in the Continuous Delivery pipeline, CT typically includes provisioning the staging environment, deploying the test automation tool, deploying the app under test, dispatching the automated test runs to worker machines dynamically, uploading test results to a test management system, and cleaning up the environment.
That same CT process then repeats itself in Continuous Deployment, only more meticulously. The same test suites will be re-run with more sophisticated end-to-end test cases added to ensure the app meets production-level. As a result, teams usually end up with corner-cutting workarounds that will easily break even under very small changes. CT is no more “continuous” per se.
Key considerations for CT success
Test Automation is a key success factor for CT. According to the LogiGear State of Software Testing survey, only 19 percent of respondents who have done a test automation implementation did it successfully the first time. To help overcome some of the complexity, consider these 8 tips when implementing CT:
- Make a comprehensive test automation plan – According to the aforementioned survey, the majority of respondents (42 percent) only focus on API integration testing and UI-testing (without any unit testing). A significant portion only tackle UI testing (12 percent). And another group solely focuses on API integration testing (16 percent). What this data tells us is that most organizations lack a comprehensive CT strategy that covers all types of testing above. When devising a CT strategy, make sure that you consider all testing types. If some test types are left out, it’s only because we deliberately decided so.
- Haste makes waste – If your automated test suites are lengthy and especially unstable, rushing to plug them into the pipeline can do more harm than good. You don’t want to put your test team(s) in a position of having to waste a lot of time analyzing false positives or false negatives per every code commit. Solve this problem by starting with a minimal test suite and incrementally add new stable tests along the way. Stability is more important than coverage (at least in the early stages of your DevOps journey).
- Select a reliable test automation tool – Besides a good test design strategy, your test automation tool is critical to achieving 100 percent stability. It would be frustrating if a test failed simply because the test automation tool couldn’t click on the designated UI control on the app under test. Ideally if a test fails, you want it to be only either because of a bug or an intentional design change of the app under test. A good test automation tool also reduces the volume of plumbing work a.k.a. patchy automation scripts you’d have to perform.
- Consider modularizing your tests – If you’re accumulating a great amount of poorly-structured (and often broken) tests, it might make more sense to pay that technical debt by modularizing and decoupling the moving parts of your tests (such as element locator mappings, test data, and test flow). The key principle here is separation of concerns, which helps desensitize the test and makes code refactoring easier. As a result, you don’t have to update the components that are not directly related to the change from the app under test.
- A picture is worth a thousand words – When debugging test results to find the root cause of test failures, screenshots of the test run are your best friend. Good automation tools generate screenshots with UI interactions highlighted. If your test automation tool doesn’t support screenshot recording, consider implementing it on your own or looking for another test automation solution.
- Don’t overlook test execution costs – To scale up test coverage, teams often opt for test execution in the cloud. With cloud usage being very expensive, test execution can quickly surge to a major cost burden. Also keep in mind that the massive matrix of configurations can further hike up the test execution cost. It’d be more economical to separate the sophisticated integration tests and compatibility tests apart from the low-level tests, and execute the low-level tests on premise, while leaving the those high-value integration & compatibility tests to the cloud.
- Invest in a monitoring system – Continuous Testing and DevOps were born out of the struggle between “development” teams (focused on pushing out new features) and “operations” teams (focused on keeping the services reliable). To help bridge the communication gaps between the two groups, consider investing in a system monitoring tool, which can help isolate the root cause of service blackouts more effectively.
- Don’t be afraid to outsource – In the world of CT, there are a lot of specialized testing areas, for example security testing, performance testing, impact analysis by mining machine-generated data, test containerization and more. Good third-party vendors might be able to offer a level of expertise that allows your team to focus their energy and talents on the most important aspects of the development cycle. As a result, testers are no longer out-of-sync with developers during sprints.
SEE ALSO: Falling into the automation honey trap
Speed in software development and testing is no longer the vision, it’s the expectation. Implementing a smooth Continuous Delivery or Continuous Deployment pipeline with a foundation of well-designed and fully-automated Continuous Testing allows teams to deliver on this expectation.
However, it’s often a challenging journey. By following the suggestions above, you’ll be able to streamline your test automation and make Continuous Testing a reality in your team.