Topics In Demand
Notification
New

No notification found.

Blog
Continuous Performance Testing is a necessity in the world of DevOps

June 23, 2020

619

0

In the past, performance testing used to be an option in the software testing process. It was something that you did only when you had spare time and when you felt like. Today, performance testing is more important than ever. It is compulsory.

App users expect more from apps today. The competition is high, and you are competing against others who are not even in your industry. Your apps will be held to the same standards as that of those in other industries. A lot of software are now being supported by third-party components that are deployed over the cloud.

Apart from performance testing, there is now a need for fast, agile developmental process. You must anticipate and respond quickly to the needs of your customers. You must have a faster time to market to beat your competitors.

DevOps is the latest approach to development lifecycle. DevOps involves the use of modern techniques like continuous deployment and continuous integration. DevOps requires automated development, deployment and testing. Every process of the development lifecycle involves some form of automation or the other.

With new techniques that allows for rapid test creation and automation, continuous testing is now possible. Thanks to DevOps, testing can now be completed within hours with no glitch in performance, as opposed to what used to take weeks to accomplish.

Testing is now a fundamental part of the application lifecycle. At the initial development stages, new approaches can be used based on test-driven development. During the integration process, most or even all of the required tests are automated with the use of functional testing solutions. During preproduction, performance and acceptance tests make up the quality assurance phase.

Performance testing is now a compulsory function to ensure that apps can scale reliably and rapidly. It is no longer an optional thing.

DevOps involves the use of continuous performance testing to vastly improve the software development and deployment process.

Why Performance Testing is Needed

Here are the reasons why performance testing is needed:

  • A lot of customer-targeted applications use A/B tests and experiments to improve their conversions. When business teams launch experiments without involving IT teams, these experiments can affect the performance of the apps.
  • With the use of Agile and DevOps best practices, a lot of enterprises have increased the frequency at which they deploy applications. If you deploy several apps within a short time, there is an increased risk of having performance and quality-related issues.
  • Organizations are now migrating their apps to the cloud with the use of cloud services like Amazon Web Services, Microsoft Azure and Google Cloud. Public cloud infrastructures are not as stable as you think. They contain a lot of moving parts, and changes made by cloud providers to components like virtual machines and load balancers can affect the performance of applications too. These cloud migration journeys can impact app performance more than expected. There is a need for enterprises to monitor the performances of their apps when they are hosted on cloud platforms.

 

Reasons Why Load/Stress Testing is Used

Load & stress testing is performed on platforms and applications for the following reasons:

  • Load & stress testing help to identify performance issues experienced during heavy traffic. The system is put under stress for this.
  • Load & stress testing is used to finetune databases, capacity planning and apps to support special events and sales like Cyber Monday, Black Friday etc.
  • Applications that are launched for the first time or major apps that are migrated from internal data centers to public cloud services use load/stress testing to confirm if the app can handle the expected traffic.

Continuous performance testing involves the deployment and development of low-volume load tests to monitor the performance metrics of API end points, database queries and critical application user flows of systems without over stressing them. Continuous performance tests are continuously deployed to perform check-ins in a DevOps CD/CI pipeline. The tests are scheduled for execution on a daily basis in a production environment or a similar test environment.

Steps for Continuous Testing

Here are three steps that should be taken for operational engineers and developers to kill off old practices and achieve the needed DevOps results.

1) Put DevOps Best Practices in Place

Basic DevOps best practices should begin. All performance and quality assurance teams should be reorganized together under operations. All operation team members should be embedded within the development teams. Operation engineers should begin active partnering by enhancing feedback loops to developers through the use of stories in the backlog for performance issues. Ops engineers should also participate in sprint retros and scrums.

Op engineers should also become skilled at automation by carrying out the isolation, replication and description of environmental variables causing problems. They must also ensure that test harnesses continue to improve. This ensures the efficiency of the product pipeline and all product managers, tech leads, developers and QA engineers gain more insights on what is happening at every stage up to final production.

2) Break up Your Tests

If tests are too large, they should be broken up. You should split your tests into components and run as many tests as you can within 30 minutes to one hour. This should be conducted at the API level so even if you are testing different services at the same time, the services are still independent of each other. Each test should have a goal and should provide specific answers to what-if scenarios.

3) Replace Downstream Services with Mocks

Where possible, replace downstream services with mocks. By doing this, you can easily test different what-if scenarios for dependent services without having to rely on the services to be stable.

As you continue to repeat runs of smaller tests and perform fast, real-time feedback to developers, you will get to the point where you can quickly and easily form hypothesis about how code can be improved and make the improvements quickly. Then, you get into a more Lean-Agile state, where you will be fully equipped to multiply the number of hypotheses that you are trying to derive answers for at any given period of time.

 


That the contents of third-party articles/blogs published here on the website, and the interpretation of all information in the article/blogs such as data, maps, numbers, opinions etc. displayed in the article/blogs and views or the opinions expressed within the content are solely of the author's; and do not reflect the opinions and beliefs of NASSCOM or its affiliates in any manner. NASSCOM does not take any liability w.r.t. content in any manner and will not be liable in any manner whatsoever for any kind of liability arising out of any act, error or omission. The contents of third-party article/blogs published, are provided solely as convenience; and the presence of these articles/blogs should not, under any circumstances, be considered as an endorsement of the contents by NASSCOM in any manner; and if you chose to access these articles/blogs , you do so at your own risk.


images
Pradeep Parthiban
Digital Marketing Specialist

Comment

images
With customer centricity becoming the core of software development processes, it is essential that the code is assessed and evaluated on all standards of quality - whether it is performance testing or any other functional or non-functional testing aspect. Loved reading this article.

© Copyright nasscom. All Rights Reserved.