Why Flex Load Testing?
In today's complex web application world, developers need to test applications that go beyond simple HTTP-based pages. They need to test Rich Internet Applications (RIAs) that incorporate complex
technologies like Adobe's Flex or server software like
(Adobe LiveCycle Enterprise Suite) or
Adobe Digital Enterprise Platform.
Adobe Flex applications may be different from applications you worked with previously. With applications that deliver HTML as the user interface, the server does all of the processing. Users
simply page back and forth to the server. Flex applications are different. These applications download the Flash client application and run in the browser or on the desktop for
Adobe AIR applications. They only go back to the server periodically to request or send data.
For this reason, server loads reveal a very different profile.
With web applications, performance is measured mainly by the round-trip times between the client's web browser and the server that provides the data to the browser. Flex technology can cause
significant increases in the number of browser-to-server HTTP calls made in the background. This increase in traffic can have a profound effect on performance. While users might not be aware
of the round-trips between the browser and a distant server, they will definitely notice performance problems if the application is slow or doesn't work because of the increased load. This situation
makes load testing very important when working with Flex.
With innovative RIA technologies like Flex, there are many new
challenges to address. If you can address these challenges, you can expect success with Flex. If you're developing or deploying applications in this fresh environment, you need to think about
load testing in new ways. This article will to discuss the new challenges in load testing Flex applications and how to best address them.
What You Want to Test?
Before you start testing an application, it is important to determine your application testing objectives. Do you want to test an application's robustness, performance, infrastructure and/or
stability for a predefined user load? If yes, then you want to simulate user experience at a constant rate over a period of time. The test results should answer the following questions:
To find out the different break points, you want to progressively increase the load of the application. The test results should answer the following questions:
- Is the server capable of handling a certain number of simultaneous users?
- Is the average response time for pages acceptable under this set load?
- Does the server revert to normal behavior after a load peak?
- How many users can the application handle while maintaining an acceptable response time?
- What is the load threshold above which the server begins to generate errors and/or refuse connections?
How to Test Your Application
To produce a realistic test, it is essential to pay special attention to three key items:
1. Number of Virtual Users:
The number of virtual users must be close to the number of real users once the application is in production, with a realistic think time applied between pages. Think time is the time it takes a user
to click through to the next page from the current one. Avoid testing with too few virtual users and a reduced think time.
2. Type of Virtual Users:
Not all users employ a web application in the same way. Therefore it is important to define a virtual user for each user profile: simple browsing, browsing with modifications, system administrator, etc.
3. User Accounts and Values:
Testers should use variables to dynamically modify key values such as user account logins or certain form parameters (such as productID in an e-business application).
Tips to Keep in Mind when Testing Flex
To improve application performance, Adobe's Flex AMF (Action Messaging Format) protocol is
used to exchange data between an Adobe Flash application and a database, using a Remote Procedure Call. Many load testing tools rely on data being sent over HTTP and don't tap into AMF protocol.
Therefore, they don't go deep enough to understand what is exchanged between client and server. When load testing Flex applications, it is important to find a tool that has a dedicated module for
Flex so that AMF messages can be replayed without special processing.
Tip 1: Make sure your load testing tool can automatically process serialized objects and internal identifiers
AMF binary messages contain serialized objects. These objects are different from the standard Java serialization. For optimum testing, make sure your load testing tool displays these objects so
that you can view, edit, and validate the results. In addition, AMF messages protocol uses internals identifiers (clientId, DSId ...) parameters to maintain the AMF session. Parameters in an AMF
session are dynamically generated and are numerous. To avoid painful manual configuration of these parameters, make sure that your load testing tool automatically processes serialized objects and
Tip 2: Make sure your load testing tool can support customized external messages
AMF3 compact binary format helps integrate binary data exchange into all server platforms. The protocol improves the quality of all remote and messaging solutions for Flex and optimizes data exchange.
AMF3 reduces the quantity of exchanged information and avoids redundant messages. In particular, AMF3 Externalizable messages allow developers to customize the serialization of objects exchanged in AMF.
When selecting a load testing tool, make sure it allows you to integrate custom code into it. For optimum testing, the customized code should be loaded and run by the testing tool to correctly
replay custom messages. The capacity of the tool to accept the developer classes is mandatory to simulate loads.
Tip 3: Make sure your load testing tool can support Remote Messages, Polling and Streaming
Flex servers use AMF protocol update client data in two ways:
1. The polling method:
This involves the browser querying the server at regular intervals. Technically simple in its implementation, the method's downside is that it needlessly overloads the server and it is not very reactive.
2. The streaming or "push" method:
In this case, the client sends a single request to the server, and the server responds when pertinent information is available, without closing the request. Thus, the server can again send information
to the client using the same connection, without having to wait for a new request. Using this method, client data can be rapidly updated while the network traffic is kept minimized.
For best results when handling the performance of a streaming request, make sure your load testing tool measures the response time after each response data block sent by the server, without waiting
for the end of the real HTTP request.
The testing tool must also be able to keep the stream open when it plays a streaming request. This request will block the connection so the tool has to use a second connection for classic requests.
RIAs like Flex technology allow a richer, faster and more interactive experience with browser-enabled applications and services. While next-generation applications like Flex promise a much better
customer experience, they also have the potential to overwhelm the servers and networks that deliver the content to client browsers.
Given the potential peak demands of these applications, it's best to approach web application development with RIAs like Flex with care. When using Flex or other RIA technology, you need to verify
that your applications can handle the loads in a pre-production environment first. Poor application performance, unexpected deployment issues, and server malfunction can compromise your web application.
But by following many of these best practices and techniques explained in this article, Flex developers can improve reliability, performance, reduce development costs and, most important, help your
company deliver what it promised in terms of application functionality and performance.
NeoLoad is a performance testing tool which supports
Flex application testing.
You've liked this content? Please recommend us on Google+1: