As you might know, at CLEVR we are keen on Performance. We like to do things first-time-right and performance testing throughout your development cycle is a key aspect of that (link to performance blog). As a Mendix Performance Specialist, I am thrilled that our Mendix APM R&D team has developed a load tool for our Mendix apps. In this blog, I will highlight the different types of performance testing, what we have built for load testing, and how you can make use of it.
To quickly summarize why performance is important and what performance testing is, here is a brief walkthrough.
Why Do Performance Testing?
Performance plays a major role in the success of an application. Response times determine the click path of users and slow response times cause users to leave early or abandon the application altogether. You, as a Mendix developer, should know the level of performance that is acceptable to the users of your app. Further, it is necessary to develop criteria for both new applications and applications that have been in use for some time.
What is Performance Testing?
Performance testing provides insights into how an application behaves and performs. With performance testing, you test the degree to which the response, processing times, and throughput rates of the application (time) meet the set requirements. Additionally, you must ensure that the amounts and types of resources used by the application (resource), when performing its functions, meet requirements. This is also applicable when addressing the degree to which the maximum limits of the application parameter meet requirements (capacity).
Naturally, there are different types of performance tests spanning each aspect of the application. In this blog, we focus on load testing which is often mixed up with endurance, volume, scalability, spike or stress testing.
Endurance testing involves load testing for longer amounts of time. These tests can reveal issues such as memory leaks that become apparent over time.
Volume testing focuses on large volumes of data.
Scalability testing measures the ability of the application to scale up or scale out in terms of any of its non-functional capabilities.
Spike testing is a type of load test. The objective of this test is to verify a system's stability during bursts of concurrent users as well as multiple degrees of system activity over varying time periods.
Stress testing simulates the behavior of the application beyond peak load and normal conditions.
What we focus on is load testing, but what is load testing?
- Load testing is the process of putting demand on an application, system, or device and measuring its response.
- It involves increasing the load on the system until it reaches the threshold limit of production-like performance.
- This process provides insights into resource usage, thresholds, and overall throughput.
Now, we can focus on what our Performance R&D team has developed specifically for Mendix applications. They have developed a load generating robot that works in combination with the Mendix Application Performance Monitor (APM) and tracks protocol messages that are sent between the browser and the Mendix runtime.
Now, we can record and playback load scripts, or make data in load scripts variable- all while precisely controlling the generated load. The script automatically handles Mendix login security and Mendix 7 object hashes, and maps Mendix identifiers from responses to following requests.
Load tests can be driven by user count or throughput. During the test we can interactively change the number of users or the requested throughput.
Additionally, we are able to generate reports on all kinds of load test statistics.
A timer links multiple protocol messages to one that users click. Timers measure what the user experiences and are created automatically by using the browser agent recording.
The architecture is the same as for the agent, therefore we are able to run a robot on-premises, or in the cloud, and the robot connects to our multi-tenant cloud manager. The agent includes a robot so you can record and playback in your own modeler for development and testing purposes without setting up the actual robot.
What can you expect from us?
Load testing for Mendix applications can be done by a CLEVR Performance Specialist. To ensure quality, repeatability, and accurate estimates of time spent testing, we typically take the following steps in an agile manner:
In this blog we showed the importance of performance, the different types of performance testing, and how we can do load testing with Mendix Apps. In addition, organizations can hire us to do the load testing together with them.