I am trying to run a performance test of an acrobat reader(PDF). The pdf load's an authorization page and need to capture that to sign in to load the PDF content. Need some thoughts on how to capture this using Jmeter
Load testing Acrobat Reader per se doesn't make a lot of sense (as long as you are not an Adobe employee).
If you need to simulate hundreds/thousands of Reader instances opening the authorization page it's sufficient to simulate the network footprint.
If the protocol is HTTP or HTTPS you can even record the traffic using JMeter's HTTP(S) Test Script Recorder. It respects operating system proxy settings so you need to
Set your OS to use localhost as the proxy host and 8888 as the proxy port
Import JMeter's self-signed certificate into Trusted Root Certification Authorities store
Perform the actions in the Acrobat Reader
JMeter should capture the associated network requests and generate relevant HTTP Request samplers
See How to Do Desktop Performance Testing article for more information.
If protocol is not HTTP(S) - basically the same approach: capture the traffic using a sniffer tool like Wireshark, identify the protocol, choose the relevant Sampler and configure it to send exactly the same request(s) as Acrobat Reader does
Related
How to record user input parameters using JMeter? I tried to use the record controller and follow through the tutorials, all the records are only http get requests without any post input. Thanks
Properly configured JMeter captures all network activity between browser and application under test, the fact you don't see POST requests might indicate one of the following:
Browser simply doesn't make any POST requests, i.e. your application is designed to operate only GET HTTP Request types
Your JMeter configuration is not correct, i.e. your application uses HTTPS. In this case you need to perform some extra configuration so JMeter could intercept, decrypt and record HTTPS requests:
make sure your browser is configured to use proxy for all protocols
make sure you install JMeter's self-signed certificate to your browser. The file name is ApacheJMeterTemporaryRootCA.crt and it is being generated in "bin" folder of your JMeter installation when you start JMeter Proxy Server
More information:
HTTP(S) Test Script Recorder (pay attention to HTTPS recording and certificates chapter)
Recording HTTPS Traffic with JMeter's Proxy Server
Could some one please help me on the below
Is it possible to record desktop applications using JMeter?
I just tried the following, but didn't work
File--->Template--->Create
Workbench--->Recording Script-->Start
Launched my application which is desktop and perform some actions
Workbench--->Recording Script-->Stop
When I expand Threadgroup--->Recording Controller-Nothing recorded
Where am I missing?
You miss one important step:
configure your desktop application to use proxy and provide host and port where JMeter is running (localhost and 8888 if they live on the same machine
Also be aware that:
JMeter can record only HTTP or HTTPS traffic, if your application uses other protocol - the calls will not be recorded. In that case you can consider The Grinder as an alternative, it comes with TCPProxy which is more low level therefore is cable to capture more protocols
If your application uses HTTPS protocol you will need an SSL certificate in order to decrypt and record the requests, you can configure your application to use JMeter's certificate or vice versa.
On MS Windows you may need to add a Loopback Adapter
See How to Run Performance Tests of Desktop Applications Using JMeter article for more details on simulating multiple desktop applications using JMeter
As help explains:
The recorder is implemented as an HTTP(S) proxy server. You need to set up your browser use the proxy for all HTTP and HTTPS requests.
Technically browser is also a desktop application, so to answer your first question, yes, you can record desktop applications using JMeter. However, just like browser, your desktop application must have an ability to connect to the internet via user-defined proxy. And also recorder will only record HTTP traffic from and to the application, it will not record client-only UI events, or traffic generated by any other protocols.
So to sum up:
Any desktop application can use JMeter recorder
But only if you can configure it to use JMeter recorder as a proxy
And only if your goal is to record HTTP traffic related to your desktop application, nothing else.
For load testing from different browser do we need to have all browser version on host machine or user agent change in existing script will work?
JMeter acts on protocol level, it builds HTTP requests using Java code and Apache HTTPClient libraries by default.
If application you're trying to test logic differs depending on browser you can mimic different browsers by sending the relevant User-Agent header via HTTP Header Manager.
Also consider the following settings:
configure your HTTP Request samplers to:
Retrieve all embedded resources
Use concurrent pool of 4-6 threads for this
This way you will be able to replicate browser behaviour when it comes to working with images, CSS files, JavaScript files, etc.
add HTTP Cache Manager to represent browser cache
add HTTP Cookie Manager to mimic simulate browser cookies, deal with cookie-based authentication, represent sessions, etc.
Check out How To Make JMeter Behave More Like A Real Browser guide for more detailed explanation of the above recommendations.
No.
A web-browser uses User-Agent to tell a server what kind of Browser and Operating System it uses. According to Wikipedia:
This allows the web site to customize content for the capabilities of a particular device
If you recorded your script with Chrome, JMeter would tell the server it was Chrome, and the server would respond to JMeter as if it were Chrome. JMeter, however, does not actually user Chrome in any way. Similarly, if you were to change you User-Agent to Android, the server would just respond to JMeter as if it were an Android device.
Can we test mobile application either iOS/Android(Native/hybrid)App using Apache JMeter? If yes, what's the way?
You cannot test mobile application directly i.e. how long does it take to load, how responsive it is, etc. via JMeter. What you can do with JMeter is to simulate large number of mobile devices talking to your backend server to measure performance and also apply some client-side assertions to make sure that server's response is not malformed.
It is possible to record mobile application network activity via JMeter HTTP(S) Test Script Recorder as follows:
Add aforementioned HTTP(S) Test Script Recorder and a Recording Controller to Workbench
Make sure that host, running JMeter and mobile device are on the same network (i.e. use Wifi, not cellular data plan) and the host running JMeter is accessible (i.e. firewall software doesn't block port 8080)
Start JMeter's proxy
Configure device to use JMeter's proxy.
Launch your application and perform necessary actions
When you finished stop JMeter's proxy and copy recorded requests to Test Plan
Perform correlation and parametrization if needed
Configure Thread Group virtual users and ramp-up according to your load scenario.
Launch the tests
Analyze results
References:
JMeter Proxy Step by Step
Load Testing Mobile Apps. But Made Easy.
Parametrization in JMeter
Guide to JMeter Regular Expressions
I have a desktop based(.exe) application used for trading of equities.
1.Developed in VB uses TCP/IP.
2.Uses a database server which is an another server which the exe sends requests on.
3.I want to get the entire response using jmeter for 50 users at a time.
I wanted to record the responses for the transactions.I have worked with web applications where we create Http proxy server and start it and the recording happenes from browser but in this case i cant use browser.
Please guide me how to record the responses in jmeter with .exe applications.
Thanks and Regards,
Kumar
JMeter HTTP(S) Test Script Recorder is capable of recording only HTTP or HTTPS traffic so if following conditions are met:
Your .exe application talks to server using HTTP
Your .exe application can be configured to use HTTP proxy or respects Windows global HTTP Proxy settings from registry (or configured in Internet Explorer)
the answer is "yes", you can use JMeter to record the traffic. See Load Testing Mobile Apps. But Made Easy. guide for details on how to do it.
If one of above conditions cannot be satisfied there are following options available:
If you still want to use JMeter there is a possibility to use a sniffer tool like Wireshark to capture requests and manually construct them using JMeter HTTP Request or TCP Sampler.
Consider switching to Grinder tool which offers TCP Proxy
Hope this helps.