Performance Testing for Our Modern, DevOps World
Performance testing used to be an optional aspect for most applications—something you did at the end, if you had time and you really cared. Now, it’s a must.
User expectations today are much more sophisticated (you compete not only within your industry; your app is compared with everything else users experience online), and software is becoming more complex, with many third-party components deployed over cloud infrastructure.
And this is not limited to the performance of your app. Your development process needs to be fast and agile to guarantee a faster time to market and rapid response to customers’ needs.
Enter DevOps, a new approach to the whole development lifecycle, made possible by the introduction of modern approaches such as continuous integration and continuous deployment. The need for automation is critical to DevOps, not only for development and deployment, but also for testing. You don’t want testing to become the bottleneck in your development process.
Continuous testing is possible thanks to new solutions that allow for quick test creation and automation. Testing that used to take weeks to cycle through QA can now be accomplished within hours—no bottleneck.
Consequently, testing now can and must be an integral part of the application lifecycle. In the early stages of development, you can use new techniques based on test-driven development. During integration, functional testing solutions automate most if not all the required tests. And in preproduction, acceptance and performance tests complete the QA phase.
Performance testing is no longer an add-on. It is now a required component to guarantee applications can scale rapidly and reliably.
Performance testing solutions make it easier to quickly identify problems before the customers see them. The key is automation and iteration. It is important to be able to test frequently, rapidly, and efficiently.
As the cloud enables distributed architectures, software is also moving in that direction. There has been an increase in adoption of third-party cloud services and, more recently, containers and microservices. These new technologies have helped conclude the era of the monolithic application and made it possible to create modular architectures, where logical entities can be developed and tested separately.
The boundaries of each logical component are well defined, so there is a built-in resilience against failures from other components. The change process gets simplified and pieces can be tested and deployed separately. The identification of issues and problems also becomes faster, as each component is first tested separately.
Containers and microservices also have an impact on performance. It makes it easier to test the performance of individual components in isolation, especially when changes affect only some areas. Containerized environments make it easier to optimize the application by validating changes to the environment or system configuration.
As DevOps-based methodologies are more broadly adopted, the software testing process will increasingly move to a continuous testing model. While this may be a significant adjustment in the near term, the use of modular software architectures and continuous testing will have a positive impact on the overall application performance, empowering DevOps teams to deliver better products faster.
Paola Rossaro is presenting the session Performance Testing in a Containerized World at STARWEST 2017, October 1–6 in Anaheim, California.