Performance Testing Citrix

Screen Shot 2011-12-20 at 17.42.57

Load Testing and Citrix

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

4 thoughts on “Performance Testing Citrix

  1. Thanks Jason.
    We looked into performance testing of a Citrix environment at one of my clients and discovered Edgesight for Load Testing –

    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.


    BTW – Never got to use it, so I can’t comment on it’s performance.

    1. 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!

  2. 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.

  3. Need your comments on citrix protocol used in HP Loadrunner 11.52

    Hi All,
    Currently I am in to a trade application for doing performance testing, where I am using citrix ica + web(http/html) protocol for testing the application, it is a online trade application I had already discussed about the maximum users who would be accessing the application. The business team suggested that it would not be more than 30 concurrent users. Now my question is capturing the business process with a lot of hick ups using citrix protocol. Keyboard events/keystrokes are not getting identified by application, when discussed about the same with HP Team they commented as application developed using web/java/.net technologies could not be captured properly, validation may not work properly for application developed using above technologies. we are using the same tool and found some alternatives to help us proceed with our works. Main thing about citrix protocol is validation using sync on text, insert bitmap, insert text check using loadrunner recording toolbar. These controls present in the recording toolbar have been working fine till May 2014, we had some kind of issues with citrix agent from june month, asked the admin team to reinstall the agent file in server. So that the citrix functions could be properly generated/captured, also after installing I am facing a issue with citrixanalyser.dll file as you need to have similar version of citrix client to support citrix agent file in pink color, but I am able to capture the functions. We also had issues with Loadrunner in one of the VM’s asked the admin team to install the same in VM & replaced the citrixanalyser.dll after installation in LR path last month. We are facing so many challenges and it takes too long time to probe and fix the same. Is there any one who might be well versed with citrix protocol, it might also be very good if they can share a document on issues faced and how they have overcome the same with solutions. Also what are the important parameters which needs to be monitored under the citrix server. HP Team is also working on the same, as we have been discussing with them. But we are expecting hell a lot of challenges in coming future projects. I need your assistance to keep up my pace in all my works. Validation is a very good concept in citrix protocol, also HP blogs have suggested to use only keyboard events and not to use mouse coordinates as resolution changes coordinate changes as well obviously script will fail. You need to set the resolution to max in offshore(local system) as well as VM to make the script work properly or else script will fail. When I run the script in vugen I get so many errors as ssl time out, session disconnect, connection cannot be established, etc when I run the scripts as scenario/groups in controller facing issues as scripts are moving directly from init to end and status of scripts(business scenarios) are changed to fail, maximum vusers fail in all the scripts. Where as the scripts are working fine in vugen could you suggest some solution to this issue as well. Also if you have to select a checkbox using keyboard the same can be achieved. How about selecting a radio button where in after selecting the radio button(All Trades) I am able to see the list of trades down. This can be achieved using single left mouse click where as if I try using the keyboard events by pressing tab/spacebar/enter key/shift+tab I could not list down the trades. The radio button(all trade) is selected trades are not populated.
    During morning IST hours application is fast enough to work and after 12:30 PM IST application is too slow during that hours we also have UAT users logging in and using the application from the same box. Tried to convince client/requested client to share a separate environment for PT. Scripts fail and we have to do much of alterations in the script. We have also tried with the recent patch updates from Loadrunner We have also tried editing the ICA file changing the twi mode from on to off.

Leave a Reply

Your email address will not be published. Required fields are marked *