loadrunner Hi folks, I need to validate the script for...

  • perf-test.com need your contributions to build up a strong repository of performance engineering resources.

J

Jaan KC

Guest
Hi folks, I need to validate the script for the complete flow. In my business process, Graph i.e. Flash content will be displayed as the final outcome. My job is to validate script such that graphs should be displayed in Run Time Viewer. We cannot use image check function as it s not static content rather flash. NOTE: I don't have Flex protocol license for my project but somehow i should confirm that graphs are displayed properly. please help me out at this.
 
If you are able to generate a load without Flex (i.e. with HTTP), I would suggest using a small number of GUI Virtual Users to validate the functionality of the graphs during the test.
 
GUI Virtual Users are recorded in HP Unified Functional Testing (aka QTP), and executed during the performance test in LoadRunner. Each GUI VUser needs to run on a separate physical or virtual desktop.
 
But we don't have support from QTP to record GUI virtual users. Any other solution can you suggest ? :please accept my friend request :
 
When you say "graphs are displayed properly" do you mean that you validate content therein or that you validate that they are downloaded to the browser?
 
Sorry Jaan, I keep my FB friends and work associations separate. You can connect with me on LinkedIn. Regarding the licenses, I can't help you there. LoadRunner provides the tools to generate load at many levels; Transport, API, or GUI. You can even custom code a solution in Java, C, .NET, but there is a cost associated with every path, either in licenses or time invested. The choice is yours. What I would suggest, is a trial of the GUI VUser approach. If it works for you, your company might decide to purchase 1 or 2 licenses. They aren't expensive.
 
The graphs must download to the browser , I mean those must display in Rum Time Viewer when i run that script. But they are not displaying in Run time viewer though the script is passing fine.
 
Keep in mind the Runtime Viewer is looking at a snapshot of the HTML. If anything on the page connects to the application, i.e. graphs, they won't appear. This includes JavaScript, Flash/Flex, ActiveX, Silverlight, etc... The snapshot viewer is a representation of the page, not the page itself. If you need to validate content, it should be done during the test and in a programmatic way.
 
Yes as you say Shane Evans . I have enabled javascript,Flash,ActiveX and all other options to see the contents of Run Time viewer. Sometimes it is showing graphs for some runs and not showing for some in vugen. More over, those graphs are taking time to load in Runtime viewer and even in browser. That particular custom request is executing fine each time where that graphs should be displayed but showing as 'Still Loading'. I implemented a logic there to hit server with same request until graphs are displayed in programmatic way. You have any other suggestion to solve this problem.
 
My concern was the same as what Shane said. You should not rely on runtime viewer as means to validate content. It is a debugging tool. Nothing more. If actual screen content is what you need to validate you may want to use RDP or Citrix protocols. They allow actual hash map verification which I have found useful for confirmation of images. These are done at the GUI layer so you have some ability to see how long rendering takes. Keep in mind that Citrix license is not part of LR.
 
Yes i do agree with but we dont have RDP and Citrix license . As what shane explained , we can validate then using GUI vuser but that needs QTP support as neither don't we have. I validated the same in a programmatic way . Other than this, can we validate the content in some other way ?
 
Other than validating that data for the graph has returned using HTTP codes, I don't have any other ideas. We gave you three valid ideas but if you can't utilize them I'm not sure what else you can do.
 
The run time viewer is not a full browser and does not support browser extensions to display not html data, such as flash, PDF, office files, etc.... This is where a command of client architecture is key. Per Shane and others, if you must validate at the client edge with the execution of flash in the browser then you will need something that can actually validate that content type. You are looking at QTP based GUI virtual users. If you simply need to validate that it loads and displays, minus content validation, then you have citric and rdp options. If you simply need to validate download, then a straight http virtual user will work ( see download size validation )
 
Just a thought, will it report in the event viewer (providing you're testing on Windows boxes) if the Flash image doesn't display? If so, maybe you could perform the validations against that?
 
An http transport level virtual user doesn't display. That is why each virtual user doesn't have the same resource cost as a full browser instance
 
for(i=0;i0) break; } If you can observe the above code, graphs will be displayed at that particular request. I validated the flash graphs by taking the unique content check from that graph . I embedded that request in a loop since graphs are taking more time to display. I made to hit the same request repeatedly to the server until it displays graphs(flash content.)
 
Jaan, You are overloading your requests. There are a couple of items in play here. Don't confuse time to download with time to display. These are two different items. Also, when you look at web browser checking on whether a report is available this generally happens on a periodic basis, say once every five seconds or ten seconds until the report is available. Under load it will definitely increase. Consider altering your loop structure to have a repeat-until or do-while structure with an exist on success of your web_reg_find() or until some number of cycles/seconds have elapsed. lr_get_transaction_duration() may be useful to you if you a re tracking an open transaction. Also, observe your recording very carefully for the amount of time between requests for this item. You should see in your script a defined periodic request, followed by a think time followed by a request. Make note of the think times in between. Most developers will use five or ten seconds as a default between checks to see if content is available. sleep() is the appropriate function here since this really isn't think time but a developer defined interval between requests. Also, you don't want your delays subject to your think time variability settings Simply pounding the snot out of your server for sixty successive requests with no delays is only going to exacerbate any performance issues as this becomes a model violation for client-server which is built upon a delay model between requests during which the resources released on client A can be used to service the requests for client B, C, D, ...