This post is about performing tests in a
web server using Jmeter.
First, to start load tests or performance tests, some planning is necessary in the following activities:
First, to start load tests or performance tests, some planning is necessary in the following activities:
- Understanding web
     application architecture, network environment and business rules and
     needs.
- Choosing tools to automate
     load/performance tests
- Selecting user
     scenarios, identifying the critical points.
- Paying attention  to the test environment, there
     must be a network dedicated to testing and a good machine to run test automation
     tools and tools to monitor the net and the CPU of
     the server. 
- Recording selected scenarios.
- Choosing adequate reports to analyse the data from
     execution.
- Analysing and generating reports.
Using Jmeter
Jmeter is an opensource
tool used in performance testing, load testing
and stress testing. It can be used to
simulate a heavy load on a server, network or object to test its strength or to
analyze overall performance under different load types.
Jmeter can be downloaded through Apache Jmeter web site 
The Jmeter installation is very simple. It requires JRE/JDK correctly installed and the JAVA_HOME environment variable set. Just unzip the zip/tar file into the directory where you want JMeter.
In the Jmeter/bin directory you can run the jmeter.bat (for Windows) or jmeter (for Unix) file.
|  | 
| Jmeter Interface | 
First element is Test Plan, selecting and
rigth click add the component Thread Group needed for the test.
TestPlan -> Add -> Threads (Users) -> Thread Group.
It's interesting to add the element called Recording Controller. It will help to organize the test scenarios according to functionality to be tested.
Right Click on Thread Group -> Add -> Logic Controller -> Recording Controller
Then, it's good to add listeners to see the data generated by tests.
Thread Group right click ->Listener -> Agregate Gragh
Thread Group right click ->Listener -> Summary Report
If you want to collect isolated results, add listener just for Recording Controller.
Recording Controller right click ->Listener -> Agregate Gragh
After, the element HTTP Proxy Server must be added, it allows Jmeter to record the user requests and turns them into object Samplers.
TestPlan -> Add -> Threads (Users) -> Thread Group.
It's interesting to add the element called Recording Controller. It will help to organize the test scenarios according to functionality to be tested.
Right Click on Thread Group -> Add -> Logic Controller -> Recording Controller
Then, it's good to add listeners to see the data generated by tests.
Thread Group right click ->Listener -> Agregate Gragh
Thread Group right click ->Listener -> Summary Report
If you want to collect isolated results, add listener just for Recording Controller.
Recording Controller right click ->Listener -> Agregate Gragh
After, the element HTTP Proxy Server must be added, it allows Jmeter to record the user requests and turns them into object Samplers.
- Right click in
     Workbench -> Add -> Non Test Elements -: HTTP Proxy Server.
- Open the browser and
     configure it to listen to the proxy server
     port which is set in Jmeter proxy server
     (default : localhost: 8080)
- In Jmeter -> HTTP
     Proxy Server select in Target Controller your Thread Group and your
     Recording Controller created.
- In Jmeter -> HTTP
     Proxy Server -> click on the Start button.
- Execute the actions in
     the browser , they will be recorded by
     Jmeter.
- Afterwards, access the
     web page and record the user scenarios.
When it finishes just go back to Jmeter and Stop HTTP Proxy
Server. It's good to delete images, css files and scripts before running the tests.
Next, select Thead Group, in Thread Properties
and set:
- The
     number of threads: they are used to simulate concurrent connections to your server
     application.
- The
     ramp-up period:  how long it take to "ramp-up" to the full
     number of threads chosen
- Number
     of times to execute the test.
 Example:
Set 10 threads and the ramp-up period 100 seconds. So, it will take 100 seconds
to get all 10 threads up and running.
The next step is
to select the Play button in Jmeter toolbar.
OBS: If you set a large
number of threads for example 1000 and the Jmeter freezes showing Memory leak in
command line. Verify the RAM memory of the computer and Edit the following line
of Jmeter.bat :
set HEAP=-Xms2048m -Xmx2048m
For a good performance. It is recommended to execute a large number of threads in Jmeter using a computer with more then 4GB RAM.
When the execution stops, observe the Summary Report. It will show values on measurement.
set HEAP=-Xms2048m -Xmx2048m
For a good performance. It is recommended to execute a large number of threads in Jmeter using a computer with more then 4GB RAM.
When the execution stops, observe the Summary Report. It will show values on measurement.
- Label: http request recorded.
- Samples: number of http request ran for threads. 
- Average: 
      average response time for http request. T
- Min: the minimum response time taken by the http
     request. 
- Max:  the maximum response time taken by the http
     request. 
- Std.Deviation: how
     many cases were deviating from the average value of the receiving time.
      
- Error %: error
     percentage in samples during run. 
- Throughput: number of requests per
     unit of time sent to server.
In Agregate Graph, the results are plotted and it is possible to identify bottlenecks of the http requests.
|  | 
| Agregate Graph | 
