I wanted to write a high level overview of why performance testing with Citrix is different from other protocol adaptors and isn’t straightforward. This is possibly one of the least popular protocols for performance engineers to load test because its simplicity ironically makes it complex. Citrix is designed to deliver secure fat client functionality to thin clients. In order to do this the Citrix protocol can essentially boiled down to:
- Action1: Delivery of a bitmap image from the fat client instance to thin client
- Action2: Relay of the users interaction with the Citrix server i.e. mouse screen coordinates, keystrokes and clicks.
This simplicity means the protocol is scalable and future proofed for any application and technology stacks delivered onto fat clients. This is a double edged sword as the load testing tool protocol adaptor can only work with those limited actions – meaning they are not exposed to the more in-depth object level recognition performance engineers are commonly accustomed to
Dogs are simple, however communication with them is difficult and involves considerable effort.
Apologies for yet another bad analogy, but I think it highlights the difficulty facing Perf Eng’s well. Because the CITRIX protocol is so simple, creating robust load tests becomes problematic. If a set of events are initiated it is difficult to validate if they have been actioned, successful or failed – as the response is a series of images. This is in contrast to other protocols such as HTTP – where a response is expected for each request. Citrix ICA doesn’t have this feedback mechanism, making verification tricky. Sending physical mouse coordinates to a server is also notoriously fragile – if a window moves slightly or is slow to response (as it the case when load testing) then the series of subsequent actions will fail.
Basic Performance Techniques & Citrix
Performance Engineer’s will always opt for a series of keystrokes in preference to mouse actions as they are infinitely more reliable, particularly if the Citrix server experiences minor delays to screen refresh. Sync’ing responses and subsequent requests based on a hash of a bitmap image is both inelegant and time consuming. It is this lack of object feedback that makes Citrix challenging – verification, validation and sync checkpoints become the area where time is most spent.
Loadrunner and Citrix Agents.
Loadrunner does neatly attempt to get around some of these issues by giving the load tester the ability to install agent processes on each of the Citrix instances (Citrix virtual desktop agent). This gives visibility to sync on items such as text and object information such as focus, visible, checked and enabled. This will add 2MB per Citrix client, which is worth paying for the extended object and sync visibility.
Tools that have Citrix Support:: Loadrunner, Facilita, Silktest … (Let me know if you know anymore)
One Line Takeaway:
- The Devil is in the lack of object detail: Performance testing of Citrix is paradoxically difficult as the protocol content is simple but object poor. Because of this, extended planning and preparation time is required when creating load testing scripts when compared to other protocols.
You May Also be interested in:
Loadrunner and Citrix Testing Tips & Tricks Part1
Loadrunner and Citrix Testing Tip & Tricks Part2
Loadrunner and Citrix Testing Tip & Tricks Part3


Creating JMeter Test Plans with Fiddler
Performance Reliability
Creating a Performant System
Monitoring Cache Performance
The Appetite to Eat Efficiency
Twitter
LinkedIn
RSS
Thanks Jason.
We looked into performance testing of a Citrix environment at one of my clients and discovered Edgesight for Load Testing – http://support.citrix.com/proddocs/topic/edgesight-loadtest-38/es-loadtest38-landing-page.html
Edgesight is a monitoring tool for Citrix, but has a load testing component. Only for certain Citrix environments, but worth looking into.
Depending on your Critrix license arrangement it can be free and and is often already available to be used.
:0)
BTW – Never got to use it, so I can’t comment on it’s performance.
Hi guys I’ve been using Edgesight for Load Testing for load testing citrix for a client. Whilst the frontend and reporting need improving as a citrix load testing tool is is great. Very reliable, has decent sized Vuser footprint and as you mention its free with Xen App 5.0 server!!. Ive also used LR in the past to test Citrix and I would certainly say that it works much better – the Edgesigt scripts are far more reliable. After all it was was developed by Citrix to work with Citrix products!
I’ve successfully used Rational Performance Tester for Citrix testing before. It is pretty simple to use and scales reasonably; however all the challenges with citrix automation that the post talks about remain true with RPT.