How to use Apache JMeter "Transaction Controller" to get total time of execution

As you know, Apache jmeter is performance testing tool and supporting many operation systems like FreeBSD,  Linux, Mac, Windows, Solaris Sparc, OpenVMS Alpha etc.. We can say that controllers are the main part of jmeter and they are very useful to control execution of jmeter script for load testing. Let me
share use of "Transaction Controller" in java jmeter testing.

If you performed load testing using jmeter then you knows that jmeter is recording all sub requests with main request during script recording. If there is any jpg, gif, png image or js on page then it will be recorded as a new request in your script with main page request. Generally we are excluding this kind of requests during recording of script to get correct and better result of main request of real time scenario. But supposing if you want to measure performance of main page HTTP request including it's sub requests and want to calculate overall load time of page including sub requests then how you will do it? "Transaction Controller" will help you to handle this scenario.

Let we take simple example to get it better in mind.


Look in to above example, There are 2 main HTTP requests. 1. Home Page and 2. FAQ Page. .jpg request, .gif request, .png request and .js request are the sub requests of Home Page. On completion of recording, i added Transaction Controller and moved all requests of home page under it. I set 2 virtual users in thread group and added Aggregate Report Listener to view test results.

Now i run this script. Apache jmeter shows me results as bellow in Aggregate Report.


Look in above image, Jmeter has added one extra result line as "Transaction Controller" in result. It is the sum of all the sub requests and main request(Home Page, .jpg request, .gif request, .png request, .js request) in all result columns. Sum of all requests will be not exact same as Transaction Controller value but it will be nearest to it.

What is the Use of "Generate parent sample" flag in Transaction Controller?
If "Generate parent sample" is checked in transaction controller then you can view only Transaction Controller line in Aggregate Report as bellow. Transaction Controller's sub requests will be not displayed in report.



What is the Use of "Include timer duration in generated sample" flag in Transaction Controller?
If You have added any timer under transaction controller and if "Include timer duration in generated sample" is 1 then Transaction Controller result line will show you time including timer duration. If it is 0 then result will be excluded of timer time.

4 comments:

  1. Nice article sir.. Keep it up.

    ReplyDelete
  2. Very nice, i was done both selenium and jmeter. Thanks

    ReplyDelete
  3. Nice article. I have a question for which I'm unable to find answer from a long time.
    Jmeter runs samplers in top-to-bottom order "sequentially"(right?). But a browser sometimes sends multiple request in parallel, so the total time taken for a transaction in browser will be less compared to the time of "Transaction Controller" in aggregate report for the same transaction. Then how can I exactly simulate this browser behavior to know the accurate total time the transaction takes?

    ReplyDelete