×
×

Executive Summary

According to Dunn & Bradstreet, 59% of Fortune 500 companies experience an estimated 1.6 hours of downtime weekly. Considering the average Fortune 500 Company with a minimum of 10,000 employees is paying $56 per hour, the labor part of downtime costs for such an organization would be $896,000 weekly, translating into more than $46 million per year.

Therefore, from a business perspective, performance testing is critical because software applications delivered to the market with poor performance due to nonexistent or inadequate testing can adversely impact the reputation and revenue of the organization.

Quest Global provides end-to-end software testing services that enable customers to accelerate time-to-market and deliver enhanced and flawless products and solutions. We solve the hardest engineering challenges involved in the software testing domain. This whitepaper provides an insight into how the Quest Global team developed in-house API endpoints, which interact with Linux traffic controllers. Having developed API endpoints for traffic controllers, the team devised the methodology where various components work together to achieve real case scenarios, and the network conditions are timed to achieve the goal.

Introduction

Performance testing is a software testing process that helps to understand how software applications perform under a particular workload or network condition. The primary purpose of performance testing is to identify and eliminate performance bottlenecks in the software application against parameters such as speed, response time, stability, reliability, scalability, and resource usage under varying conditions.

This article focuses on software applications that interact over the network. An attempt is made to set up the testing framework, which allows us to measure performance parameters across varying network conditions.

Types of Performance Testing

In general, software performance testing includes the below types

  • Load testing checks the application’s ability to perform under anticipated user loads.
  • Stress testing involves testing an application under extreme workloads to see how it handles high traffic or data processing.
  • Endurance testing ensures the software can handle the expected load over long periods.
  • Spike testing tests the software’s reaction to sudden large spikes in the load generated by users.
  • Volume testing in which a large amount of data is populated in a database and the overall software system’s behavior is monitored.
  • Scalability testing determines the software application’s effectiveness in ‘scaling up’ to support an increase in user load.

Objectives of Performance Testing

 

Performance Testing Process

The methodology adopted for performance testing can vary widely, but the objective for performance tests remains the same. It can help demonstrate that your software system meets specific pre-defined performance criteria. Or it can help compare the performance of two software systems. It can also help identify parts of your software system which degrade its performance.

Performance Testing of Internet-based Applications

In this article, we will focus on performance testing of internet-based applications which extensively use media content and also performance testing tools that are used widely by performance testing services

Since many software applications work over the network, the key to success is to ensure that performance remains stable across all network conditions, i.e., whether users are working with 2G, 3G, or inferior networks.

When choosing testing tools, one should consider several factors. This includes the protocol support required along with licensing costs. One should also consider the tool’s hardware and software requirements, the tool vendor support provided, and the cost of training personnel.

It is essential to realize that no single tool can meet all testing requirements. One will have to use tools to ensure that testing is comprehensive and can address all testing needs.

Typically, application performance testing setups are in-house networks (i.e., LAN networks). Since bandwidth availability for applications is high, this setup will ensure that the application’s performance is high because of increased bandwidth.

But there may be scenarios where applications work across varying network conditions, i.e., 2G or 3G network, or even poor network conditions that result in frequent packet losses, variable bandwidth, high latency, or mix. So it is equally important to measure the performance under such varying conditions.

Rigorously testing a network device or distributed service requires complex, realistic network test environments. Linux Traffic Control with Network Emulation provides the building blocks to create an impairment node that simulates such networks.

Linux-based network controller offers flexibility in integrating testing framework and provides the possibility of automating the entire process. These network parameters control Linux controllers:

  • Rate
  • Delay
  • Packet loss (%)
  • Duplicate
  • Reorder
  • Corrupt

Linux traffic controllers can be operated in different modes as listed below.

  • CLI – Command line interface
  • Using the command line tool, one can issue various commands to set the network conditions.
  • Developing API

Our Solution

Our team developed a micro service that interacts with Linux traffic controllers. This solution offers easy plug-and-play into any existing testing framework software. Having developed a microservice for traffic controllers, we have devised the methodology where various components work together to achieve real case scenarios, and the network conditions are timed to achieve the goal.

Reference Links

Written by Ravi Belkhindi

on 05 Sep 2022

Senior Technical Architect

Quest Global