Have something to ask??
Found a post interesting but want more info?
Want to suggest a topic??
Fells like discussing a subject further?
Have something to share??
Want to check if I can help you with a problem?

You came to the right place!!

Ask your question or leave your thoughts on the comments section.

I just installed a new Q&A engine that I hope will make the whole process of submitting and discussing questions more simple and pleasing!

Just go to ask.martinspier.co.uk and submit your question!

If by any chance you are having issues with it, let me know! E-mail me at spiermar@gmail.com

Update: I got less traction in the Q&A engine than I was expecting. My guess is that it was partially related to the login constraint. Even knowing that you can use your Google account to login, I think most users don’t like the idea of signing up to yet another website, just to ask a question. Because of that, I shut down the engine and I’m going back to the old model, using this page’s comment section. Feel free to ask!!!

172 thoughts on “Ask Me Anything!

  1. Hi Martin,

    I’m so glad I happened to come across your blog here.
    I’m currently testing LR 12.53 with Oracle EBS R12.2.5 and found lots of issues in playing recorded script.
    Unlike previous version of Oracle EBS ( 11i or R12.0.x or R12.1.x) Oracle deployed Weblogic server in R12.2.5 where the issues with LR started.
    I’m wondering if you are still available through this blog to help out others.

    Looking forward to your update

    Cheers,

    Jason

  2. Hi,

    How to benchmark video-streaming capacity of my server, provided the files are in MP4 format

    • It really depends on how you are delivering this file to the clients. If it’s just plain HTTP streaming, it’s simple, just download the files in parallel. If it’s something else, like RTMP, then it’s a different story and you will need a load agent that support the protocol. You mentioned capacity, so probably start with 1 file at a time, increase that to 2 and so on, until you start re-buffering. Having said all of that, HTTP streaming is very simple and the likelihood that your limiting resource is either network or disk IO is very high, and you can calculate that without the need for a test.

  3. I need Usecase diagrams for Load testing process ?

  4. Hi Martín,

    I have an issue, In my script I’m trying to import a file with HTTP/HTML Protocol. The thing is that when I am about to complete this task at the end of the steps it shows a progress bar (on manual validation) but when replaying my script (until reaching said progress bar) the request that corresponds to the progress bar step gets stuck. I reviewed and the correlated value I’m sending is correct but It seems that it is not working. This transaction fails due to timeout but this happens because the transaction, as I mentioned, gets stuck.

    Have you previously faced this issue? Any suggestion?
    By the way, the application contains JSON.

    For this task I’m using LoadRunner 11.52

    Thanks and Regards,

    • It’s hard to tell without more information, like the step that it gets stick. Uploaders with progress bars might be implemented with Flash. Is that your case? If it is, HTTP/HTML protocol will not be enough, you will have to include Flex, which is a pain usually.

  5. Hi Martin,

    I have written a batch file which will invoke a Html Web form, which is used by end users for providing their details(and their details will be passed to script in text files).
    My issue is now I am trying to invoke batch file in Vugen script using System().
    Now I want script to pause until User fills the details in Web form???

    • Hi Cheran,
      I’m not sure if I understood you question correctly. When you say “batch file” you mean a Windows shell script (.bat, .cmd)? What is this script doing? Invoking a HTML form? I’m not sure what that means. Can you paste the contents of this file?
      When you say “pause until user fills the details”, the user in this case is the script? Or a real user?
      If it’s a real user, you’re doing this wrong.
      If it’s another script, you will have to use an external queue mechanism to do that.
      If it’s the same script and you’re having problems because the system() command doesn’t block, I suggest using pipes instead. Stuart Moncrieff wrote a nice blog post about it a while ago.

      http://www.myloadtest.com/dos-commands-from-loadrunner/

      Cheers,
      Martin

  6. Hi Martin ,

    My script contain 7 transactions and i wish to execute only 5 transactions. is it possible ? if yes, How ?

    Regards,
    V Tonne

  7. Hi Martin,

    EX. 24/08/1986abcd456386712@#$%765bjfdkd18/11/2015 .

    in above example 24/08/1986 (LB) and 18/11/2015(RB) are dynamic values , how will you correlate ?

    • LR’s correlation functions are really simplistic. They assume you have fixed boundaries and want whatever is in the middle. That works really well for markup language tags, but not great for other things. In cases like this, you have a string (you can call it a literal array) and the power of C, so a regular expression would be the simplest solution in this case. If you want an ugly solution, you could always chop the first 10 and last 10 chars on the string too, which is super simple in C, assuming the dates will always have two digits.

  8. Hi,
    In the analysis report, i am getting 90th percentile values greater than average response time values. What can be the reason for this? In this case, what should be considered; 90th percentile values or Average values?

    • That is expected. P90 is usually above average, unless your response time has a really weird distribution. I would suggest reviewing some literature on statistics to help you understand the results, but in a nutshell, average is basically the sum divided by the number of samples. If you have normal distribution, it will be close to the median, or 50th percentile. 50th percentile is the value in which 50% of sample values are lower than that, and 50% higher. Consequently, 90th percentile is the value in which 90% of the sample values are lower than that, and 10% higher. Hope this helps. Cheers!

  9. Hi,

    i have 3 scripts, all scripts are running fine in vugen but while running in controller it won’t!!!!!!!!!

    • Running on vugen will not guarantee a successful execution on the controller. Remember these are completely different environments. It’s the same as saying that an application runs fine in the dev environment, thus, it will run fine in production. We all know this is not true. You should check the logs and debug the execution. This should give you a hint about what’s wrong in the controller.

  10. Hi,

    what are the measure difference between web(click and script) and ajax(click and script).

    • I think you’re referring to web http/html and click&script. Not sure what you mean by measure difference, but there’s definitely a difference on transaction times. c&s will include client side processing time (js execution, etc), while http/html will not. Having said that, using c&s protocol is not advisable anymore. For client execution, truclient is preferable.

  11. Hi,

    I am conducting test with 100 users, in between two users got stoped, while reporting to client i should report only 98 users but report includes 100 users, if i want to send 98 users what i have to do.

    • The vusers started, so they will be part of the report even if they didn’t finish. This is expected since the count in for failures and errors. Having said that, if I recall this correctly, you can filter out vusers on Analysis before generating the report.

  12. Hello Martin,

    I’m using Jmeter version 2.13 for performance testing.
    Into HTTP requests samplers I put the Implementation HTTPClient4.
    I run same tests for a web application on two different test environments, which should be identical (but one from Rackspace and one from Amazon).

    Tests are working fine on Rackspace with HTTPClient4 implementation but working on Amazon only with HTTPClient 3.1 implementation.
    Difference between the version of the Http/Web server on Amazon and Rackspace is: 2.2 on RS and 2.4 on AWS.

    Any thoughts why HTTPClient4 implementation is not working for AWS environment ?

    Thank you.

    • Thats very strange. I’ve been using httpclient 4 with AWS for a long time. 3 was deprecated a long time ago. I think the key is in the part where you mention that the environments “should” be identical. Nothing comes to mind at this point around that underlying EC2 architecture that would prevent http4 to work.
      I’m curious about the responses you’re getting back on the client? Failing to reach the server? Specific HTTP response?
      Cheers,
      Martin

  13. Hi Martin, how are you?

    We need your tips on how to enter in china, at the Mongol Rally.
    How did you fixed the chinese drive license ?
    How much cost the guide?
    Any other tips in China?

    Best
    doc

  14. Hi Martin,

    Is there any way to run single simulation automatically using bat file?
    Could you please help me ASAP ?

    Thanks & Regards,
    Swati

    • Yes, is possible. A CLI tool is included with LoadRunner. Wlrun.exe. Command should look something like this:

      Wlrun.exe -Run -TestPath scenario.lrs -ResultName res_directory -InvokeAnalysis

  15. Hi Martin,

    While recording my scenario for one download zip scenario, “Clear”, “Save & Close” button are disappearing.
    Could please help me for this scenario how to save that scenario.

    Thanks & Regards,
    Swati

    • It really depends on the protocol you’re using and the application logic. Assuming it’s a UI-based protocol, you should check the application logic. Does it work outside of LoadRunner? If it doesn’t, it’s not a problem with your script, but logic you are trying to implement. If it’s the script not doing exactly what it should be doing, I would probably start by checking UI elements you are trying to use and the script steps one by one to see where it starts to deviate from what it should be doing. It’s a very generic advice, but without more context, not much I can do.

      Cheers,
      Martin

  16. Hi Martin,

    I want to test a web service using XML files. I tried with web service protocol as well as web Http/Html protocol in LR. But I am getting error as ‘failed to connect “xxxx” connection timeout’ while replay the script. I tried to increase the connect timeout and receive timeout also. What could be the issue? It might be issue with the XML files?

    • Hi Sugitha,
      Both protocols should work just fine. The fact that you are receiving a “connection timeout” message means that is probably not related to the request payload (XML, unless is huge), but the inability to reach the server. Can you issue requests to the server outside of LR? Can you try issuing a request without the XML payload? You should at least get a 4xx or 5xx error. If not, it’s probably a connectivity issue. The server might be down, hostname wrong, wrong port, firewall, etc. My approach is usually to use another client to try the requests before creating the script and if problems like this arise, use a network analyzer like Wireshark to figure out what’s wrong.

      Cheers,
      Martin

    • Hi Martin,

      Citrix Protocol Recording in Loadrunner – What can be considered as a complete transaction?

      How do I include the synchronization statements with in the transactions along with the keystrokes so that i could able to make the transaction complete and measure the response times accurately. Please let me know what are the possible sync statements that can be used.

      • Long time since I worked with Citrix, but my strategy was always based around complete user actions. Since keystrokes and mouse gestures trigger actions in the application, and the result of those actions should show up somewhere in the screen once the action is complete, my strategy was always to use method that compares images (forgot the name now) to “know” once an action is complete and then, finish the traction. Hope it helps!
        Cheers,
        Martin

  17. Hi,

    I am working on a VUser script in Citrix+HTTP/HTML protocol. How can we capture the dynamic values in this protocol?
    Actually in the script, one window appear with user name on it, different Vusers will have different names, how to fix this issue?

    Thanks

  18. Hi Martin,

    can u explain multiple requests are recorded for single user action in load runner(Scenario : Login, do_1,do_2 )

    • Assuming you are talking about web pages, user actions can generate multiple requests (and usually do these days). It was never a 1:1 relation. You have redirects, page resources, async requests via JavaScript,etc. All will generate multiple HTTP request. LoadRunner will record all of them. It’s up to you to find out what’s relevant or not.

      Cheers,
      Martin

  19. Hi Martin.

    I am working with transients analysis of computing systems applied to performance. For example, when there exists changes in load and the systems are large in scale, may the relationship cause-effect appears after a delay as well as the magnitude and the shape are different from those in steady state.

    Is this transient behavior relevant in your work?

    Thank you.
    – Lourenco.

  20. Hey Martin,

    It was a really nice post.

    I am load testing TIBCO EMS using Jmeter,I have implemented a java request sampler which reads the xml request, do some string replacements(which I have parameterized through CSV) and then publish it to a topic. One of the requirements of the test is to set properties JMSXGroup and JMSXGroupSeq with each xml request I send, for this I want to set the parameter(which i am using through CSV file) “accountid” to JMSXGroup and the number of times this has been used during the test to be set in JMSXGroupSeq. Can you suggest how should I do this.

    Cheers.

    Akshay

    • Hi Akshay,
      I’m not a big fan of string replacement, so what I usually do is actually parse the response, and with that data, create the XML for the new request. I don’t really do XML that much these days (in favor of JSON), but JAXB (https://jaxb.java.net/) is usually a good option.

  21. Hi Martin,

    We are trying to record an oracle application with Load runner 12 and we are unble to record orcale forms part. During recording Load runner is not able to launch the oracle applet form.

    we have enabled the socket leve port mapping and added an new entry and update the Target server and port number also.

    Below are the application and tool verions that we are with.

    Vugen Vesion: 12.02
    Java Plug-in 11.25.2.18
    Using JRE version 1.8.0_25-b18 Java HotSpot(TM) Client VM
    Oracle Forms Applet version is : 10.1.2.3

  22. HI Martin, great blog. I am facing a Loadrunner (12.0.1) connectivity issue with Oracle Apps 12.2.4. I have tried the correlation variables a few different ways, but I can’t seen to get the past the web_url(“frmservlet….. call. It appears that I have extracted the icx_ticket properly, but I am not convinced because there is a period (is that binary data?) in front of icx_ticket that my web_reg_save_param is not picking up.

    The frmservlet call returns a URL Validation Failed message, so that is preventing me from extracting the JsessionFormsID. Appreciate any help.

    Regards,
    Daren

    • Hey Daren, as I mentioned on Twitter, not much experience with 12.2. It’s been a while since I’ve touched Oracle apps, but I can definitely put you in touch with someone.

      Cheers,
      Martin

  23. Hi
    I am using the tool Gatling 2.0.1 for the first time. I recorded a sample script using recorder. Can any one guide me how to do parameterization in this tool.
    Regards
    Nina

    • Hi Nina,
      I really like Gatling, but it’s still pretty young tool. When you say parameterization, what exactly do you have in mind? Parameters from the command line? Parameters from a data file? Or correlation, from previous responses? For data files you can check “http://gatling.io/docs/2.0.0-RC2/advanced_tutorial.html”, Step 03. For CLI parameters, you can check “http://gatling.io/docs/2.0.0-RC2/cookbook/passing_parameters.html”. For correlation, you can probably use the saveAs function:

      http(“transaction”)
      .get(URL)
      .check(header(“token”).saveAs(“token”)

      Cheers,
      Martin

  24. Hi Martin,

    We are load testing an Oracle EBS Applications (Oracle App Ver : 11.5.10.2) using load runner (LR version – 11.50), with Java Version on system – 1.7_67
    and RDBMS Ver : 11.2.0.4.0
    Our Issue:
    As part of our scripting -the scenario part, opening the web pages until the forms appears is captured by the LR scripts (through Web (HTTP/HTML) protocol). But the next step of accessing the internal Oracle forms and onwards, though can be seen in the browser (while recording) but none of the events get recorded (by Oracle NCA protocol).
    It seems Oracle NCA protocol is not able to capture the traffic in oracle forms.
    Please suggest: How can we access the Oracle forms and script for PT Oracle Web forms (as part of Oracle EBS application) through Load Runner (Oracle NCA + Web HTTP/HTML protocol). What steps should we follow?

  25. Nicolas Tallineau

    Hi Martin,

    I came across your site because you left an interesting comment on an issue of the Gatling project on Github. You wrote: “I have very heterogeneous use cases. From simple performance regression tests that are executed from a Jenkins node to eventual large-ish stress tests that run with over 100K requests per second and > 100 load generators.”

    I am having trouble getting the number of requests per second I want for a load test using Gatling 2 (I apparently can’t get more than 5000-5500…), and I’d like to know if you could help me find what’s wrong with my scenario or give some advice.

    Thanks,

    Nicolas

    • Hey Nicolas,
      True, after working around a few limitations I managed to scale tests to interesting loads. I’m still quite new to Gatling and most of my experience with high concurrency is using JMeter, although I expect to use Gatling more and more in the future.
      I can definitely try to help out. Gatling’s architecture is different form JMeter’s, but the high concurrency problems are the same. So what are the specs for your load generator cluster? How many nodes are you using? How is the resource utilization per Gatling node? What’s your average response time? ;-)

      -Martin

  26. Hi Martin,

    We are we so obsessed about 90 percentile. Why not 85 percentile or 95. Don’t say it is just a popular metric in use. I believe there should be some better reason for that

    • Hi Prabhakaran,
      I agree! And I don’t think there is one metric that will fit all sets of data. That’s why I like to use multiple metrics, and percentiles for that matter, to get a true view of data set. I have to admit, 90th is usually my starting point, along with averages and std. dev., mostly because that’s where I’ve seen better general results (more issues found, less false positives) when automatically analyzing data sets. I think your metrics should reflect your data set and if possible, you should always try different options. I’m a big fan of distribution and scatter charts, and usually take advantage of them too, besides other things.
      What tools/metrics do you like to use when analyzing data sets?

  27. Hi Martin,

    Good day to you. Trying to record script in LR 11.0 for Oracle Forms app 11.2.0.1 through multiprotocol options – web HTTP/HTML and Oracle NCA- events are getting generated properly, but I am unable to generate scripts successfully. Script generation shows “Vugen has encountered a problem and needs to close. we are sorry for the inconvenience. Details – vugen.exe caused an EXCEPTION_ACCESS_VIOLATION in module MSVCR80.dll at 001B:7814508E, memcpy()+0222 byte(s)”. To add further it is Oracle app accessed through browser – using IE and also I haven’t changed any of the recording options, recording with default options. Could you please throw some lights on reasons for issue, and what all has to be looked into to resolve this issue
    Thaks in Advance!!

    • Hi Umesh,
      This is really interesting. MSVCR80.dll is a Microsoft C runtime library and looks like it’s trying write where it shouldn’t (memcpy). If you have custom code (not generated by the recorder) on your script, check your memory operations. If it’s just code generated by the recorder, you should get in touch with HP support, since this should not happen at all and they might have a patch for it already.

  28. Unable to record Citrix ICA Protocol using VUGEN , on Windows 7 machine

  29. Hi Martin,

    Just found your site from Alex Podelko’s blog.
    I have been asking a question to myself and other experts, so far I have not got a clean answer on it yet. The question is “What are the quality aspects of performance testing itself”? Can you please shed some lights on it from your expert’s view?

    Thanks,
    Ben

    • Hi Ben,
      Glad you found the blog. Alex’s post had a good traction. Let me make sure I understood the question correctly. Are you interested in what I believe makes a “good performance test” or the quality aspects of a target system I’m looking for while testing?

      -Martin

      • Hi Martin,

        Thanks for your quick reply!

        The question I really meant was that the performance testing practices are to check the quality aspects of software applications. Who can tell me what the quality aspects of performance testing itself are? So we can make sure that performance testing is done right for all engaged projects. Or how do we measure the quality of performance testing itself in addition to nice looking performance test results and charts?

        Thanks,
        Ben

      • Like all great questions, there is no single right answer, like there is no single right way of testing. I believe it all boils down to what do you want to achieve with the tests and more importantly, what are your (and other stakeholders) expectations regarding the system being tested.
        Let’s take the CI Performance Tests as an example. Let’s assume your expectation is that there is no performance regression (response time, resource utilization, throughput, etc) build over build. Like every other test, you will make concessions, like using an environment that is not production, exercising only a subset of features, environment variability during the test, etc. And having all of that in mind, you will design and execute your tests and at the end, your expectation is that it will tell you, with a certain level of confidence, if there’s performance regression on this new build or not.
        How I define a good test (or test methodology) is how many false positives/negatives it generates. Going back to our example, that translates to, if my test told me there is no performance regression, and once the build is deployed to production, regression is found, it means the test failed. Same goes for false positives, were regression is found during tests and in reality, there is no regression. It’s Ok for it to happen from time to time, but if it happens more often than you would like, it means your test, or test methodology quality is not great.
        Like any other aspect of a project, you need to balance quality, cost and time. A test is no good if it took too long to give you an answer and was not cost effective, even if catches all possible problems. As I mentioned, I all boils down to what you expect to achieve with the tests. That’s why CI test are quite attractive. They are hardly comprehensive, but they are quick and cheap and if used correctly, can provide some good information.
        As for how to effectively improve the quality of your tests, that’s a whole new post. :-)
        Hope this helps and let me know of your thoughts! That’s also a great subject for a future post!
        Cheers,
        -Martin

      • I put my comments here since I did find another reply at the end of your last answer. Sorry for the confusion.

        Hi Matin,

        We are on same page as far as quality of performance testing goes. Totally agreed with you on defining a good test to be “how many false positives/negatives it generates”. Or it can translate to how the test is close to prod in the sense of 1) key scenarios and significant scenarios, 2) the mix or distributions of those scenarios. The less false positives/negatives are the better the quality is. Performance testing is different from functional testing that there is no success/fail indicators right way. That makes the performance engineer’s job much easy or much hard. I was looking for a way to evaluate the quality of performance testing for us to provide accurate feedback to projects, not just nice looking reports and charts. We do not want to see many false performance regressions later in prod, right? I believe you have used models to drive your performance testing. Would the accuracy of models be one good quality measurement for performance testing? Let us talk about how to get there later. I think that the more or less of your false positives/negatives would come from your models. I knew that we, performance engineers, have been spending much time to build workload models first for performance testing as many best practices taught us. But how do we measure the accuracy of workload models, especially in quantitative way? not very clear. Do you have some thoughts on this?

        Thanks,
        Ben

      • I like the idea of tracking the overall quality of my methodology and testing efforts, focusing less on a specific project, and for that, false positives/negatives should work really well. Having that said, I can see the appeal of quality indicators that are project specific, specially in companies that “appreciate” this sort of performance tracking.
        I think the workload model is one of many factors that will affect your test quality, an important one, but not the only one. Tracking workload accuracy might be the performance equivalent of Test Coverage in functional testing. How to measure the accuracy in a quantitative way, I think there are several ways of doing it, depending on the level of detail you are looking for. From the top of my head, if I had to implement such mechanism, I would probably go with the statistical difference between the incoming rate distributions of the actual behavior I want to simulate and the one generated by my test.
        In a real world scenario, like HTTP requests to a web server, I would probably find the behavior I want to simulate in production, get the logs for that specific time frame, break requests by type and generate statistics for that. After that, execute the test and collect the same metrics, comparing statistics at the end. The closer they are, the better your workload model should be. You can also get a bit more fancy and plot both time series and calculate delta area for each request type. The larger the area, the less accurate is your model.
        We just need to keep in mind that we don’t need a perfect model in order to have a great test, and the opposite is true too, a great workload doesn’t guarantee a great test. I also believe that after certain point, improvements to the workload model start to add less and less to the overall test quality.
        What are your thoughts? How would you implement it?

        Cheers,
        Martin

      • I take my comments of “I put my comments……” in my previous reply back. The comments do go to the end of thread.

  30. Hi Martin,

    In our company we have a requirement to do the performance test on citrix servers and desktop client. This is something new to me as I worked with various tools like jmeter,neoload,loadrunner. My client is not interested in investing loadrunner so can you please suggest a suitable tool to record the client actions, do the load test for citrix servers. It would be great help if you can provide the suitable tool and relavant informnation

  31. I am trying to record the script in Vugen8.1 & 11.0 for a client sofware(combination of client-server application and web application…..
    Front end is .NET and database is oracle 11g).When logging in,I use an URL(https://….) to connect to the particular environment along with userid and password.It is not working with windows socket protocol(showing SSL currently not supported).I recorded the script using multiple protocol i.e.,WebServices and Web(HTTP/HTML).I replayed it several times…But the applicaton team is not able to find that i have logged in at that time stamp.so it is also not working.

    Can anyone please suggest me which protocol i have to use to record the script….which works perfectly.. :)

  32. Hi ,
    I am working on vugen 9.5 and try to record a web site through http protocol.
    Application is working manually on some machines and not all.
    I have found some observation,
    When I try to replay the script, the script failed in the login, so I logged into the application manually and did logout for the same user.

    I ran the script again and found that it was able to login through script.

    Please advise.

    • From what you are describing, it looks like your application limits the number of sessions per account. So at any time, only one session can be open with a specific account. That can explain why the script worked when you logged off. In cases like that, you will probably need a set of user accounts to support your concurrent test and make sure your login transaction is on init, not the main action, and logout on end, so they are only executed once, at the beginning and end respectively.

      -Martin

  33. I am trying to create a batch file to start the recording a java record replay script from Oracle 11 protocol on LoadRunner 13.2.4 of the E-Business suite. It is executed via StartWebLogic.sh. via Single-signon from microsoft.

  34. hi,

    Working on Vugen Webservice Protocol, I have a situation where I submit a input request and response has XML has a PDF file embedded in the Acsii format , The data between /pdf> nodes is unreadable, rest is normal XML and can be parsed using normal methods.
    Question: Is there a way to convert the ascii to PDF file format and store it locally?

    • Hi Sunny,
      This is a tricky one. Plan PDF text is usually ASCII, but images and other elements are binary, so it’s considered a binary file. I wouldn’t recommend converting any data during run time, but you can definitely store the data for later processing. Just copy anything that is between the <pdf> </pdf> delimiters to a variable and then write it to a file. Since you mention that the data is in ASCII, an “fprintf” should work just fine.
      After that, you probably will have to convert the files to binary. There are different ways of doing this and I wouldn’t know what function was used to convert it to ASCII in the first place. The best option would be to check with the developers and reverse it. If that is not an option, there are lots of code examples around and they usually pretty simple, like opening a file in text mode and saving it in binary mode after a casting or specific transformation function. I don’t have any code example right now, but I’m sure you would find something by Googling “convert ascii to binary”. :-)

      Cheers,
      Martin

  35. Hi Martin,

    A simple question about the cache in LR. As far as my understanding goes, a browser’s cache depends on the expiry header info for the page components(like jpeg, css,js etc.) The idea is that the browser receives a 304 Not Modified response if it has the latest version of the file in the cache.

    But when we simulate cache in LR 9.5, VuGen says that “it will not request the server for the resource as it is present in the cache”. The problem here is that, if the cache is enabled, the script hardly sends any of the sub-requests required to load a page.

    This results in reduced (largely reduced) number of HTTP requests (or hits) to the server. Wouldn’t this result in inaccuracy of the results as compared to real-world scenario ?

    The other option is to disable cache. In this case, Vugen(9.52) simply sends each and every request to the server and download every component like a “first time user”. This again is inaccurate.

    So how do we go about emulating the cache correctly to match the real-world scenario in Loadrunner ?

    Thanks !

    • That’s a great question Krupa! In theory, if you designed your script to mimic an average application user and designed your test scenario based on active users on the application, not hits per second or pageviews for example, making sure that you have VUsers starting during the whole execution, like the real load, and run for only the average active time on the application, not the whole execution, then enabling cache would be correct, because your scenario was designed for that. In this case, each VUser would only run for a few minutes, and that’s how long the cache would be valid for.

      The whole problem with this approach is that we hardly do that, because getting this detailed application usage data is really difficult and it would require significantly more VUsers, and consequently, more money on the license. What we usually do instead is to settle for a more simplistic view, like modeling our tests to match a specific pageview load. And then you have the problem with the cache, because your users will run for longer, meaning that the cache would be valid for longer and reducing significantly the load on the application. VUsers are not a great load measure when you design your tests this way, because the final load will depend on a number of factors, like pacing, think time, cache, etc. The best way of thinking about VUsers in these cases is just think of them as simple threads.

      In order do simplify things, what I usually do is to use a minimum pacing and think time and disabling cache, so each VUser would generate as much load as possible and then scale the number of VUsers to match a specific transaction rate, like X searches per second. This approach works great if the average user active time on the application is low, because most users will be new and consequently will have no cache. It’s just an assumption we make to simplify things. Even on the worst case scenario, where users stay for a long time on the application, exercising more of the cache, the overhead of having cache disabled on your tests should not be too great, mainly because most objects that are cached are static, and serving static objects usually does not consume as much resources as dynamic objects on the web layer. Also, it’s better to have more load than less load. :-)

      Bottom line, having cache disabled is an assumption you make to make your life easier. You can try to design your test scenario the other way, but usually the benefit of doing so is so little that it cannot justify the extra work.

      BTW, that’s a great topic for a new post!

      Cheers,
      Martin

  36. Hi Martin, I’ve just installed Apache web server on Windows 7. The Apache web server started without any problems and is running. However, when I enter http://localhots/ in my browser, the index page “It Works” is not found.

    I check the httpd file and the directory path is correct and DocumentRoot is set to DocumentRoot “C:/Apache/htdocs”

    Thanks,
    Noel
    #

    #

    • Do you have the <Directory> entry for your DocumentRoot?


      <Directory "C:/Apache/htdocs">
      Options Indexes FollowSymLinks
      AllowOverride all
      Order allow,deny
      Allow from all
      </Directory>

      Also, make sure you have your html file name on DirectoryIndex:


      <IfModule dir_module>
      DirectoryIndex index.html index.htm index.php
      </IfModule>

      Cheers,
      Martin

  37. Hi Martin,

    I am currently working on a web service script in Load Runner. I have to use the Wsdl file from a local hard drive and also integrate a saml token. This is first attempt at web service protocol. I was wondering if you could lead me through a basic script and I can move forward from there. Thank You in advance.

    Regards,
    Anand

    • Hi Anand,
      I never had to script something that used SAML authentication so I’m not really sure how to proceed in this case. I’m also not sure that the web service protocol would work in this case and maybe you will have to use something more low level, like HTTP.
      Can you create a request with another application and get a valid response?? If yes, I would probably just use the HTTP protocol and record from this application, just to see how the script would look like. After that you can probably clean and change the messages the way you want.
      If you figured out different a way of doing this, let me know. It would be a great topic for a new post!

      Cheers,
      Martin

  38. Hi, I am trying to record a Oracle EBS App, using VUgen 9.5.

    Protocol = Web (HTTP/HTML)
    Steps followed by script.
    1) Login to the EBS portal
    2) Logout. (Wanted to make this works first before I started invoking forms – i.e use NCA as well)

    I have correlated whatever was found in the correlation tab. Also correlated the JSESSION & CMSSYT3 cookies. When I reply it throws an error soon after the login button is clicked (saying You are trying to access a page that is not active). This seems very much like a session issue but not sure where else to look out for? Spent almost a day and half with this issue.

    Please could you help?

  39. If we consider a parameter (V) and i will assign it three values.Now , if we consider three ACTIONS or TRANSACTIONS .Now , i want a c scripting code in such a way that with out using any if , while , for , i want logic in such a way that
    FOR EXAMPLE : if i assign V=10 , then script 2 should execute
    if i assign V=20 , then script 1 should execute

    if i assign V=30 , then script 3 should execute

    • Hi Narenda,
      If I understood this right, you are looking for conditional execution in form of a switch/case, but at a script level. On LoadRunner you don’t have scripting at the scenario level, which contains scripts. What you have is scripting at the script level, which contains actions. What you can do in this case is instead of having separate scripts, have separate actions within the same script. Once you have all your actions ready and want to control the execution by a variable, first remove all actions from Run-time Settings > Run Logic, leaving only one main action to be executed by LoadRunner. This should “force” LoadRunner to exclude your actions from the serial execution. The main action should contain your manual run logic and code should look like this:

      Main()
      {
      int V = 10;
      switch(V) {
      case 10:
      Action_1();
      break;
      case 20:
      Action_2();
      break;
      case 30:
      Action_3();
      break;
      default:
      // Code
      break;
      }
      return 0;
      }

      Hope I was of some help. Feel free to submit another question in case this was not clear.

      Cheers,
      Martin

  40. Hi Martin

    Sure will wait for your blog in some time on best practices for correlation. Thanks for your response. :)

    Thanks
    Karthik

  41. Hi Martin

    Can you provide me a doc/link that will give a good knowledge about correlation techniques?

    Thanks
    Karthik

    • Hi Karthik,
      So, there is no magic with correlation. Each application will be different and there is no bulletproof method of getting it right. After some time working with different applications and protocols, things should start to get easier.
      Got your e-mail too. You mentioned Web, Oracle and Citrix. They are very different, no surprise in that. Web should be pretty straight forward, just searching the html response using the boundaries. Oracle should be pretty simple too, just getting the data you need from form fields. Citrix in the other hand, for lack of a better word, it’s a pain in the ***. Keep in mind that the Citrix responses are just images, so the only thing you can do is compare the returned image to something you are expecting. My suggesting in this case, when you need to correlate requests on Citrix, is just don’t. The time you will spend scripting will hardly pay off. For a few tests, there are a few alternatives to a real load test that can give you some pretty good results. One of the alternatives is described in one of my posts, http://martinspier.co.uk/how-to-evaluate-the-response-time-of-a-citrix-application.
      I don’t have any documentation on correlating other protocols, but I’ve been wanting to write a post about best practices when correlating web applications. Keep an eye on the blog because I’m hoping to have this post ready soon.

      Cheers,
      Martin

  42. Hi Martin,

    I posted the comment under your Blog Page titled” How to Change Timeout in LR” However I guess this should be the right place to post the Question.

    I am using web_set_timeout of 10 sec, however I have a requirement to continue even if the response does not comeback in 10 sec. Tried using lr_continue_on_error() but script fails if the step exceeds 10 sec. what is the best way to continue even if the timeout step fails??

    • Hi SunnyQuest,
      If I understood this correctly, you want to fail the step, but continue to execute the script, right? One option would be to just change the run-time settings to Continue on Error. That would affect the whole script. If you just want to enable this for one or more requests, lr_continue_on_error should have worked. Here is what I usually do:

      lr_continue_on_error (1); //enabling continue on error
      web_url(...);
      lr_continue_on_error(0); //disabling continue on error

      Note that an error will still be thrown, but the script should continue to execute, unless there are dependencies.

      If you don’t want an error to be thrown, you can increase the response time before the request and revert it back after the request. Code example can be found here.

      Cheers,
      Martin

  43. hi Martin,
    I have an issue recording an mozilla firefox with loadrunner9.52
    Application is only compatible with firefox 9+ versions.
    iam not able to record anything above firefox3+ versions.
    can you help me recording application in firefox 11 version without crashing the vugen?

  44. HI Martin,

    Plz help me to calculate pacing for my load test.Details as follows, No of Vuser=11,Transaction per hour=16, Time to complete 1 iteration by script=15 minutes, No of transactions in script=32. Kindly guide me with the details and also answer what is significance of No of transactions in pacing calculation.
    Thanks & Regards,
    Gaurav

    • Hi Gaurav,
      In your case, you’re looking for around 1.455 transactions per vuser, per hour. With a 3600 second pacing, you will get 1 transaction per hour, per vuser. Just divide 3600 by the number of transactions you want per hour and this should be your pacing. In this case 3600/1.455 = 2474 seconds, roughly around 41 minutes. Since your script runs in 15 min, it should be OK to use this as fixed pacing. Fixed pacing does not depend on how much time the script takes to run, it just starts an iteration after X seconds. If the previous iteration is still running, it will wait for it to finish, but I don’t think this should be a concern for you, since you have around 26 min slack.

      Cheers,
      Martin

  45. Oi Martin, sou professor e uma das minhas classes e em Web Services em Java usando Netbeans.
    Gostaria de saber se foi voce que pos no youtube in video sobre com consumir web services?
    Se voce e o autor e como o video esta sem som e imagem ruim poderia passar o codigo para mim?
    Obrigado
    Marcos

    • Ola Marcos,
      Sim, o video foi enviado por mim e realmente a qualidade e’ pessima. Pretendo gravar uma nova versao assim que possivel.
      Vou procurar o codigo e posso lhe enviar via e-mail. O script do video e’ especifico para LoadRunner, mas tambem tenho uma versao para JMeter, caso interesse.

      Abraco,
      Martin

  46. Thank you Martin.
    First of all, I think I should clarify my purpose. I am going to design a full workshop project management course with my mentor, somebody like VARGAS! So I have to conduct benchmarks to do my best.
    And more question…
    1- Did you give any hand out or something like this to follow the training plan? If YES can you tell me more about these documents?
    2- Did they apply some video or MP3 and so on files during this workshop?
    3- Do you think one day workshop is enough for beginning? If not what’s your idea ?
    4- What’s your suggestion about a couple hands on work shops?

    kind regards, mahboobeh

  47. Hi Martin
    I’m a system expert who works on power plant projects and as you , with a great interest in project management. last year I get my RMP- PMI and IPMA level D degrees.
    After these courses and intersteing studies I started to deal with project management training courses. Every course that i have partcipated are in passive maner, you know? I’m searching on active project management course. I heard about PMDOME workshop and saw a very short demo on YOUTUB. I read about this in RICARDO VARGAS website.
    have you ever been in this workshop? what’s happend? can you help me to develop my idea ? what are the pros and cons ?
    Thank you very much.

    • Hi Mahboobe,
      I took the PMDOME workshop a while ago and all I can say is that is really good. It’s a beginners workshop, but it’s completely hands on. You go from planning to delivering the project in 1 day. As I mentioned, it’s a beginners workshop and it’s short, 1 day. The workshop is not taught only by Ricardo, but others trainers too. The one I took was taught by Jose Finocchio, but I met Ricardo too on a seminar a while ago. Both are great and if you’re beginning, the workshop is worth it.
      If you’re looking for something more advanced, I can also suggest a couple hands on workshops.
      Hope I was of some help.

      Cheers,
      Martin

  48. Do you have any idea on RDP scripting?
    Its very difficult it seems, what is your point of view and any Suggestions ?

    • Hi Anuj,
      Never tested RDP through MS Terminal Services, but since the protocol works pretty much the same way as Citrix, I believe it should be a pain too.
      My suggestion, if possible, try to avoid testing it directly. I successfully managed to estimate loads and response times from Citrix application based on local tests and network information.

      Cheers,
      Martin

  49. Thank you So much, This worked.

    1 more request…

    1. I am looking for code for LR script to extract number from string “Request Has been submitted with id: 30157237.”

    2. looking for code for Polling for the Request submitted until completed.

  50. Martin,

    I am working on Loadrunner with Oracle Appls 11i,
    for function “nca_lov_retrieve_items(“xxx”,1,17); Can I correlate 17 in the above function or is there any other way to get the numer. As each user would get different number.

    Your help is greately apprriciated

    • Hi Bas,
      It really depends on what you’re trying to do. Normal correlation does not work, since this is not web. If I remember correctly, there is an item you can retrieve with the number of items on the list, but I don’t remember which. If you’re simply trying to get all items in the list, you can just use a very high number, LR will only throw a warning and get all items.

      “If you specify an index for last_item that does not exist, you will receive a warning, and the function retrieves the items until the last available value. This is especially relevant when the number of values in the database changes. For example, suppose you recorded nca_lov_retrieve_items(“Journals”, 1,8) but the database changes, leaving only 7 values in “Journals.” In this case, the function returns a successful result but a warning message is sent.”

      If you’re looking for a specific value, you can always use “nca_lov_find_value”.

      Cheers,
      Martin

  51. Hi martin,

    I am facing one issue i have recoded the citrix based script and replay it, but if try to run this script in controller the user is getting fail.

    Note: i can able to execute the script in the load genaratod

    Thanks in advance

    • Hi Aakash,
      What sort of error?? Citrix scripts are very “sensitive” and break very easily. Sometimes when you’re executing with more than 1 VUser on Controller and start to see errors that you don’t see on VuGen, it usually means that you missed a correlation on the script that is preventing concurrent users. Also, application configs might prevent that, like trying to log on with the same user when Citrix only supports one login per user. Or a user taking the session of a previous user.

      Cheers,
      Martin

  52. Hi,

    I am working as Performance Tester @Infosys technologies India.
    I am scripting a login module where in response is generated through client side javascript.
    Input required for this javascript call are output of one webservise.

    Question is how can I call the javascript(and functions inside it) to calculate response.

    We have javascript files in place.
    Also we have a webpage which has some text fields to provide input and on button click it will invoke javascript ot get responce.’

    And I need to record and replay this flow.

    loadrunner calls the same javascriptlibraries as IB does – response is calculated by client side javascript.
    For this to work, LR must be able toexecute javascript from within the injector boxes.

    If possible please indicate the possible solution

    Best Regards

    • Hi Ankit,
      You have two options. First, implement the javascript functions on your LR script, so it mimics what the javascript code does without a need to interpret it. It might take a significant amount of time to accomplish that, but it’s the “ideal” way and highly recommended if you’re going to use that javascript heaviliy.
      The second option, if you don’t have much time, is using Click&Script. Click&Script differs from from Web/HTTP on the way it manages web requests. HTTP is lower level, so you’re basically sending HTTP messages, no browser involved, so no javascript interpretation. AJAX Click&Script is higher level, so it depends on a “browser”, so it’s browser action based (click here and there) and it has a javascript engine, so it should execute the javascript code in your page. Problem is, it’s not as stable as HTTP (had lots of issues with it) and consumes significantly more resources, so you will need more load generators.
      It’s a tough call, but it will all come to the time you have to spend on this.

      Cheers,
      Maritn

  53. Martin, i want to use lower version(9.52) controller with higher version loadgen (lr 11). But i am getting an error message.

    • Hi Jodi,
      There are big changes from LR 9 to 11, and this sort of problems is expected. What protocol are you using? What is the error message?
      I strongly suggest updating the Load Generators to 11 too. Having the exact same version on VUGen,Controller and LoadGen is good practice, since protocols change a lot.

      Cheers,
      Martin

  54. Hey Martin,

    Good News!!! I have solved my Previous issue,(i.e. How can i generate object Name instead of Object Id ?), Thanks a ton Martin!!!, yesterday I have seen ur Blog u have mentioned “How to record the correct field names? ” and it works for me. Now my script is working absolutely fine.

    Thanks Again
    Debasis

  55. HI Martin,

    how can i get Object properties in recorded R12 apps script, used multiple protocol-OracleNCA and HTTP, when i have recorded after form server connection established, its giving me NUMBERs instead of that object property(like if i’ll enter Username and click on FIND button,, script generating some numbers- 2870) , could you plz tell me what i hae to do in my script so that will get object Name not the number.

    Kind Regards,
    Debasis

  56. Hey Martin,

    1st- am using citrix_ICA single protocol, and previously my application supports IE, but now they have modified to Firefox, and I ahve change my default browser to Firefox , but when i tried to record a script , its autometically opening IE. ” I think need unistall IE completely, coz Firefox getting confused”, plz tell me am i right ?

    2nd Question- I have recorded some citrix scripts in LR 11.0 and my controller Vesion is 9.51. I have tried to run these scripts on Controller’s VuGen, but getting error and these script has been correpted, am unable to open up in LR11.0 also.

    Does Higher Version recorded script support Lower version VuGen , is there any solution to open these LR11.0 script on LR 9.51 VuGen? please guide me on this.

    Regards,
    debasis

  57. Thanks a ton for your reply martin.

    How can i record oracle application through FIREFOX in Citrix, weh i tried to launch an app through LR it’ll take by default “internet explorer”, plz guide me on this.

    Thanks,
    Debasis

  58. Hey Martin,

    I have an urgent requirement, How do I Use loadrunner in oracle apps11i/R12 to login multiple user at the same time and select some responsibility? for example…10 user login at the same time and select a responsibility after 10 seconds or so. Is that possible in Load runner? can you pelase provide your response ASAP. any pointers on this would be greatly appreciated.

    • Hi Pradeep,
      That is definitely possible. There are several options in this case, but I would suggest using different scripts for each responsibility and have a different set of users on each script to completely avoid concurrency issues.

      Cheers,
      Martin

  59. I’m quite new to performance testing and I’m doing testing for an application through Citrix. This is the first time we have tried using Citrix and being a newbie I’m a bit clueless at times. I have read your post http://martinspier.co.uk/how-to-evaluate-the-response-time-of-a-citrix-application. I just want to clear it up keystrokes are included inside the transactions until the sync on the next page of the application or should the measurement of transaction start right after the keystroke. Also would there be significant difference in response time when running an application through citrix and running it on a local machine?

    • Hi Stanley,
      The placement of your transaction boundaries really depends on you. What do you want to measure? Time to send keystrokes or a specific processing time?
      Usually most people just care about the processing time of a specific action. In this case, including keystrokes inside the transaction wouldn’t be the right move.
      Regarding the response times from Citrix, that would really depend on your architecture. In most cases, yes. Depending on where your Citrix sever is located, response times can be significantly higher.
      Figuring that out should be definitely a part of the performance tests!

      Cheers,
      Martin

  60. Martin,

    While executing Citrix scripts in Controller,

    ‘Error: Unable to create screen snapshot : Failed to retrieve the ICA Client bitmap’ is displayed. This comes upon increasing the no of users.

    Any solutions…?

  61. Hi Martin,

    I am Citrix ICAand web protocol to record the script, when i am trying to run multiple users in the controller 1 is getting passed and the others are failing. I think this is due to session already started and not allowing other users to concurrenly run simultaneously. please help what do i need to do to run multiple users concurrently in controller without failing the scripts.

    • Hi Sam,
      Have you checked if the same Citrix client version is installed on all controllers?
      Another cause could be the settings on the Citrix server. Do you know if they are set to accept multiple connections from the same user?

      If that doesn’t help, send me some more information about the error, like error messages, etc.

      Cheers,
      Martin

  62. Hi martin,

    Now i have sortedout my previous issue,have installed 11.2 client and its working.

    But encountered 1 another issue:
    when i am trying to record a script with single protocol- its saying that ” Fail to get the session from client & failed to get window’s custom resolution, unexpected tex,

    Please tell me how to resolve this issue

    Debasis

    • Hi Debasis,
      Glad to hear that you sorted out the previous problem.
      This is a common problem with the Citrix protocol. What happens is that the resolution used for recording and replaying are different. Try to use a fixed resolution when recording and make sure that the same resolution is used then replaying.

      Cheers,
      Martin

  63. HI Martin,

    does client version 12.1.0.30 not supported in loadrunner 9.5 ?

    Thanks,
    Debasis

    • Hi Debasis,
      It should be. Already used client 12 with LR 9.52 with no major issues.
      Just make sure you’re using the latest patch (LR 9.52), since there is an update related to new Citrix versions.

      Cheers,
      Martin

  64. Hi Martin,

    I am using LR 9.51 and citrix client online plugin – web 12.1.0.30 and server 4.5
    am getting error when i was execute the recorded script (used Multi protocol- http/html,citrix ica and Oracle NCA), error message saying that ” your current version is 12.1.0.30 and need to upgrade 6.30.1060 or higher version ”

    Please tell the link where can i get citrix client 6.30.1060 or higher version to download.

    Thanks,
    Debasis

  65. Hi Martin,

    I’m working with LR9.10 on SharePoint technology. What I m doing is:

    Protocol Used: HTML/HTTP

    1 Open IE, input Citrix Web interface URL, open login page
    2 Input Login username and password
    3 login Citrix Web Interface page successfully
    4 Click IE icon.

    5 Enter the desired URL on new IE window & perform actions.

    Issue: Everything is recorded fine till the Point IE is invoked; further to it all the actions are blank.

    Now I’m using Protocol HTML/HTTP + Citrix ica and performing the same steps.

    The script is recoding some co-ordinates, what I want to know is – Is this the right way to do it? Any pointers over here.

    Also on first replay the script went somewhat fine but after clearing the temp/cache LR was not able to locate *.ica file for the user.

    How to tackle this?

    • Hi Prashant,
      From what you described, what you want to do is to access a Citrix
      server, open IE trough it and access pages/application inside a corp.
      network.

      In this case, you will never be able to use only a Web protocol. Since you’re accessing IE trough Citrix, Citrix protocol must be used along with Web for the Web interface.
      On Citrix, you pretty much send keystrokes and mouse gestures IN and receives back the images that are being processed on the server.
      That’s why LR is only recording coordinates. That is all you will get from Citrix.

      The scripts are not complex, but it is really hard to sync all steps, since the only thing you receive back are images, and images are not easily processed by the script. Depending on your test case, it can take a good few weeks to get a good working script.

      About the problem with the ICA file, if you open it with Notepad or similar app, you can find an auto delete config line. Just change it to No and you should not have problems with that anymore. I also strongly suggest moving the ICA file to the script folder.

      Also, you can find some tips at:
      http://martinspier.co.uk/recording-citrix-scripts-loadrunner

      ps.: I strongly suggest thinking about other options other than executing a LR test against Citrix. Depending on your test goals, you can easily estimate capacity and latency without a test.

      Cheers,
      Martin

  66. Hi Martin,

    If we add same vugen script twice in Controller with same scenario settings does it make any difference in response time ? For ex: I need to run 800 users and I added the script twice in controller by setting 400 users for each script does it make any difference with response time ?

    thanks
    nancy

    • Hi Nancy,
      It shouldn’t matter if you have 1 or 2 groups with the same script. As long as the settings (total vusers, pacing, think time, etc) are the same, the results should be the same.

      Cheers,
      Martin

  67. Hi,

    We do have one shipping industry application. I have define my problem below

    Problem : There is one save button. We have co related almost 20 dynamic value.but Somehow We could not able to success in save button. We have talked to developer and they told us that they have written code in oracle ADF framework.

    I would like to have comment on it. I can send entire script for review even project is on critical stage so we can pay for working script

    do let me know soon

    • Hi Niranjan,
      Is the interface completely web? Does it have any applet, flash or similar part?
      What LoadRunner license do you have? Does it include AJAX Click & Script?

      Send me a copy of your script to spiermar@gmail.com and also let me know what is your due date for this. I can’t guarantee anything, but I’ll see what I can do.

      Cheers,
      Martin

  68. Hi Martin… Do you have any tips on how to script Oracle ADF applications using LoadRunner? I’m able to correlate jsessionid (easy enough) and adfLoop (a little shakey), but not these guys:

    afrWindowId
    adf.ctrl-state
    javax.faces.ViewState

    TIA for any help you can give. –Dave

    • Hey Dave,
      Unfortunately no. Never had the chance to script an application coded in Oracle ADF.
      I’ve found the concept pretty appealing, but the framework is not used on any of my clients. Most of them are trying to migrate to bundle applications and apparently ADF is not widely known yet.
      If you’re still having issues, send me a script sample. I can’t guarantee anything, but I’ll try checking it.

      Cheers,
      Martin

  69. Hi Martin,
    I am new to loadrunner and web service protocol.Do you know where can I get a tutorial on webservices protocol or do yu have any plans to write one in future.

    Thanks,
    Priya

    • Hello Priya,
      I think WebService is one of the easiest protocols to script on LR. Basically a WebService script will have HTTP POSTS with XML messages on the body. There is a protocol specific for that (Web Services) that can help manage the services, importing WSDL, etc.
      I have one post that shows how to import services into a script:

      http://martinspier.co.uk/wsdl-files-create-webservice-scripts

      You can check that as starting point. If you have more specific questions, I can address them on a future post.

      Cheers,
      Martin

  70. Hi Martin,

    Yep . I din’t get any clues about it but saw the same query raised in HP Forum which did not have any replies. Yes . It is a Loadrunner Warning Message.

  71. Hi Martin,
    I have a simple query regarding scripting for web.

    The website I am scripting has lot of links when clicked opens up the URL in new browser.
    Lot of links allow the user to download file in pdf, zip etc

    What is the best method to script and add verification for such website. I have used web_reg_find for text checks . Can you pls suggest the best scripting practice for above business processes

    • Hi Sunny,
      Just to make sure I understood correctly. You want to check if the content on the files are correct, right?
      This is something I usually do, because this is a functional test, which is not usually under Performance Testing scope.

      LoadRunner is a flexible tool, even not being “made” for such tests, this can be made. If this is really necessary, I would suggest to use HTTP/HTML protocol and use web_reg_find to search for a specific string. The important part is that some files that can be downloaded (ZIP, PDF, etc) are not plain text, they are considered binary files, so you will probably have to check the generation log for a specific part of this binary file. Another idea is to implement a function to do MD5 hash check.
      If this file changes from one execution to another, then you will have a large problem, because you can’t know in advance the content of the file in order to check, so you won’t be able to verify that. The only thing you will be able to check is if the file is being downloaded, but not the content, specially without a converter.
      There is always an option to implement a functionality in C to understand that (uncompress a zip or convert a pdf to text), but I think this would be a lot of trouble for a simple test.

      My advise is, don’t do that. Checking the content of a file is not a performance test scope. Functional test should do this prior to performance.

      Cheers,
      Martin

  72. Hi Martin,

    While executing Vugen script (Web HTTP/HTML Protocol), I am getting a Window IE message box, ‘Cannot find ‘file://\Webclient\blank\blank.htm’. Make sure the path or Internet address is correct.’ Clicking on OK is allowing the script to continue. Should I need to have any setting inorder to ignore this message box…? Pls reply.

    • That is strange.. I already noticed other issues with VUGen (request password, etc) that don’t show up on the Controller.
      If the script is running fine on the Controller and the transactions are passing, you should have no problems.

      Cheers,
      Martin

  73. Hi Martin,

    I am working on Microsoft RDP Protocol and I am facing a strange issue. The recorded script works fine sometimes but most of the times i get a Warning “Unsupported PDU Type:28:” which gets piled up in the log for several lines and prevents the script from moving further. It stops only if i stop the script from execution. This prevents me from running the script in performance center for multiple users. Please let me know if u have come across this issue and if there is any solution for this??

    Thanks in Advance
    Vasanth

    • Hi Vasanth,
      Can’t help you with that. This is the first time I heard about this error and which is really strange is that there are no mentions about it on Google.
      Is that a LoadRunner warning message? Or an application warning message?

      Cheers,
      Martin

  74. Hi Martin,

    I am trying to do performance testing by Loadrunner 9.5 on an application via citrix. To get the ICA file, we click a web page link. The ICA file gets downloaded and we can open the session manually. I am using the same ICA file for connection in loadrunner. When I record using vuGen, a window opens with Comments like “Initializing”,”connecting”,”connected” and it disappears.
    I am getting output log like:
    [Citrix Recorder ( c1c: 588)] ctrx_set_connect_opt(“ICAFILE”, “”);
    [Citrix Recorder ( c1c: 588)] Fail to get the session from the clien

    Why does the client session fail? Can you please help me to fix this?

    • Hi Shrikara,
      It’s hard to know since several things could be causing this issue. The first thing I would check is the Citrix version. LoadRunner does not support some newer Citrix versions. I know that there is a patch for that and it can be found on the HP support site. Can’t remember the name of that patch though, but it is a REG file.
      Also, update LR to 9.52, it might help.

      Regards,
      Martin

  75. Hi Martin,

    How can I generate a graph that shows the CPU% of a transaction…?

  76. Martin,

    The information which u gave for Microsoft Terminal Server License – RDP was useful. Thanks.

  77. Hi Martin,

    W.r.t ‘Memory block size (65538) requested for value () exceeds limit of 65535 bytes’, increase in param length is helping us. That error count is reduced but not completely. Will send you the script to your mail id for reviewing that particular webcall.

  78. Martin,

    I have a doubt in LR Microsoft Remote Desktop Protocol.

    I could get the ‘Microsoft Terminal Services Client’ from the drop down of ‘Program to record’ dialog box in my PC but not in another machine. Am I missing anything..? Pls suggest.

    • Balaji,
      Sometimes the applications are not populated on the “program to record” list. You can always try to find the executable. In this case, the TS client is usually under “C:\WINDOWS\system32\mstsc.exe”, and as far as I know, it is standard on most windows installations.

      Regards,
      Martin

  79. Hi Martin,

    The block size is increased and script is working. But is this the complete solution or anything can be tried out…?

  80. Martin,

    Could you pls give me solutions apart from using another Loadgenerators as we have already tested with another. Moreover, the script is not assigned with only 1 load generator.

    • Hi Balaji,
      OK. Assuming that you don’t have issues with the load generator memory. I only see two options:

      Are you using Web (Click & Script) or (HTTP/HTML)? If it is Click & Script, you can try increasing the memory at:
      Runtime Settings > Preferences > Options > Memory Management (in the Controller)

      Although this might be a strange message for this error, if you are using HTTP/HTML, you can try increasing the block size with the “web_set_max_html_param_len” command.

      If still that doesn’t help, I’ll need more information. Need to look at the script.

      Cheers,
      Martin

  81. Hi Martin,

    A portrait is loaded while clicking next in the application(web). While running the script for 600 users, below message is displayed

    Error -27977: Memory block size (65538) requested for value () exceeds limit of 65535 bytes.

    Any solution…?

    • Hi Balaji,
      Depending on how much memory your script consumes, 600 VUsers in one Load Generator might be too much.

      Can you try using another Load Generator? Splitting 300 on each.

      Cheers,
      Martin

  82. Thanks Martin for your suggestions. I am now trying to use PERFMON counters to achieve this. I’ ll also try to check this with any graphs.

  83. Hi,
    I want to get the CPU% for a transaction in LR Citrix script. Pls provide me the solution.

    • Hi Balaji,
      I don’t believe such functionality is implemented on LoadRunner. You can always implement that on a C function, but I don’t think that is the best option since it might consume a lot of time.
      First I would analyze if that is really necessary.
      In case you really need only the CPU % of that specific time, instead of the CPU % of the whole execution, you can drill down on Analysis after the execution. You can collect the start and end times of each transaction execution and use a filter to get the CPU % of that specific time frame.
      I believe Citrix is running on top of Windows, so you are probably using the “Windows Resources” counter on the Controller, right? Just drill down on that counter after the execution. And be sure about why you need this metric only for the specific time frames instead of the whole execution, since it might consume a significant amount of time.

      Cheers,
      Martin

  84. Hi,

    I was trying to capture an URL (XML) using Web Services protocol.

    I followed the steps given in:

    http://martinspier.co.uk/wsdl-files-create-webservice-scripts

    While clicking ‘Import’, an error message is thrown. It tells that ‘C:\Documents and Settings\…..WSDL/Report20100916182806.xml was not found’

    Kindly provide the solution. You can reply to my mail id (balajidatabase@gmail.com)

    • Hi,
      I believe the problem you are having is that the WSLD file URL you are using is not the right one. I say that because it should be a URL, not a local XML file like your error is showing, and usually it ends with ?WSDL.
      Please check this URL and make sure it is something published on a web server, for ex.: “http://yourserver/yourservice/service1.asmx?WSDL”

      Cheers,
      Martin

  85. Hi :

    I am trying to record the script for a Webservice remote protocol over loferay portal. while i record the script using html/url modes, I get a lot of web_custom_requests which fail in the controller. Is there any special recording mode that i can use for this application,

    Thanks,
    Devaki

    • Hi Devaki,
      Usually LoadRunner falls back to web_custom_requests if it can’t map the request to the other types of web request. This is usually not a problem, you only have to pay more attention to the request body since it is not neatly organized. I’m not familiar with Liferay, but I assume they use it on their website, so I tried recording with the usual HTTP/HTML on HTML mode and no custom requests. Nothing special there, but your implementation might have some differences. The problem is only on the controller or on VUGen too?? It might be a concurrency problem on the website if that is the case.
      Have you tried recording the same steps to another script and compare the two with diff?? You might be missing a correlation on the custom request.
      If that doesn’t help, send me a sample of your script to have a look.

      Cheers,
      Martin

  86. Question: How can I import a WSDL file from a SSL(Https) site using web service protocol i.e import service by selecting the URL.

    Problem I am having is once I click the import button, I am getting a popup for username/pswd.
    note: after talking to developer, I was told that since I am using “https” I need to provide a user certificate.

    Your help/suggestion is appreciated

    • Hi Syed,
      Usually importing services from WSDL over SSL (HTTPS) is simple. The steps are pretty much the same as the ones described on the “Using WSDL files to Create WebService Scripts” post. You only have to add the auth details on the Import Service window, by clicking on the “Connection Settings …” button, checking the “Use Authentication Settings” checkbox and then entering your username and password on the required fields. Just remember that if you are using a Domain account, you need to add the domain name to the username too.

      This usually works and I never had to do anything else to import the services. If that doesn’t work for you, double check your username\password and also the domain name if necessary.

      Cheers,
      Martin

      Reference:
      http://martinspier.co.uk/wsdl-files-create-webservice-scripts

  87. how we can identiy the bottlenecks in windows montioring tool and what is the block mechanism in parameterization in load runner ? give me answer asap.

    • Hi Suresh,
      Sorry for the late reply. I was away on a business trip.
      From what I understood you have two questions:

      How to identify bottlenecks on Windows boxes? Finding bottlenecks is a skill that comes with time. Once you tested different technologies and different types of applications you will start noticing things that are not normal and need more attention. One way to start is look into the basic perfmon (just exec. perfmon on the shell) and check the counters for CPU usage, Memory usage, IO, Network, etc. On the % you usually expect less than 80% used, but this depends highly on your application. IO should usually be less than twice the number of disks you have on the server. If it is 1 disk, should be less than 2. IO, usually less than your bandwidth. This is a way to start, but with time you will start looking at significantly more counters to check for bottlenecks.
      What is the block mechanism in LR? I’m not sure what you mean by block mechanism, but probably you are referring to the block size when using a Unique parameter. In this case, the block size means the number of items used by each VUser during the execution. If you expect each VUser to run 100 times on the loop, you will need to specify a block size of 100. Depending on your application you will need a significantly larger block, since this can be reached quite easily. Imagine that the block is a set of numbers used by each VUser and this needs to be specified before the test starts.

      Hope I have answered your questions!
      Cheers,
      Martin

  88. Martin :
    Hi Andrea,
    Just have a quick question. The target system is running Oracle 11 or 12??
    Regards,
    Martin

    Hi Martin,

    it’s Oracle 12.

    Thank’s,
    Andrea

    • Hi Andrea,

      Ok, so you followed the steps from the the post “Creating Oracle 12 Scripts on LoadRunner”, right?

      LoadRunner was able to capture the ICX and JSession parameters correctly??
      Is the connections encrypted (HTTPS)?

      Cheers,
      Martin

  89. Hi Martin,

    thank’s for your essay about Lr + Oracle 11i. I have some doubts about my script: first of all, I tried to record a multiprotocol script, HTTP & Oracle NCA, but I don’t know why the Oracle WBS shows a message like “unvalidate session” even though I correlated the parameters (i.e. “_ti” and “_oas”). Then, with your indications, I tried with “oracle web app 11i” protocol, and during the login operation to Oracle Form, the system shows a “unable to connect” or “bad credentials or database connection” message.

    Can you help me? I’d be very thankful!!

    Andrea

  90. Hi Martin,

    Thanks so much for your replies. I already tried sending separate keystrokes. It works but I found that parameterization works better. It sends the complete string instead of separate keystrokes.

    I will send you update soon about the first issue.

    thanks so much for your reply.

    Paul

  91. Hi Martin

    one small issue with ctrx_type. When I use a string with ctrx_type like ctrx_type(“abcdef”), it misses the “a” or “b” characters while replaying the script.

    I am trying to save a string in a variable and call it like

    char var = “abcdef”
    ctrx_type(&var)

    but its giving me pointer error. Can you please help with this also?

    thanks

    • Hi Paul,
      never had this issue, but I guess it can be related to a delay on sending the keystrokes. Have you tried sending the keystrokes separately??

      ctrx_type(“a”);
      ctrx_type(“b”);
      ctrx_type(“c”);

      If that doesn’t work, you can try including a wait between steps.

      Cheers,
      Martin

  92. Hi Martin

    First of all I would like to thank you for the nice posts about LoadRunner+Citrix. I am working on a project where I am required to use only 1 ICA File to connect to the application which I can connect in the vuser_init section and other application processing will be in the Action section.

    My issue comes as each vuser opens a new session with application, how can I use 50 Vusers with only one citrix session open? Hope you understood what I want to say.

    thanks

    • Hi Paul,
      glad to hear that you’re enjoying the blog. Sorry for taking some time to answer, I’ve been out of town for a few days.
      If I understood correctly, you’re looking to increase the load (50 vusers) with only one session open, to avoid licensing issues I guess.
      Problem is that to increase the load you need to increase parallelism, increasing the number of vusers. Each vuser will require a separate “channel” with Citrix to perform its tasks. Each Vuser is independent of each other, therefore, requiring a separate session. Nothing you can do there. If you have no wait time on the script, the only option is to increase Vusers and consequently, increase open sessions.
      Bottomline is, imagine that each Vuser will be executing a different step on your script flow. Since each step depends on a specific flow step, you need several flows running in parallel, meaning you need several sessions open.
      Hope my answer helped. Let me know if I misunderstood the question.

      Regards,
      Martin

Leave a Reply