jMeter Interview Questions

Q.1: What is JMeter? 

A: JMeter is one of the Java tools which is used to perform load testing client/server applications. Apache JMeter is open source software, a 100% pure Java desktop application designed to load test functional behavior and measure performance of the application. It was originally designed for testing Web Applications but has since expanded to other test functions.

Q.2: What is Performance Testing? 

A: This test sets the ‘best possible’ performance expectation under a given configuration of infrastructure. It also highlights early in the testing process if changes need to be made before application goes into production.

Q.3: What is Load Test? 

A: This test is basically used for exercising\discovering the system under the top load it was designed to operate under.

Q.4: What is Stress Test? 

A: This test is an attempt to break the system by overwhelming its resources.

Q.5: What are the protocols supported by JMeter?

A: The protocols supported by JMeter are: 
1. Web: HTTP, HTTPS sites 'web 1.0' web 2.0 (ajax, flex and flex-ws-amf)
2. Web Services: SOAP / XML-RPC
3. Database via JDBC drivers
4. Directory: LDAP
5. Messaging Oriented service via JMS
6. Service: POP3, IMAP, SMTP
7. FTP Service

Q.6: List some of the features of JMeter.

A: Following are some of the features of JMeter:
1. Its free. Its an open source software.It has simple and intuitive GUI.
2. JMeter can load and performance test many different server types: Web - HTTP, HTTPS, SOAP, Database via JDBC, LDAP, JMS, Mail - POP3
3. It is platform-independent tool. On Linux/Unix, JMeter can be invoked by clicking on JMeter shell script. On Windows it can be invoked by starting the jmeter.bat file.
4. It has full Swing and lightweight component support (precompiled JAR uses packages javax.swing.* ).
5. JMeter store its test plans in XML format. This means you can generate a test plan using a text editor.
6. It's full multi-threading framework allows concurrent sampling by many threads and simultaneous sampling of different functions by separate thread groups.
7. It is highly Extensible.
8. Can also be used to perform automated and functional testing of your application. 

Q.7: What is a Test Plan in JMeter?

A: A Test Plan defines and provides a layout of how and what to test. For example the web application as well as the client server application. It can be viewed as a container for running tests. A complete test plan will consist of one or more elements such as thread groups, logic controllers, sample-generating controllers, listeners, timers, assertions, and configuration elements. A test plan must have at least one thread group.
Q.8: List some of the test plan elements in JMeter.
A: Following is a list of some of the test plan elements:

1. ThreadGroup
2. Controllers
3. Listeners
4. Timers
5. Assertions
6. Configuration Elements
7. Pre-Processor Elements
8. Post-Processor Elements

Q.9: What is Thread Group?

A: Thread Group elements are the beginning points of your test plan. As the name suggests, the thread group elements control the number of threads JMeter will use during the test.

Q.10: What are Controllers and its types?

A: JMeter has two types of Controllers:

Samplers Controllers : Samplers allow JMeter to send specific types of requests to a server. They simulate a user's request for a page from the target server. For example, you can add a HTTP Request sampler if you need to perform a POST, GET, DELETE on a HTTP service

Logical Controllers : Logic Controllers let you control order of processing of Samplers in a Thread. Logic Controllers can change the order of request coming from any of their child elements. Some examples are: ForEach Controller, While Controller, Loop Controller, IF Controller, Run Time Controller, Interleave Controller, Throughput Controller, Run Once Controller. 

Q.11: What is Configuration element?

A: Configuration Elements allow you to create defaults and variables to be used by Samplers. They are used to add or modify requests made by Samplers.

They are executed at the start of the scope of which they are part, before any Samplers that are located in the same scope. Therefore, a Configuration Element is accessed only from inside the branch where it is placed.
Q12: What are Listeners?
A: Listeners let you view the results of Samplers in the form of tables, graphs, trees or simple text in some log files. They provide visual access to the data gathered by JMeter about the test cases as a Sampler component of JMeter is executed.

Listeners can be added anywhere in the test, including directly under the test plan. They will collect data only from elements at or below their level.

Q.13: What are Pre-Processor and Post-Processor elements?

A: A Pre-Procesor is something that will happen before a sampler executes. They are often used to modify the settings of a Sample Request just before it runs, or to update variables that are not extracted from response text.

A Post Processor executes after a sampler finishes its execution. This element is most often used to process the response data, for example, to retrieve particular value for later use.

Q.14: What is the execution order of Test Elements

A: Following is the execution order of the test plan elements:

1. Configuration elements
2. Pre-Processors
3. Timers
4. Sampler
5. Post-Processors (unless SampleResult is null)
6. Assertions (unless SampleResult is null)
7. Listeners (unless SampleResult is null)
Q.15: How do you ensure re-usability in your JMeter scripts?
1. Using config elements like "CSV Data Set Config", "User Defined Variables", etc for greater data reuse.
2. Modularizing shared tasks and invoking them via a "Module Controller".
3.Writing your own BeanShell functions, and reusing them.
Q.16: Are the test plans built using JMeter OS dependant?
A: Test plans are usually saved in thr XML format, hence they have nothing to do with any particular OS. You can run those test plans on any OS where JMeter can run. 

Q.17: What are the monitor tests?

A: Uses of monitor tests are:

1. Monitors are useful for a stress testing and system management.
2. Used with stress testing, the monitor provides additional information about server performance.
3. Monitors makes it easier to see the relationship between server performance and response time on the client side.
4. As a system administration tool, the monitor provides an easy way to monitor multiple servers from one console.

Q.18: What are JMeter Functions?

A: JMeter functions are special values that can populate fields of any Sampler or other element in a test tree. A function call looks like this: 


Q.19: Where can functions and variables be used?

A: Functions and variables can be written into any field of any test component.
Q.20: What are regular expressions in JMeter?
A: Regular expressions are used to search and manipulate text, based on patterns. JMeter interprets forms of regular expressions or patterns being used throughout a JMeter test plan, by including the pattern matching software Apache Jakarta ORO.
Q.21: How can you reduce resource requirements in JMeter?

A: Below are some suggestion to reduce resource requirements:

1. Use non-GUI mode: jmeter -n -t test.jmx -l test.jtl.
2. Use as few Listeners as possible; if using the -l flag as above they can all be deleted or disabled.
3. Disable the “View Result Tree” listener as it consumes a lot of memory and can result in the console freezing or JMeter running out of memory. It is, however, safe to use the “View Result Tree” listener with only “Errors” checked.
4. Rather than using lots of similar samplers, use the same sampler in a loop, and use variables (CSV Data Set) to vary the sample. Or perhaps use the Access Log Sampler.
5. Don't use functional mode.
6. Use CSV output rather than XML.
7. Only save the data that you need.
8. Use as few Assertions as possible.
9. Disable all JMeter graphs as they consume a lot of memory. You can view all of the real time graphs using the JTLs tab in your web interface.
10. Do not forget to erase the local path from CSV Data Set Config if used.
11. Clean the Files tab prior to every test run.