Performance testing

Performance testing is a type of non-functional testing. It tests the quality of an app under varying capacities. Performance testing is critical because it provides insight into aspects of an app, such as speed, stability, and scalability. Without it, users may encounter poor usability.

Why performance testing?

The nasty habit of performance problems is turning up late in the application life cycle, and the later you discover them, the greater the cost and effort to resolve. The following figure illustrates this.

The planned line (solid) indicates the expected outcome when the application is developed with a carefully factored process at the planned moment (Black Diamond). This is typical application deployment and provides immediate benefit to the business, with little or no performance problems.

The actual line (dotted) indicates frequent reality when development and deployment targets slip (striped diamond) and significant time and cost are involved in trying to fix performance issues in production. This is bad news for the business because the application fails to deliver the expected benefit.

Traditional performance testing

Traditional performance testing used to focus mainly on loading the infrastructure to understand how applications would behave when infrastructure components were under stress. Today's performance testing does not resemble what it used to be ten years ago. Before the digital transformation, performance testing was typically carried out on the server-side by ignoring the client-side. The client-side were desktops and laptops, usually equipped with huge memory and a high-end processor. Because these machines are static, not many external factors influenced in-app performance. Overall, due to low external exposure, client performance testing was ignored.

The challenge

Traditional load testing does not put much emphasis on client-side bottlenecks. Post digital transformation, more than 60% of traffic is coming from smartphones.  Those have limited memory and CPU, with a wide range of specifications provided by a variety of vendors. Also, these devices are exposed to environmental conditions that affect application performance, like having to work under different Wi-Fi or cellular conditions, constantly switching between access points and cellular, calls and messages interrupting applications, applications running in the background, location changes that occur because users are constantly on the go, to name only a few.

Overall, no matter how good server and server infrastructure are, app performance depends on the client-side, too.

The solution

Perfecto has a matured performance testing solution that puts more emphasis on client-side single-user performance, supporting end-user conditions along with server-side load testing (third-party integrations). All these capabilities are easy to add to your test. They become visible in a new reporting interface that has been designed to help identify and drill into identified issues.

Perfecto provides:

  • Real user simulation
  • Browser front-end metrics
  • UX timers
  • Transactions/checkpoints
  • Rich artifacts, such as network HAR files, vitals per platform and transactions, KPI metrics, assertion reports, logs, videos, and screenshots for efficient debugging and resolution of UX issues
  • Third-party performance testing tools integrations

For information on Performance testing with Perfecto and BlazeMeter, see the Performance testing in our BlazeMeter and Perfecto | Better together article.