View all services
Talk to QA Advisor
Browse the Knowledge Hub83 resources

Question Bank

82 JMeter interview questions with answers

Eighty-two questions across test plan elements, samplers and config, controllers, correlation, timers and pacing, distributed execution, results analysis and troubleshooting. Graded from fresher to lead, with the model answer, the follow-up to expect, and the trap that separates someone who has run a real load test from someone who has recorded a script in the GUI.

82questions/4experience levels/13topics/Freedownload, no sign-up

All 82 questions, with model answers

Filter by level or topic, search the full text, and download the whole bank to revise offline.

Last updated

Experience level

Topic

Showing 82 of 82 questions

Q1FresherFundamentals

What is JMeter and what is it actually used for?

What they are assessing

Whether you understand its scope rather than calling it a testing tool.

Model answer

Apache JMeter is an open source Java application for load and performance testing. It generates concurrent requests against a target system and measures response times, throughput and errors. It works at the protocol level rather than the browser level: it sends HTTP requests directly, it does not render pages, execute JavaScript or run a real browser. That matters because JMeter measures server performance, not the user perceived performance of a front end. It also supports JDBC, JMS, FTP, SMTP, TCP and gRPC, so it is not only a web tool.

Likely follow-up

If JMeter does not execute JavaScript, how do you measure front end performance?

Trap to avoid

Calling it a browser automation tool or comparing it to Selenium. They solve different problems and the confusion is an immediate signal.

Q2FresherFundamentals

What are the main components of a JMeter test plan?

What they are assessing

Basic structural knowledge.

Model answer

A Test Plan at the root, containing one or more Thread Groups that define the virtual users. Inside a Thread Group sit Samplers, which make the actual requests, and Logic Controllers, which decide when and how often. Config Elements supply defaults and data, such as HTTP Request Defaults or CSV Data Set Config. Pre-processors and post-processors run before and after samplers, which is where correlation happens. Assertions validate responses. Timers add delays. Listeners collect and display results.

Q3FresherFundamentals

What is a Thread Group, and what do its three main settings mean?

What they are assessing

Whether you understand how load is actually shaped.

Model answer

A Thread Group defines a pool of virtual users. Number of threads is how many concurrent users to simulate. Ramp-up period is how long JMeter takes to start all of them, so a hundred threads with a sixty second ramp-up starts roughly one and a half threads per second. Loop count is how many times each thread repeats the contained samplers. Ramp-up matters more than people expect: starting a hundred threads instantly produces a spike that tests connection handling rather than steady state behaviour.

Likely follow-up

How would you choose an appropriate ramp-up period?

Q4FresherFundamentals

What is the difference between a sampler and a logic controller?

What they are assessing

Whether you can separate doing from deciding.

Model answer

A sampler performs an action and produces a result: an HTTP Request sampler sends a request and records the response, timing and status. A logic controller does not produce a result of its own; it controls whether, when and how often its children run. A Loop Controller repeats them, an If Controller runs them conditionally, a Transaction Controller groups them into a single reported measurement. So samplers generate the load, controllers shape the flow.

Q5FresherFundamentals

Why should you run JMeter in non-GUI mode for real tests?

What they are assessing

Whether you have run a real load test or only demonstrated one.

Model answer

The GUI consumes significant heap and CPU rendering results, which steals resources from load generation and distorts the numbers you are trying to measure. In non-GUI mode you run with jmeter -n -t plan.jmx -l results.jtl, which is far more efficient and can generate substantially more load from the same machine. The GUI is for building and debugging the script with a small number of threads. Running a real test in the GUI is one of the most common mistakes and interviewers ask about it deliberately.

Trap to avoid

Saying the GUI is fine for small tests without defining small. The expected answer is that the GUI is for authoring and debugging only.

Q6FresherFundamentals

What is the difference between load, stress, soak and spike testing?

What they are assessing

Whether you know what test you are being asked to build.

Model answer

Load testing runs at expected concurrency to confirm the system meets its targets. Stress testing pushes beyond expected load to find the breaking point and confirm it fails gracefully rather than corrupting data. Soak or endurance testing runs at moderate load for hours to expose leaks, connection pool exhaustion and log growth. Spike testing applies a sudden sharp increase to see how the system handles a surge and whether it recovers. Each is a different Thread Group shape rather than a different tool.

Q7FresherFundamentals

What is the execution order of elements in a JMeter test plan?

What they are assessing

A detail that causes real bugs when misunderstood.

Model answer

Configuration elements first, then pre-processors, then timers, then the sampler, then post-processors, then assertions, then listeners. Note that timers execute before the sampler, not after, which surprises people. Scoping also matters: an element placed at Thread Group level applies to every sampler in it, while the same element inside one sampler applies only there. Most unexpected behaviour in a test plan traces back to scope rather than order.

Likely follow-up

Where would you place an HTTP Header Manager that applies to only one request?

Q8Mid-levelFundamentals

How do you decide how many virtual users to simulate?

What they are assessing

Whether you derive load from data or guess a round number.

Model answer

From production data rather than intuition. I would take peak concurrent sessions or requests per second from analytics or server logs, identify the busiest realistic window, and model that, then add a growth margin for the horizon the business cares about. Concurrent users and requests per second are not the same thing: a hundred users with ten seconds of think time produce far less load than a hundred users hammering continuously, so the think time model matters as much as the user count. If there is no production data yet, I would state the assumption explicitly.

Trap to avoid

Answering with a round number like a thousand users with no derivation. The interviewer is testing whether you can justify the figure.

Q9Mid-levelFundamentals

What is the difference between response time, latency and connect time in JMeter?

What they are assessing

Precision with the three timings JMeter reports.

Model answer

Connect time is how long it took to establish the connection, including TCP handshake and TLS negotiation. Latency is measured from just before sending the request to the moment the first byte of the response is received, so it includes connect time and server processing but not the time to download the body. Elapsed or response time is the full duration including receiving the complete response. The gap between latency and elapsed tells you how much of the time is transfer, which points at payload size or bandwidth rather than server processing.

Likely follow-up

Latency is low but elapsed time is high. What does that suggest?

Q10Mid-levelFundamentals

Can JMeter measure the performance a real user experiences?

What they are assessing

Honesty about the tool's boundary.

Model answer

Not fully. JMeter measures server side performance at protocol level. It does not render HTML, execute JavaScript, apply CSS or run a browser engine, so it cannot measure time to interactive, layout shift or anything dependent on client execution. A page can respond in two hundred milliseconds at protocol level and still take six seconds to become usable. The usual approach is JMeter for server load and a browser based tool such as Lighthouse or a real user monitoring product for the client side, and to say clearly which one a given number came from.

Q11FresherTest plan elements

What is a config element and which ones do you use most?

What they are assessing

Practical familiarity.

Model answer

Config elements supply configuration and data to samplers within their scope rather than making requests themselves. The ones used most are HTTP Request Defaults, which sets server, port and protocol in one place so individual samplers only carry paths; HTTP Header Manager for content type, authorisation and custom headers; HTTP Cookie Manager to maintain session cookies per thread; CSV Data Set Config for external test data; and User Defined Variables for values referenced throughout the plan.

Q12FresherTest plan elements

What does the HTTP Cookie Manager do and why does each thread need its own session?

What they are assessing

Understanding of session isolation.

Model answer

It stores and returns cookies the way a browser does, which is what allows a logged in session to persist across samplers. Critically, each thread gets its own cookie store, so fifty virtual users are fifty independent sessions rather than one shared one. Without it, a login sampler succeeds and every subsequent request behaves as anonymous, which typically shows up as redirects to the login page or unexpected 401 and 403 responses. Clearing cookies on each iteration is an option and should match whether you are modelling returning or new users.

Likely follow-up

Your login works but the next request returns 302 to the login page. What do you check first?

Q13FresherTest plan elements

What is the difference between a pre-processor and a post-processor?

What they are assessing

Where correlation and preparation happen.

Model answer

A pre-processor runs immediately before its sampler and is used to prepare the request: generating a dynamic value, modifying parameters, or setting up variables. A post-processor runs immediately after the sampler and is used to act on the response, which is where correlation lives: Regular Expression Extractor, JSON Extractor, Boundary Extractor and XPath Extractor all pull values from the response into variables for later requests. Post-processors run before assertions in the execution order.

Q14Mid-levelTest plan elements

What is the difference between User Defined Variables and JMeter properties?

What they are assessing

Scope understanding, which matters in distributed runs.

Model answer

User Defined Variables are per thread: each virtual user gets its own copy, and a value set by one thread is invisible to another. Properties are global to the JMeter instance and shared across all threads, set with the -J flag on the command line or via __setProperty. Use variables for anything per user such as a username or token. Use properties for run level configuration you want to pass in at execution time, such as thread count, duration or environment host, which is what makes a plan reusable across environments and CI.

Trap to avoid

Using a variable to share state between threads. It will not work, and the resulting intermittent failures are hard to diagnose.

Q15Mid-levelTest plan elements

How do you parameterise a test plan so it runs against multiple environments?

What they are assessing

Whether your scripts are reusable or hard-coded.

Model answer

Put host, port, protocol and any environment specific paths into properties read with ${__P(host,default)}, then pass them at run time with -Jhost=staging.example.com. Keep credentials out of the JMX entirely and supply them via properties or an external file that is not committed. Use HTTP Request Defaults so the host appears in exactly one place. The result is one JMX that runs against local, test, staging and production read-only without editing, which is also what makes it usable from CI.

Q16Mid-levelTest plan elements

What does a Transaction Controller do and when do you need one?

What they are assessing

Whether you report at the right granularity.

Model answer

It groups several samplers and reports them as a single measurement, so a business transaction made of six HTTP calls appears as one timing rather than six. You need it when the meaningful unit is the user action rather than the individual request: a checkout that involves a cart call, an address validation, a payment authorisation and a confirmation should be reported as checkout. The generate parent sample option controls whether the children are also reported individually, which is usually worth keeping on while debugging and turning off for reporting.

Likely follow-up

Does the Transaction Controller timing include think time from timers inside it?

Q17Mid-levelTest plan elements

What is the purpose of a Test Fragment and a Module Controller?

What they are assessing

Whether you structure large plans for reuse.

Model answer

A Test Fragment is a container that is not executed on its own; it holds reusable pieces such as a login flow or a search sequence. A Module Controller then references that fragment from wherever it is needed, so the logic exists once and every caller stays in sync. This matters on large plans where the same login appears in eight journeys: without it, a change to authentication means eight edits and one of them gets missed. The Include Controller does something similar across separate JMX files.

Q18Mid-levelTest plan elements

What does the "Retrieve All Embedded Resources" option do, and should you use it?

What they are assessing

Understanding of what you are actually simulating.

Model answer

It makes JMeter parse the HTML response and request embedded resources such as images, CSS and JavaScript, using a parallel download pool, which is closer to browser behaviour. Whether to use it depends on what you are measuring. If assets are served from a CDN you are mostly load testing the CDN, which is rarely the intent and can be expensive. If assets come from the application servers it is more realistic. I would usually enable it with a URL filter restricted to our own domain, and keep the browser cache simulation in mind via the HTTP Cache Manager.

Trap to avoid

Enabling it without a filter and then reporting that the site is slow, when the numbers are dominated by third party analytics and font requests.

Q19SeniorTest plan elements

What is the HTTP Cache Manager for, and how does it change your results?

What they are assessing

Whether you model returning users correctly.

Model answer

It simulates browser caching, so resources already retrieved in that thread are not requested again, respecting cache headers. Without it every virtual user behaves as a first time visitor with an empty cache, which overstates load on static assets and understates the proportion of dynamic requests. Real traffic is usually a mix, so a realistic model runs some threads with caching and clears per iteration for others. It is also worth checking the cache manager is not masking a caching misconfiguration you were meant to find.

Q20SeniorTest plan elements

How do you handle authentication flows such as OAuth 2.0 in JMeter?

What they are assessing

Real world scripting beyond simple form login.

Model answer

Treat it as a sequence to script and correlate rather than something JMeter handles for you. For client credentials, one request to the token endpoint, extract the access token with a JSON Extractor, then add it as a bearer token in an HTTP Header Manager for subsequent calls. For authorisation code flows you also need to follow redirects and extract the code and state, which is where a Boundary Extractor is usually cleaner than a regex. Token expiry matters on long tests: refresh when needed, driven by an If Controller checking elapsed time, otherwise a soak test fails halfway through.

Likely follow-up

How would you avoid every one of five hundred threads hitting the token endpoint at once?

Q21FresherSamplers & config

Which samplers have you used, and what are they for?

What they are assessing

Breadth beyond HTTP.

Model answer

HTTP Request for web and REST APIs, which covers most work. JDBC Request for querying databases directly, which is useful both for load testing the database and for setting up or verifying test data. JSR223 Sampler for custom logic in Groovy. Debug Sampler for inspecting variable values while building a plan. Beyond those, JMS for message queues, FTP, SMTP for mail, TCP for raw sockets, and OS Process Sampler for invoking a command. The point is that JMeter is protocol agnostic rather than a web-only tool.

Q22FresherSamplers & config

How do you send a JSON body in an HTTP Request sampler?

What they are assessing

Practical mechanics people get wrong.

Model answer

Set the method to POST or PUT, tick Body Data rather than Parameters, and paste the JSON into the body tab. Then add an HTTP Header Manager with Content-Type set to application/json, which is the step most often forgotten and produces a 415 or a 400 from the server. Variables can be embedded directly in the body with ${varName}. If the payload contains characters that need escaping, or is built dynamically, a JSR223 pre-processor writing the body into a variable is cleaner than trying to build it inline.

Trap to avoid

Putting JSON into the Parameters tab. It will be sent form encoded and the server will reject it.

Q23Mid-levelSamplers & config

How do you use the JDBC Request sampler?

What they are assessing

Whether you have tested beyond the HTTP layer.

Model answer

Add a JDBC Connection Configuration with the driver class, connection string and pool settings, and give it a variable name. Put the matching JDBC driver JAR in JMeter lib. Then add JDBC Request samplers referencing that variable name, choosing the query type: select statement, update statement, callable statement or prepared variants. Results can be written to variables for use downstream. The common use is not load testing the database directly but preparing unique test data, or verifying that a transaction under load actually persisted correctly.

Q24Mid-levelSamplers & config

What is the HTTP(S) Test Script Recorder and what are its limits?

What they are assessing

Whether you understand recording produces a draft, not a script.

Model answer

It runs a proxy that captures browser traffic into samplers, which is a fast way to get the shape of a journey. The limits are what matter in an interview. A recording is full of hard-coded session identifiers, tokens and timestamps that will fail on replay, so correlation is always required afterwards. It also captures third party calls, analytics and CDN assets you probably do not want. And HTTPS requires installing JMeter's certificate in the browser. I treat the recording as a starting point, then parameterise, correlate and strip noise before it is a usable script.

Likely follow-up

What is the first thing you look for in a recorded script before running it?

Q25Mid-levelSamplers & config

How do you test a file upload with JMeter?

What they are assessing

A specific mechanic that comes up often.

Model answer

In the HTTP Request sampler, use the Files Upload tab: give the file path, the parameter name the server expects, and the MIME type. JMeter then sends a multipart/form-data request, and the Use multipart form-data option should be ticked. For load testing, using the same file from every thread is fine for throughput but be aware the server may cache or deduplicate, and file system contention on the load generator can become the bottleneck with large files. If unique files are needed, generate them or reference a set via CSV.

Q26SeniorSamplers & config

When would you use a JSR223 Sampler, and which language should it use?

What they are assessing

Awareness of the Groovy performance point.

Model answer

When you need logic JMeter elements cannot express: building a complex payload, generating a signature or hash, custom correlation across several values, or calling a library. The language should be Groovy, and the Cache compiled script if available box should be ticked. This matters: Groovy compiled and cached performs an order of magnitude better than BeanShell, which is interpreted and becomes a bottleneck at scale. BeanShell samplers and assertions are the single most common reason a load generator cannot produce the expected throughput.

Trap to avoid

Saying BeanShell. It is deprecated in practice for performance reasons and naming it suggests scripts written some years ago and never revisited.

Q27SeniorSamplers & config

How do you avoid hard-coding credentials in a JMeter plan?

What they are assessing

Security hygiene in test assets.

Model answer

Keep them out of the JMX entirely, since it is committed to version control. Read them from properties passed at run time with -J, from an external file outside the repository referenced by CSV Data Set Config, or from environment variables via __env. In CI, inject them from the pipeline secret store. I would also make sure result files do not contain them: request bodies are written to the JTL if configured to save them, so a login payload can leak into an artefact that gets archived.

Q28SeniorSamplers & config

How would you load test a WebSocket or gRPC service with JMeter?

What they are assessing

Whether you know the plugin ecosystem.

Model answer

Neither is supported natively, so both need plugins. For WebSockets the commonly used option is the WebSocket Samplers plugin by Peter Doornbosch, which provides open connection, send, read and close samplers so you can model a conversation rather than a single request. For gRPC there is a gRPC Request plugin that takes the proto definition. In both cases the modelling is different from HTTP: connections are long lived, so the thread model maps to connections rather than requests, and throughput has to be measured per message.

Q29FresherControllers

What does a Loop Controller do, and how is it different from the Thread Group loop count?

What they are assessing

Scope understanding.

Model answer

A Loop Controller repeats only the samplers inside it, a set number of times, within a single iteration of the thread. The Thread Group loop count repeats the entire thread group contents. So if you want a user to log in once and then perform a search ten times, you put the search inside a Loop Controller set to ten rather than setting the Thread Group to loop ten times, which would also repeat the login.

Q30FresherControllers

What is an If Controller and what should you watch out for?

What they are assessing

Whether you know the evaluation cost.

Model answer

It runs its children only when a condition evaluates true, for example ${__jexl3("${status}" == "ACTIVE")}. The thing to watch is the Interpret Condition as Variable Expression option: leaving it unticked means the condition is evaluated as JavaScript, which is slow and was deprecated, and at scale it becomes a measurable overhead on the load generator. The recommended form is a variable expression using jexl3 or a plain variable that already holds true or false, evaluated once rather than per child.

Trap to avoid

Using the default JavaScript evaluation in a high throughput test. It shows up as load generator CPU saturation rather than an obvious error.

Q31Mid-levelControllers

What is a Once Only Controller and when is it genuinely useful?

What they are assessing

Understanding of per thread semantics.

Model answer

Its children run only on the first iteration of each thread, not once for the whole test. That distinction matters: with fifty threads looping ten times, a Once Only Controller executes fifty times, once per thread, not once overall. The standard use is login, so each virtual user authenticates once and then loops through the actual journey. If you genuinely need something to happen once for the entire test, you use a setUp Thread Group instead.

Likely follow-up

How would you run a data setup step exactly once before the whole test?

Q32Mid-levelControllers

What are setUp and tearDown Thread Groups for?

What they are assessing

Whether you handle test lifecycle properly.

Model answer

A setUp Thread Group runs to completion before the main thread groups start, and a tearDown Thread Group runs after they finish. They are the right place for one-time work: creating reference data, obtaining a shared token, warming caches, or cleaning up created records afterwards. tearDown also runs on a stopped test if the relevant option is set, which matters when a run is aborted and would otherwise leave data behind. Using them keeps setup out of the measured results, which is the other benefit.

Q33Mid-levelControllers

How do you model different user behaviours in one test, such as 70 per cent browsers and 30 per cent buyers?

What they are assessing

Realistic workload modelling.

Model answer

Two approaches. Separate Thread Groups with thread counts in the right ratio, which is simplest to reason about and lets each group have its own pacing. Or a single Thread Group with a Throughput Controller per journey set to percent executions, which keeps one user pool and distributes behaviour within it. I usually prefer separate thread groups because the reporting is cleaner and you can ramp them independently, but the single pool version is closer to reality when a single user does both things in one session.

Q34SeniorControllers

What is the difference between a Throughput Controller and a Constant Throughput Timer?

What they are assessing

A commonly confused pair.

Model answer

They do unrelated things despite the similar name. A Throughput Controller controls how often its children execute, either as a percentage of iterations or as a total number, so it distributes behaviour across a mix of journeys. A Constant Throughput Timer controls the rate of requests, adding delay to hold the test to a target number of samples per minute. One shapes which path is taken, the other shapes how fast requests are sent. Confusing them is a reliable way to build a test that produces the wrong load profile.

Trap to avoid

Assuming Throughput Controller sets request rate. It does not; the name is misleading and interviewers know it.

Q35SeniorControllers

What is a Critical Section Controller for?

What they are assessing

Awareness of concurrency control inside a test.

Model answer

It ensures its children are executed by only one thread at a time, using a named lock. The use case is anything that must not run concurrently across virtual users: incrementing a shared counter in a file, refreshing a single shared token, or a setup step that would conflict. It should be used sparingly, because by definition it serialises part of the test and can distort throughput if it wraps anything slow. If you find yourself needing it on a hot path, the design usually wants rethinking.

Q36FresherAssertions

Why do you need assertions in a performance test at all?

What they are assessing

Whether you know that a 200 is not a pass.

Model answer

Because HTTP status alone does not tell you the application worked. Many applications return 200 with an error page, an empty result set, or a friendly failure message, and under load that becomes common: the system degrades by returning errors quickly rather than by failing the request. Without assertions the test reports excellent response times while the application was actually broken. At minimum I assert on response content that only appears on success, not just the code.

Likely follow-up

How does a fast error response distort your average response time?

Q37FresherAssertions

Which assertion types does JMeter provide?

What they are assessing

Range of validation options.

Model answer

Response Assertion for text, regex or status code matching, which covers most cases. JSON Assertion and JSON JMESPath Assertion for API responses. Duration Assertion to fail a sampler exceeding a time threshold. Size Assertion for response size. XPath and XPath2 for XML. MD5Hex for binary integrity. JSR223 Assertion for custom logic. Compare Assertion, which only works with a specific listener and is rarely used at scale.

Q38Mid-levelAssertions

What is the performance cost of assertions, and how do you manage it?

What they are assessing

Whether you understand assertions are not free.

Model answer

Every assertion runs on the load generator for every sample, so a complex regular expression or an XPath assertion against a large response consumes CPU that would otherwise generate load. At high throughput this becomes the constraint. I manage it by keeping assertions simple and targeted: prefer a plain substring match over a regex, scope assertions to the samplers that need them rather than applying one at Thread Group level, and avoid XPath on large documents. Duration assertions are cheap; JSR223 assertions in Groovy are acceptable if compiled and cached.

Trap to avoid

Adding a regex Response Assertion at Thread Group level so it runs on every sampler including static assets.

Q39Mid-levelAssertions

Should you use a Duration Assertion to enforce your SLA?

What they are assessing

Judgement about where thresholds belong.

Model answer

Usually not as the primary mechanism. A Duration Assertion marks an individual sample failed if it exceeds a threshold, which conflates a functional failure with a slow response and pollutes the error rate. Performance requirements are normally expressed as percentiles across the run, such as the ninety-fifth percentile under two seconds, and that is evaluated in analysis or in the CI gate rather than per sample. Duration assertions are useful as a coarse signal during debugging, or for a hard timeout where a very slow response genuinely is a failure.

Q40SeniorAssertions

How do you make a test fail meaningfully rather than silently continuing?

What they are assessing

Whether the test result is trustworthy.

Model answer

Assert on business success for every meaningful sampler, not just status. Use the Thread Group error handling setting deliberately: continue is right for load tests because you want the run to complete and the error rate reported, while stop thread can be right for a functional smoke run. Add an assertion on the login so an authentication failure does not produce a run where every subsequent request is a redirect being counted as success. And check the error percentage in the summary before trusting any timing number, because timings from a failing run are meaningless.

Q41FresherTimers & pacing

What is think time and why does it matter?

What they are assessing

Whether your load model resembles humans.

Model answer

Think time is the pause a real user takes between actions: reading a page, typing, deciding. Without it, virtual users send requests back to back, which produces far more load per user than reality and gives a misleadingly pessimistic picture, or an unrealistic concurrency model. It also changes the relationship between user count and throughput. Realistic think time is usually variable rather than fixed, which is why a Gaussian or Uniform Random Timer is preferable to a Constant Timer.

Likely follow-up

Where does think time sit in JMeter's execution order relative to the sampler?

Q42Mid-levelTimers & pacing

Which timers does JMeter offer and when would you use each?

What they are assessing

Whether you pick timers deliberately.

Model answer

Constant Timer for a fixed pause, simple but unrealistic. Uniform Random Timer and Gaussian Random Timer for variable think time, which is closer to human behaviour. Constant Throughput Timer to hold the test to a target rate rather than a target concurrency. Precise Throughput Timer, which is the more accurate modern equivalent and supports Poisson arrivals. Synchronizing Timer to hold threads until a set number have arrived and release them together, which is how you build a genuine spike. JSR223 Timer for computed delays.

Q43Mid-levelTimers & pacing

How do you achieve a specific requests per second rather than a specific user count?

What they are assessing

Understanding of open versus closed workload models.

Model answer

With a Constant Throughput Timer or, preferably, a Precise Throughput Timer set to the target rate, and enough threads available that the rate is achievable. This is the important subtlety: a throughput timer can only add delay, never remove it, so if the system is too slow for the target rate with the threads provided, you silently fall short. So you provision threads generously and let the timer pace them. The Concurrency Thread Group and Arrivals Thread Group plugins model this more directly.

Trap to avoid

Setting a throughput timer and assuming the rate was achieved. You must verify the actual throughput in the results.

Q44SeniorTimers & pacing

What is the difference between a closed and an open workload model, and which does JMeter default to?

What they are assessing

Conceptual depth that separates senior candidates.

Model answer

In a closed model the number of concurrent users is fixed and each user waits for a response before sending the next request, so as the system slows, throughput falls. That is JMeter's default Thread Group behaviour. In an open model, arrivals happen at a defined rate regardless of whether previous requests completed, so a slow system accumulates a backlog, which is how real internet traffic behaves. Open models expose queueing collapse that closed models hide. The Arrivals Thread Group from the Custom Thread Groups plugin implements an open model.

Likely follow-up

Which model would you use to test a flash sale, and why?

Q45SeniorTimers & pacing

How would you simulate a sudden spike of concurrent users?

What they are assessing

Practical use of synchronisation.

Model answer

A Synchronizing Timer set to the group size you want, which holds threads until that many have arrived and then releases them simultaneously. The thread group must have enough threads started for the barrier to be reached, otherwise the test hangs until timeout, which is the usual mistake. Alternatively the Concurrency Thread Group plugin lets you define a stepped or sharp ramp profile directly, which is easier to reason about for a multi-stage profile such as ramp, hold, spike, hold, ramp down.

Q46FresherCorrelation

What is correlation and why is it necessary?

What they are assessing

The single most important scripting concept.

Model answer

Correlation is capturing a dynamic value from one response and using it in a later request. It is necessary because recorded scripts contain values that were valid only for the recorded session: session identifiers, CSRF tokens, order numbers, view state. Replaying them produces failures that often look like functional errors rather than scripting errors. Any script that has not been correlated will fail as soon as it is run a second time, which is why correlation is the first thing to do after recording.

Q47FresherCorrelation

How does the Regular Expression Extractor work?

What they are assessing

Mechanics of the most used post-processor.

Model answer

You give it a reference name for the variable, a regular expression with a capture group, a template such as $1$ indicating which group to use, a match number, and a default value. It runs after the sampler and stores the captured value in the named variable for later use as ${varName}. The default value matters more than people think: setting it to something recognisable such as NOTFOUND makes a failed extraction obvious downstream instead of producing an empty string that silently breaks the next request.

Likely follow-up

What does a match number of 0 do, and what about a negative number?

Q48Mid-levelCorrelation

When would you use a Boundary Extractor instead of a regular expression?

What they are assessing

Whether you know the modern, cheaper option.

Model answer

When the value sits between two known strings, which covers most correlation. You give it the left and right boundaries rather than writing a regex, which is easier to read, less fragile when the markup changes slightly, and faster because it avoids regex evaluation. That performance difference is real at high throughput. I would reach for a regular expression only when the pattern genuinely needs it, such as matching a format rather than a position, and for JSON I would use the JSON Extractor rather than either.

Q49Mid-levelCorrelation

How do you extract a value from a JSON response?

What they are assessing

Whether you use the right tool for the format.

Model answer

With a JSON Extractor using a JSONPath expression such as $.data.token, or a JSON JMESPath Extractor for more complex queries. Both are far more robust than a regular expression against JSON, because they parse the structure rather than matching text, so whitespace changes or reordered fields do not break them. For arrays you can extract all matches and use the resulting indexed variables, or specify a match number. As with any extractor, set a default value so a failure is visible.

Trap to avoid

Writing a regex against JSON. It works until the API adds a field or changes formatting, then it breaks in a way that looks like an application defect.

Q50Mid-levelCorrelation

Your correlated variable is empty at run time. How do you debug it?

What they are assessing

Systematic debugging.

Model answer

Add a Debug Sampler and a View Results Tree, run a single thread, and look at what the variable actually contains. Then check the response of the source sampler in the tree: often the value is not there at all because the previous request failed, or because the response is compressed or the content differs from what was recorded. Check the extractor scope, since a post-processor at Thread Group level applies to every sampler and may be matching the wrong response. Then check the regex or JSONPath against the actual body rather than the one from the recording.

Q51SeniorCorrelation

How would you handle a token that expires during a long test?

What they are assessing

Whether your scripts survive a soak.

Model answer

Store the token and its issue time in variables, then wrap the refresh in an If Controller that checks whether the age exceeds a threshold shorter than the real expiry. Alternatively, react to the failure: an assertion or a JSR223 post-processor detects a 401 and triggers a re-authentication path. For a shared token across threads, a Critical Section Controller prevents every thread refreshing at once, or a setUp Thread Group plus a scheduled refresh. Getting this wrong is why soak tests often fail at a suspiciously round interval such as one hour.

Likely follow-up

How would you spot this problem from the results alone?

Q52SeniorCorrelation

How do you correlate a value that appears in a redirect chain?

What they are assessing

Detail knowledge of redirect handling.

Model answer

The key setting is Follow Redirects versus Redirect Automatically. With Redirect Automatically, JMeter handles the redirect internally and you cannot easily extract from the intermediate response. With Follow Redirects, each redirect is recorded as a sub-sample and post-processors can access them, which is what you need. There is also a scope setting on extractors controlling whether they apply to the main sample, sub-samples or both, and setting that to sub-samples is often the missing piece when extraction from a redirect fails.

Q53FresherParameterisation

How does CSV Data Set Config work?

What they are assessing

The standard way to feed data.

Model answer

It reads a delimited file line by line and assigns each column to a named variable, with one line consumed per iteration per thread. Key settings are the file path, variable names, delimiter, whether the file has a header line, recycle on end of file, stop thread on end of file, and sharing mode. It is efficient because it streams rather than loading the whole file into memory, which matters for large data sets. The file should be on every load generator in a distributed run, or split between them.

Q54Mid-levelParameterisation

What do the CSV sharing modes do, and when does it matter?

What they are assessing

A setting that causes subtle duplicate data bugs.

Model answer

All threads shares one file pointer across the whole test, so every thread takes the next unused line and data is not repeated. Current thread group shares within a group but each group starts again. Current thread gives every thread its own pointer, so all threads start at line one and every thread uses the same data. That last one is the source of unexpected duplicates: if you need unique users per thread, All threads is what you want, and choosing Current thread silently produces a test where five hundred users all log in as the first account.

Trap to avoid

Leaving the default without thinking. The default is All threads, which is usually right, but the failure mode when it is wrong looks like an application bug.

Q55Mid-levelParameterisation

How do you generate unique data such as an email address at run time?

What they are assessing

Knowledge of built-in functions.

Model answer

JMeter functions cover most of it. __threadNum gives the thread number, __counter gives an incrementing counter with a per thread or global flag, __time and __timeShift give timestamps, __UUID gives a unique identifier, and __Random gives a number in a range. A common pattern is user_${__threadNum}_${__time(YMDHMS)}@example.com, which is unique per thread and per run. For genuinely unique across distributed runs, include the machine name from __machineName or a run identifier passed as a property.

Likely follow-up

Why might __counter produce duplicates in a distributed test?

Q56SeniorParameterisation

How do you handle test data in a distributed test across several load generators?

What they are assessing

Distributed data strategy.

Model answer

The safest approach is to split the data file and place a distinct slice on each generator, because CSV Data Set Config reads locally and does not coordinate across machines. So a shared file copied to all of them would produce the same rows on each. Alternatives are generating data deterministically from the machine identity, or fetching it from a service or database at run time, which adds load but guarantees uniqueness. The failure to avoid is every generator consuming the same accounts, which creates lock contention on the target and invalidates the results.

Q57SeniorParameterisation

How would you feed a test with data that must be created before it can be used?

What they are assessing

Lifecycle thinking about test data.

Model answer

Either create it in a setUp Thread Group, writing identifiers to a file or to properties for the main groups to consume, or create it inline as the first step of each thread and carry the identifier in a variable. The inline approach keeps the test self-contained and is better for repeatability, but the creation calls are themselves load and should either be excluded from reporting or acknowledged as part of the profile. For large volumes I would seed the database directly before the run rather than creating through the API, which is faster and does not distort the measurement.

Q58FresherListeners & results

Which listeners do you use, and which should never run during a load test?

What they are assessing

Whether you know listeners cost resources.

Model answer

View Results Tree and View Results in Table are for debugging with a handful of threads only; they retain every sample in memory and will exhaust heap in a real run. Aggregate Report and Summary Report are lighter but still consume resources in the GUI. For an actual test I write results to a JTL file with the -l flag and generate the HTML dashboard afterwards, or stream to a Backend Listener. The rule is that during a load test you should have no listeners enabled in the plan at all.

Trap to avoid

Saying you use View Results Tree to monitor a running load test. It is the classic way to make the load generator the bottleneck.

Q59Mid-levelListeners & results

What is the JTL file and what should you save into it?

What they are assessing

Practical results handling.

Model answer

It is the results log, CSV or XML, written per sample. What you save is configurable in jmeter.properties or the sample_variables setting, and it matters because saving everything produces enormous files that slow the run. I would save timestamp, elapsed, label, response code, success flag, thread name, latency, connect time, bytes and any sample variables needed for analysis. I would not save full response bodies except when debugging, both for size and because they can contain sensitive data that then ends up in a CI artefact.

Q60Mid-levelListeners & results

How do you generate the HTML dashboard report?

What they are assessing

Whether you produce shareable output.

Model answer

Either during the run with jmeter -n -t plan.jmx -l results.jtl -e -o reportfolder, or afterwards from an existing JTL with jmeter -g results.jtl -o reportfolder. The output folder must be empty or the command fails. The dashboard gives percentiles, throughput over time, response times over time, error breakdown by type and an APDEX score. Thresholds for APDEX and the percentiles reported are configurable in reportgenerator properties, which is worth setting to match your actual SLA rather than the defaults.

Q61Mid-levelListeners & results

What is the Backend Listener used for?

What they are assessing

Whether you have done live monitoring.

Model answer

It streams metrics out of JMeter during the run to a time series database, most commonly InfluxDB or Graphite, which are then visualised in Grafana. The value is seeing the test live rather than waiting for it to finish, correlating load against server side metrics on the same timeline, and keeping history across runs for comparison. It is also how you monitor a long soak without holding results in memory. The overhead is low because it sends aggregated metrics on an interval rather than per sample.

Likely follow-up

What server side metrics would you want on the same dashboard?

Q62SeniorListeners & results

How do you compare results between two runs objectively?

What they are assessing

Rigour in benchmarking.

Model answer

Hold everything constant except the variable under test: same script, same data, same load profile, same environment state, same time of day if the environment is shared. Compare percentiles rather than averages, and compare throughput and error rate alongside, because a faster response time with a lower throughput is not an improvement. Run each configuration more than once to see variance, since a single pair of runs can differ by more than the effect you are looking for. And record the build identifier and configuration with the results, or the comparison is not reproducible.

Q63Mid-levelDistributed testing

How does distributed testing work in JMeter?

What they are assessing

Understanding of the master and worker model.

Model answer

One controller machine, historically called the master, coordinates several worker machines running jmeter-server. The controller sends the test plan to each worker over RMI, each worker runs the full plan with the configured thread count, and results are streamed back to the controller. So the total load is threads multiplied by the number of workers, which is the detail people miss: specifying a hundred threads with four workers produces four hundred. Workers need the same JMeter version, the same Java version, any plugins, and access to any data files.

Trap to avoid

Thinking the thread count is divided across workers. It is replicated, and getting this wrong means a test four times larger than intended.

Q64Mid-levelDistributed testing

When do you actually need distributed testing?

What they are assessing

Whether you reach for it appropriately.

Model answer

When one load generator cannot produce the required load, which is usually evidenced by the generator's CPU, memory or network saturating, or by the ephemeral port range being exhausted. A well tuned single machine can often produce several thousand threads for a simple HTTP test, so distribution is not always needed. I would first check whether the limit is the generator or the script, because a heavy BeanShell assertion or a View Results Tree listener will cap throughput long before the hardware does, and adding machines to compensate hides the real problem.

Q65SeniorDistributed testing

What are the common problems with distributed runs?

What they are assessing

Operational experience.

Model answer

RMI connectivity and firewall rules, since the workers connect back to the controller on a dynamically chosen port unless server.rmi.localport is pinned. Version mismatch between controller and workers, which fails in confusing ways. Missing plugins or data files on a worker. Clock skew across machines, which distorts the combined timeline. The controller becoming a bottleneck when collecting results from many workers, which is why you keep result saving lean. And in cloud environments, workers sharing a NAT gateway and hitting connection limits collectively.

Likely follow-up

How would you verify all workers actually participated in the run?

Q66SeniorDistributed testing

How do you tune a load generator to produce more load?

What they are assessing

Practical capacity work.

Model answer

Increase JVM heap in the jmeter startup script, though beyond a point garbage collection becomes the issue rather than the fix. Remove all listeners and write to a lean JTL. Replace BeanShell with cached Groovy. Prefer Boundary Extractors over regex. Disable embedded resource retrieval unless needed. On the operating system, raise the open file descriptor limit, widen the ephemeral port range and reduce TIME_WAIT retention, because HTTP load tests exhaust ports before they exhaust CPU. Then measure the generator itself during the run to confirm it is not the constraint.

Q67FresherAnalysis

Why is average response time a poor metric?

What they are assessing

Statistical literacy, which is most of performance work.

Model answer

Because it hides the distribution. An average of eight hundred milliseconds is consistent with every request taking eight hundred milliseconds, or with ninety per cent taking two hundred and ten per cent taking six seconds. The second is a serious problem and the average conceals it entirely. Percentiles show the shape: the ninety-fifth and ninety-ninth tell you what the unlucky users experience, and those are the users who complain and churn. I report median, ninety-fifth and ninety-ninth percentile, plus maximum, rather than the mean.

Likely follow-up

Why is the ninety-ninth percentile often more important than the ninety-fifth?

Q68Mid-levelAnalysis

What metrics do you report after a load test?

What they are assessing

Completeness of reporting.

Model answer

Throughput in requests per second, which is the primary capacity measure. Response time percentiles per transaction rather than aggregated across everything. Error rate and the breakdown of error types. Concurrency actually achieved against the target. And the server side picture alongside: CPU, memory, garbage collection, database connections, queue depths and disk. The test result alone tells you what happened; the server metrics tell you why, and a report without them usually cannot answer the next question.

Q69Mid-levelAnalysis

Throughput plateaus while response time keeps climbing. What does that mean?

What they are assessing

Diagnostic reasoning about saturation.

Model answer

The system has reached its capacity limit. Beyond that point additional concurrency does not produce additional work completed; requests simply queue, so each one waits longer. That plateau is the saturation point and it is the most useful single number from a stress test. The next question is which resource saturated: CPU, memory, a thread pool, a database connection pool, or a downstream dependency. A flat throughput line with rising response times and stable CPU usually points at a pool limit or a lock rather than raw compute.

Likely follow-up

How would you tell a connection pool limit from a CPU limit?

Q70SeniorAnalysis

How do you identify a memory leak from a soak test?

What they are assessing

Whether you know what to look at over time.

Model answer

Run at moderate steady load for several hours and watch the trend rather than the absolute values. A leak shows as heap used after full garbage collection climbing steadily rather than returning to a stable baseline, with garbage collection becoming more frequent and longer, and response times degrading gradually. Eventually you see OutOfMemory or a restart. The key is monitoring post-collection heap, because total heap sawtooths normally and looks alarming when it is fine. Connection and file handle counts should be watched the same way.

Q71SeniorAnalysis

Your test shows a high error rate only above a certain concurrency. How do you investigate?

What they are assessing

Structured investigation.

Model answer

First establish what the errors are, since a 500, a 503, a timeout and a connection reset point at very different causes. Check whether the errors are on the load generator side, meaning port exhaustion or timeouts locally, rather than genuine server errors. Then look at server logs and metrics at that concurrency: thread pool queue length, database connection waits, and upstream rate limiting. Then step the load to find the exact threshold, since a sharp cliff usually indicates a fixed limit such as a pool size or a rate limiter, while gradual degradation indicates resource exhaustion.

Q72SeniorAnalysis

How do you know your test environment results mean anything for production?

What they are assessing

Intellectual honesty about extrapolation.

Model answer

You establish the ratio rather than assuming equivalence. Document every difference: instance sizes and counts, database specification and data volume, caching layers, network topology, whether load balancers and CDNs are present. A test environment at a quarter of production capacity with a tenth of the data does not scale linearly, particularly where query performance depends on data volume. I would state findings as relative rather than absolute where the environments differ, reporting that a change improved throughput by thirty per cent rather than claiming production will handle a specific number.

Trap to avoid

Presenting test environment numbers as production capacity. Experienced interviewers will push on this and it is the answer that distinguishes a senior performance engineer.

Q73Mid-levelCI & scripting

How do you run JMeter from a CI pipeline?

What they are assessing

Whether performance testing is automated or manual.

Model answer

Run in non-GUI mode with parameters passed as properties, so one JMX serves every environment: jmeter -n -t plan.jmx -l results.jtl -Jhost=$HOST -Jthreads=$THREADS -e -o report. Archive the JTL and the HTML report as build artefacts. Then add a gate: parse the results and fail the build if the error rate or a percentile exceeds a threshold, which can be done with the JMeter Maven plugin, the Jenkins Performance plugin, or Taurus with pass-fail criteria. Without a gate the pipeline produces reports nobody reads.

Likely follow-up

What threshold would you gate on, and how would you avoid false failures?

Q74Mid-levelCI & scripting

What is Taurus and why might you use it with JMeter?

What they are assessing

Awareness of the wider tooling.

Model answer

Taurus is an open source wrapper that lets you define a test in YAML and run it against several engines including JMeter, Gatling and Locust. Its value with JMeter is a much simpler configuration format, built in pass-fail criteria that make CI gating straightforward, consolidated reporting, and the ability to run an existing JMX while adding those capabilities around it. It also handles installing the tool and plugins, which removes a class of environment problems from the pipeline.

Q75SeniorCI & scripting

Should performance tests run on every commit?

What they are assessing

Proportionate automation.

Model answer

Not the full load test, because it is too slow and too noisy on shared infrastructure to gate a commit. A sensible layering is a short smoke performance test on every merge, running a small number of threads for a couple of minutes purely to catch a gross regression such as an N plus one query appearing. Then the full load profile nightly or before release on a dedicated environment. Gating a commit on a percentile measured in a shared environment produces flaky failures and the gate gets disabled within a month.

Q76SeniorCI & scripting

How do you version control JMeter test plans sensibly?

What they are assessing

Maintainability of test assets.

Model answer

The JMX is XML and diffs badly, so the discipline is to keep changes small and reviewable rather than reformatting the file. Keep environment configuration in properties files rather than inside the JMX, keep test data in separate CSV files, and keep credentials out entirely. Use Test Fragments and Module Controllers so shared logic is not duplicated across journeys, which reduces the size of each change. Some teams generate the JMX or use Taurus YAML as the source of truth precisely because it reviews better.

Q77Mid-levelTroubleshooting

JMeter throws OutOfMemoryError. What do you do?

What they are assessing

Whether you fix the cause or just raise the heap.

Model answer

Raising heap in the startup script is the immediate step, but the cause is usually one of a few things: listeners retaining samples in memory, particularly View Results Tree; saving response data into the JTL; a very large CSV loaded inappropriately; or too many threads for the machine. I would remove listeners, trim what is saved, and check thread count against available memory, because each thread needs stack and buffers. If it genuinely needs more load than one machine can hold, that is the point at which distributed testing is the answer.

Q78Mid-levelTroubleshooting

Your test reports connection reset or address already in use errors. What is happening?

What they are assessing

Whether you can distinguish generator problems from server problems.

Model answer

Usually ephemeral port exhaustion on the load generator rather than a server fault. Each connection consumes a source port, and ports sit in TIME_WAIT after closing, so a high request rate with short lived connections runs out. The fixes are on the generator: widen the ephemeral port range, reduce TIME_WAIT retention, enable connection reuse with keep-alive so fewer connections are created, and raise the file descriptor limit. The important part is recognising it is the generator, because reporting it as a server defect wastes everyone's time.

Trap to avoid

Reporting it as an application failure. It is one of the clearest signals that a candidate has never run a test at real volume.

Q79Mid-levelTroubleshooting

The script works with one thread but fails with fifty. What are the likely causes?

What they are assessing

Concurrency reasoning.

Model answer

Most often test data: all threads using the same account and colliding on locks or unique constraints, which points at the CSV sharing mode. Then session handling, if a cookie manager is missing or scoped so threads share a session. Then correlation that happened to work once but extracts the wrong occurrence under concurrency. Then genuine application concurrency defects, which is a finding rather than a problem. And rate limiting on the target, which returns 429 and looks like failure. I would work that list in order because the first two account for most cases.

Q80SeniorTroubleshooting

Response times are good but throughput is far below target. What do you check?

What they are assessing

Whether you suspect the generator.

Model answer

This pattern usually means the load generator is not producing the intended rate rather than the system being fast. I would check generator CPU and memory during the run, look for expensive elements such as BeanShell scripting, regex assertions or listeners, and verify the timers: a Constant Throughput Timer can only slow things down, and with too few threads the target rate is unreachable. Then check whether threads are actually running by looking at active thread counts over time, since a ramp-up longer than the test duration means full load was never reached.

Q81SeniorTroubleshooting

How do you prove a performance problem is in the application rather than the network or the test?

What they are assessing

Isolation method.

Model answer

By eliminating layers. Compare connect time, latency and elapsed time to see whether the delay is in connection establishment, server processing or transfer. Run the same request from a machine adjacent to the server to remove the network path. Check the server's own timing, through application logs or APM, and compare it with what JMeter measured: a large gap points at network or queueing outside the application. Run the load generator against a trivial static endpoint to confirm the generator and path are capable of the rate. Each step removes a candidate.

Q82LeadTroubleshooting

The business wants a performance sign-off but there is no defined SLA. How do you proceed?

What they are assessing

Leadership when requirements are missing.

Model answer

I would not invent a threshold and sign against it. Instead I would establish a baseline from current production behaviour, since whatever users experience today is the de facto standard, and propose targets derived from it plus known business context such as an expected campaign volume. Then get those agreed in writing before testing, because a target agreed afterwards is negotiated against the result. If agreement is not possible in the time available, I would report findings as observations with the baseline comparison and state explicitly that no pass or fail judgement can be made without an agreed target.

Likely follow-up

What would you use as a baseline if the feature is entirely new?

Where Interviews Are Won

What JMeter interviews actually separate on

Anyone can describe a Thread Group. These four areas are where the interview is decided, and all four come from having run a test at real volume.

Correlation, not recording

A recorded script fails on second run. Whether you reach for a Boundary Extractor or a regex, and why, says how much scripting you have actually done.

Knowing the generator lies

Connection reset and port exhaustion are load generator problems, not application defects. Reporting them as bugs is the clearest inexperience signal.

Percentiles over averages

Reporting a mean response time invites the follow-up about what the slowest ten per cent experienced. Lead with the ninety-fifth and ninety-ninth.

Open versus closed load

JMeter defaults to a closed model where slowness reduces throughput. Knowing when you need arrival-rate load instead is a senior-level distinction.

Who Wrote This

Written by engineers who run these tests

This bank was written and reviewed by QAble performance engineers who build and run JMeter tests on client systems, including the parts that go wrong: BeanShell assertions capping throughput, CSV sharing modes producing five hundred users logged in as the same account, and soak tests that fail at exactly one hour because nobody handled token expiry.

Answers are pitched at the level marked on each question, and where JMeter has a limitation we say so rather than working around it in the answer. Performance strategy that is not JMeter specific lives in the performance testing bank. If you think an answer here is wrong, we would genuinely like to hear it.

Tell us what we got wrong

Need the load test run for you?

QAble builds and runs performance tests on JMeter, including workload modelling from production data and the server-side analysis that explains the numbers.

Performance and load testing services

More question banks

View all

Software testing interview questions

Question bank
82 questions for freshers through to lead, across fundamentals, the testing lifecycle, test design technique, defect management, agile practice and strategy.

ETL testing interview questions

Question bank
82 questions across warehouse modelling, slowly changing dimensions, source to target validation, incremental loads and the SQL that verifies them.

TestNG interview questions

Question bank
82 questions across annotations and execution order, data providers and factories, groups, dependencies, parallel execution, listeners and the suite XML.

Tosca interview questions

Question bank
82 questions across modules and scanning, TestCase Design, reusable blocks, buffers and expressions, distributed execution and risk based testing.

Postman interview questions

Question bank
82 questions across variable scopes and precedence, scripting and chaining, assertions and schema validation, authentication, data driven runs and Newman in CI.

Cucumber interview questions

Question bank
82 questions across BDD practice, Gherkin, step definitions and expressions, hooks, tags, data tables, shared state, parallel runs and the anti-patterns.

Database testing interview questions

Question bank
82 questions across schema and constraints, verification SQL, data integrity, transactions and isolation, indexes, migrations, security and NoSQL.

Appium interview questions

Question bank
82 questions across architecture, capabilities, locator strategies, drivers, gestures, hybrid contexts, parallel execution and troubleshooting.

Manual testing interview questions

Question bank
65 questions across fundamentals, test design, defect management, agile, scenarios and lead-level strategy, with model answers and follow-ups.

Selenium interview questions

Question bank
50 questions across WebDriver architecture, locators, waits and flakiness, interactions, framework design, Grid and CI, with model answers and follow-ups.

Playwright interview questions

Question bank
34 questions across architecture, locators, auto-waiting, assertions, fixtures, network mocking, tracing and parallelism.

API testing interview questions

Question bank
42 questions across HTTP semantics, schema validation, authentication, API security, tooling, contract testing and performance.

Automation testing interview questions

Question bank
30 tool-agnostic questions on what to automate, framework design, flakiness, CI/CD, test data, metrics and ROI.

SDET interview questions

Question bank
30 questions across coding, data structures, framework and system design, CI/CD, testability and quality strategy.

Preparing for interviews, or need a load test that finds the real limit?

QAble runs performance engineering for products under real traffic, with ISTQB-certified engineers. Start with a free QA audit.

Talk to QA Advisor