Skip to content

Automation Testing Interview Questions for 7 Years Experience

40 questions with answers for candidates with 7 years of experience — 19 medium, 21 hard.

What interviewers expect: 7 years experience

With seven years, roles are usually lead or senior SDET. Expect questions on test strategy across multiple teams, choosing tools, scaling suites across services, environment management and quality metrics. Interviewers want evidence that you have improved delivery speed and quality at team level, not only written good tests.

This set is weighted towards Git, Maven and Jenkins (6), Selenium WebDriver (6), Core Java for Testers (5), API Testing and CI/CD (5).

Multi-team test strategy Tool evaluation and migration Quality metrics and reporting Stakeholder management
Solved at this levelStart practicing
3 QUESTIONS FREESign up to unlock the full question bank and track your progress.Unlock every question and answer, then continue practising company-wise and package-wise.
3 questions free Unlock the rest in seconds
01

How do you capture a screen recording of a mobile test and attach it on failure?

Save to ▾
Show answer
// Start before the test, stop and save only if it fails driver.startRecordingScreen(); // ... test steps ... String base64 = driver.stopRecordingScreen(); if (result.getStatus() == ITestResult.FAILURE) { byte[] video = Base64.getDecoder().decode(base64); Files.write(Paths.get("target/videos/" + result.getName() + ".mp4"), video); }
02

Mobile tests pass on the emulator but fail on a low-end real device. How do you investigate?

Save to ▾
Show answer
Low-end devices are slower, so fixed waits and short timeouts expire before screens render. Replace sleeps with explicit waits and increase timeouts sensibly. Check for vendor-specific pop-ups, battery optimisation dialogs or different keyboards on that brand. Compare screen size and resolution, since coordinate-based taps break. Collect device logs with adb logcat and screen recordings to see what the app was doing. Also check whether the app crashed due to low memory.
03

How do you store passwords and tokens safely in Jenkins?

Save to ▾
Show answer
Use the Jenkins Credentials store and bind them in the pipeline with withCredentials or the credentials() helper in environment blocks. Jenkins masks the values in console logs. Never hard-code secrets in the Jenkinsfile, pom.xml or properties files committed to Git. For larger setups, integrate a vault service and give each job only the credentials it needs.
04

Your test framework leaks memory during long runs and Jenkins agents crash. How do you investigate?

Save to ▾
Show answer
Check whether drivers are always quit, ThreadLocal values are removed, and static lists or maps keep growing, such as collecting screenshots or response objects. Enable heap dumps with -XX:+HeapDumpOnOutOfMemoryError and analyse with a tool like VisualVM or Eclipse MAT to see which objects hold memory. Fix the leak and tune Surefire's forked JVM memory with argLine if needed.
05

Your code review shows a test class with 30 copy-pasted lines in every method. How do you refactor it with Java features?

Save to ▾
Show answer
Extract repeated steps into private helper methods or a page object, move common setup into @BeforeMethod, and use a DataProvider when only data differs. If the repeated code differs only in a small action, pass that action as a lambda, such as a Consumer<WebDriver>. Rerun the tests after each small refactor to confirm behaviour is unchanged.
06

What is the New Session Queue in Selenium Grid 4 and what happens when all slots are busy?

Save to ▾
Show answer
When a test requests a session and no node slot matches, the request waits in the New Session Queue instead of failing immediately. The distributor picks it up when a matching slot frees. If it waits longer than the session request timeout, which is 300 seconds by default, the client gets a SessionNotCreatedException. Tuning this timeout and matching thread count to slot count prevents long waits and timeouts in CI.
07

Your pipeline runs the full test suite on every commit, even for documentation-only changes. How do you optimise it?

Save to ▾
Show answer
Use path filters so commits that touch only docs or markdown skip the test stages. For code changes, map modules to their test suites and run only the affected ones on pull requests, with the full regression on merge to main or nightly. Cache Maven dependencies and Docker layers. Keep a fast smoke stage first so failures appear early. Track pipeline time as a metric so the optimisation does not quietly regress.
08

How do you handle dynamic elements whose ids change?

Save to ▾
Show answer
Use CSS or XPath with contains(), starts-with() or stable attributes, relative axes, or data-test attributes agreed with developers.
09

A file download test passes locally but fails in a Grid node. How do you approach it?

Save to ▾
Show answer
The file is saved on the remote node, not the machine running the test, so the test cannot find it locally. Options are enabling Selenium Grid's managed downloads with se:downloadsEnabled and fetching the file through the Grid API, sharing a mounted volume with the container, or verifying the download by requesting the file URL with an HTTP client and checking status, size and type.
10

What is the Optional class in Java and where is it useful in test code?

Save to ▾
Show answer
Optional is a container that may or may not hold a value, introduced in Java 8 to avoid returning null. In test code it suits lookups that can legitimately find nothing, such as finding a row in a table or reading an optional config key. Callers use orElse, orElseThrow or ifPresent instead of null checks. For example, findRowByName(name).orElseThrow(() -> new AssertionError(name + " not found")) gives a clear failure message.
11

How do you handle test data cleanup in Cucumber scenarios?

Save to ▾
Show answer
Create data in Given steps through APIs, record the created IDs in the scenario context, and delete them in an @After hook, which runs even when the scenario fails. Use unique names with a timestamp or UUID to avoid clashes in parallel runs. For shared environments, add a nightly cleanup job for leftover data tagged with a test prefix.
12

How do you publish Allure or Extent reports from Jenkins?

Save to ▾
Show answer
For Allure, install the Allure Jenkins plugin, configure the commandline tool, and add allure results: [[path: 'target/allure-results']] in the post always block. For Extent, archive the HTML file and use the HTML Publisher plugin to show it as a build link. Keep report history per build and share the link in failure notifications.
13

How do you prioritise when the release is tomorrow and many automated tests are failing?

Save to ▾
Show answer
Situation: 60 tests failed the evening before a release. Task: give a clear go or no-go input. Action: I grouped failures by root cause, found most came from one changed locator and one test data issue, fixed those first, and manually checked the three failures that pointed to real bugs. Result: I gave the lead a short report in two hours and one real defect was fixed before release.
14

How do you handle pressure when management wants 100 percent automation coverage?

Save to ▾
Show answer
Situation: leadership set a goal to automate every manual test case. Task: set realistic expectations. Action: I analysed the cases, showed that some were one-time, visual or exploratory, and proposed covering critical and repetitive flows first with a clear ROI estimate. Result: we agreed on 80 percent of regression cases, delivered it on time, and kept exploratory testing manual.
15

Your Jenkins test stage marks the build green even though tests failed. Why?

Save to ▾
Show answer
Possibly testFailureIgnore is set to true in Surefire, the shell step uses || true, or the script swallows Maven's exit code. Sometimes tests catch exceptions and never fail. Check the console log for Maven's BUILD result and Surefire summary. Fix the configuration so failures produce a non-zero exit, or use junit publishing to mark the build unstable when tests fail.
16

Write Java code to start an Android Appium session using UiAutomator2Options.

Save to ▾
Show answer
UiAutomator2Options options = new UiAutomator2Options() .setPlatformName("Android") .setAutomationName("UiAutomator2") .setDeviceName("Pixel_7_API_34") .setApp(System.getProperty("user.dir") + "/apps/shop.apk") .setAutoGrantPermissions(true) .setNewCommandTimeout(Duration.ofSeconds(120)); AndroidDriver driver = new AndroidDriver( new URL("http://127.0.0.1:4723"), options); driver.manage().timeouts().implicitlyWait(Duration.ZERO); // use explicit waits in tests driver.quit();
17

Response time grows slowly over a six-hour soak test while load stays constant. What does it suggest?

Save to ▾
Show answer
A steady rise under constant load usually indicates a resource leak, such as memory not being freed, growing caches, unclosed database connections or threads, or log and temp files filling disk. Check heap usage and garbage collection trends, connection pool counts and open file handles over time. A heap dump comparison can show which objects grow. Share the evidence with developers, since such issues rarely appear in short tests.
18

Write a JSR223 Groovy PostProcessor that reads a JSON response and stores a value as a JMeter variable.

Save to ▾
Show answer
// JSR223 PostProcessor, language: groovy import groovy.json.JsonSlurper def body = prev.getResponseDataAsString() def json = new JsonSlurper().parseText(body) if (json?.orderId) { vars.put('orderId', json.orderId.toString()) } else { prev.setSuccessful(false) prev.setResponseMessage('orderId missing in response') }
19

What is a Maven multi-module project and when would you use it for automation?

Save to ▾
Show answer
A parent pom lists modules that share dependency versions through dependencyManagement and plugins through pluginManagement. In automation you might have core-framework, ui-tests, api-tests and performance modules. Teams can run or release modules separately, and shared code lives in one place. It is worth it when several teams or test types share the same framework.
20

Tell me about a time you mentored a junior tester in Java and automation.

Save to ▾
Show answer
Situation: two new joiners from manual testing struggled with framework code. Task: help them contribute within a sprint. Action: I paired with them daily for an hour, gave small tasks like adding a locator then a full test, and reviewed their code with explanations rather than rewriting it. Result: within three weeks both were writing tests independently, and our automation backlog shrank.
21

Response times are fine with 50 users, but at 300 users the error rate jumps to 20 percent. How do you analyse it?

Save to ▾
Show answer
Look at which requests fail and their error codes: 503 or 504 suggest overloaded servers or gateways, connection refused points to exhausted connection pools or ports. Find the user count where errors start by running a stepped ramp-up. Correlate with server metrics such as CPU, thread pools, database connections and GC. Confirm the load generator itself was not overloaded. Report the saturation point and the bottleneck with evidence, not just the error percentage.
22

What is the LoadableComponent pattern in Selenium?

Save to ▾
Show answer
LoadableComponent is a Selenium support class that standardises how a page object ensures it is loaded. You extend it and implement load(), which navigates to the page, and isLoaded(), which throws an Error if the page is not ready. Calling get() checks isLoaded and calls load only if needed, then checks again. It gives a consistent, self-verifying way to open pages and fails fast with a clear message.
23

How do you test an API that supports multiple versions at the same time?

Save to ▾
Show answer
First learn how versions are selected: URL path like /v1 and /v2, a header, or a query parameter. Keep a request specification per version and run the shared contract tests against each supported version, plus version-specific tests for new fields or changed behaviour. Check that old versions still return their original response shape so existing clients do not break, and that deprecated versions send the agreed deprecation headers or errors.
24

How do you create a custom parameter type in Cucumber?

Save to ▾
Show answer
Annotate a method with @ParameterType, giving a regex and returning a domain object. For example @ParameterType("admin|manager|viewer") public Role role(String name) { return Role.valueOf(name.toUpperCase()); } lets you write steps like "I log in as {role}". It keeps conversion logic in one place, makes steps type-safe and gives clearer errors when an invalid value is used.
25

Tell me about a time a performance test found a serious issue before release.

Save to ▾
Show answer
Situation: a new search feature passed functional testing. Task: run a load test at expected peak traffic. Action: at 150 users the 95th percentile jumped from under one second to nine seconds. I correlated it with database metrics, found a full table scan caused by a missing index and shared the query and graphs with developers. Result: after the fix, response time stayed under 800 milliseconds at 400 users, and release went ahead on time.
26

What metrics do you track for test automation in CI/CD?

Save to ▾
Show answer
Useful metrics are pass rate per run, flaky test rate, average and slowest test duration, pipeline time to feedback, defects caught by automation versus escaped to production, automation coverage of critical flows and time spent on maintenance. Trend them over weeks. Metrics should drive action, such as fixing the top flaky tests, not just fill dashboards.
27

What is polymorphism and how does it show up in Selenium?

Save to ▾
Show answer
One interface, many forms. WebDriver driver = new ChromeDriver() lets the same test code run on any browser class that implements WebDriver.
28

Your UI regression suite has 15 percent flaky failures. How would you bring it under control?

Save to ▾
Show answer
Measure flakiness per test over many runs and fix the worst first. Typical fixes are replacing sleeps with explicit waits, creating independent test data via API, avoiding shared logins, using stable locators, isolating parallel drivers and stubbing unstable third parties. Quarantine known flaky tests into a separate job so they do not block releases, and set a target like under 2 percent.
29

What is the difference between noReset and fullReset in Appium?

Save to ▾
Show answer
By default Appium clears app data between sessions but keeps the app installed. noReset set to true keeps app data and login state, which speeds up tests but can leak state between them. fullReset set to true uninstalls and reinstalls the app, giving the cleanest state but adding time. A common approach is noReset for fast suites with explicit cleanup in the test, and fullReset only for first-launch or onboarding scenarios.
30

Tests pass locally but fail on Jenkins. Why?

Save to ▾
Show answer
Headless mode or screen resolution, timing issues, environment data, missing dependencies, browser–driver version mismatch or parallel conflicts. Check logs and failure screenshots and make waits robust.
31

What does alwaysRun = true do in TestNG?

Save to ▾
Show answer
On a configuration method like @AfterMethod(alwaysRun = true), it makes the method run even when tests fail or are skipped, or when groups filter would exclude it. It is essential for cleanup such as driver.quit(). On a test with dependsOnMethods, alwaysRun = true runs it even if the dependency failed. Missing alwaysRun on teardown is a common cause of leftover browsers in CI.
32

How do you calculate automation ROI?

Save to ▾
Show answer
Compare effort saved by running automated tests repeatedly against the cost of building and maintaining scripts, counting execution time, defects found earlier and release speed.
33

How do you set up distributed load testing in JMeter?

Save to ▾
Show answer
One controller machine coordinates several worker machines that generate the load. On each worker start jmeter-server with the same JMeter and Java versions, place CSV files locally and open the RMI ports in the firewall. On the controller list the workers in remote_hosts in jmeter.properties, or pass -R host1,host2, and run in non-GUI mode with -r or -R. Remember that thread counts multiply per worker, so 100 threads on 4 workers gives 400 users.
34

How do you run tests on multiple browsers in parallel in Jenkins?

Save to ▾
Show answer
Use a parallel block in the pipeline with a stage per browser, or a matrix directive with axis BROWSER values chrome, firefox and edge. Each branch runs mvn test -Dbrowser=${BROWSER}, ideally against Selenium Grid or containers so agents do not need local browsers. Publish results per branch with clear names so failures show which browser broke.
35

How do you share state between step definition classes in Cucumber Java?

Save to ▾
Show answer
Use dependency injection. With cucumber-picocontainer (or Spring/Guice), create a context class such as TestContext holding the driver, page objects and scenario data, and add it as a constructor parameter in every step class. Cucumber creates one instance per scenario and injects the same object everywhere, so state is shared within a scenario but never leaks between scenarios. Avoid static fields because they break parallel runs.
36

Should every test in a project be written in Cucumber?

Save to ▾
Show answer
No. Cucumber adds a translation layer, so it is worth it for business-facing acceptance tests that stakeholders discuss. Unit tests, low-level API checks, data validations and technical edge cases are faster to write and maintain directly in TestNG or JUnit. A healthy project uses Cucumber for a focused set of key behaviours and plain code tests for everything else.
37

What can testers do with Chrome DevTools Protocol support in Selenium 4?

Save to ▾
Show answer
Selenium 4 exposes CDP through the DevTools interface and the newer cross-browser BiDi APIs. Testers can capture console logs and JavaScript errors, intercept or mock network requests, emulate slow networks or geolocation, add basic authentication headers and collect performance metrics. CDP is Chromium-specific and tied to browser versions, so for long-term code prefer WebDriver BiDi features where available, and keep CDP usage behind a small helper class.
38

What is the difference between a declarative and a scripted Jenkins pipeline?

Save to ▾
Show answer
Declarative pipelines use a fixed structure: pipeline, agent, stages, steps, post, with built-in options and validation; they are easier to read and are the recommended default. Scripted pipelines use node blocks and full Groovy, giving more flexibility for complex logic but making them harder to maintain. Most test pipelines use declarative syntax with small script blocks only where needed.
39

What is Dynamic Grid in Selenium 4?

Save to ▾
Show answer
In Dynamic Grid the node does not run browsers itself. It is configured with a Docker socket and a list of browser images, and for each new session it starts a fresh browser container, runs the test and then removes the container. Every test gets a clean browser, and capacity grows without pre-starting many nodes. It can also record video per session. The trade-off is container start-up time for each session.
40

What is consumer-driven contract testing with Pact?

Save to ▾
Show answer
In consumer-driven contracts, the consumer's tests record the requests it makes and the responses it expects into a pact file. The provider runs a verification against that pact to prove it still meets every consumer's needs. A Pact Broker stores contracts and can block deployments that break a consumer. It catches integration breaks without needing all services deployed together.

Frequently asked questions

What is asked in Automation Testing interviews for 7 years of experience?

With seven years, roles are usually lead or senior SDET. Expect questions on test strategy across multiple teams, choosing tools, scaling suites across services, environment management and quality metrics. Interviewers want evidence that you have improved delivery speed and quality at team level, not only written good tests.

How many questions should I practise before a Automation Testing interview?

Work through all 40 questions here, then the company-wise sets for the employers you are targeting. Quality matters more than count: be able to explain why each answer is right.

Which topics matter most for 7 years of experience?

Focus first on Multi-team test strategy, Tool evaluation and migration, Quality metrics and reporting, Stakeholder management.