Automation Testing Interview Questions for 1 Year Experience
40 questions with answers for candidates with 1 year of experience — 11 easy, 29 medium.
What interviewers expect: 1 year experience
With one year, interviewers expect you to have written real tests in an existing framework. Be ready to explain the framework you used, how you handled waits, frames and windows, how you ran tests with Maven and how you reported bugs. Expect a simple coding question and a basic REST Assured or Postman question.
This set is weighted towards Core Java for Testers (8), Selenium WebDriver (6), REST Assured (5), Page Object Model (5).
Explaining your project framework Handling tricky Selenium elements Maven commands and testng.xml Basic API testing
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
What are Cucumber Expressions and how do they differ from regular expressions?
Cucumber Expressions are the default, simpler way to match steps, using parameter types like {int}, {string}, {word} and {float}. For example "I add {int} items" captures a number and converts it to an Integer automatically. Regular expressions are still supported and offer more control, but are harder to read. Teams usually prefer Cucumber Expressions and define custom parameter types for domain values.
02
You configured 50 parallel threads but only 8 tests run at a time on the Grid. Why?
The Grid only has 8 free slots, so the other requests wait in the New Session Queue. Total parallelism equals nodes multiplied by max sessions per node, not the TestNG thread count. Check the Grid UI for slot count. To run more, scale the node containers, raise max sessions if hardware allows, or use a larger grid. Otherwise reduce threads to match slots so waiting requests do not time out.
03
What is the difference between @Test(priority) and dependsOnMethods in TestNG?
priority only orders tests; a lower number runs first, and a failed test does not stop the others. dependsOnMethods creates a real dependency: if the parent test fails, dependent tests are skipped. Both make tests order-dependent, which hurts parallel runs and isolation, so use them sparingly. Prefer independent tests with their own setup.
04
Write an XPath for a button with the text "Login".
Type the text with sendKeys, wait for the suggestion list with visibilityOfAllElementsLocatedBy, then find the option whose text matches the required value and click it. Avoid selecting by index because suggestion order may change. If the list is virtualised, type more characters to narrow results. Verify the selected value in the input afterwards.
08
How do you start a standalone Chrome container and run your tests against it?
Run docker run -d -p 4444:4444 -p 7900:7900 --shm-size=2g selenium/standalone-chrome:latest, preferably with a pinned version tag instead of latest. It starts a mini Grid with one Chrome node. Point RemoteWebDriver to http://localhost:4444 with ChromeOptions and the tests run inside the container. Port 7900 lets you watch through noVNC. Stop it with docker stop when finished, or use --rm so it is removed automatically.
09
Why is XPath slow in Appium and what should you use instead?
For every XPath query Appium must fetch the full page source of the app, convert it into an XML document and then evaluate the expression, which can take seconds on large screens and is even slower on iOS. Index-based XPath also breaks when layouts change. Use accessibility id first, then resource-id, Android UiAutomator selectors or iOS predicate strings and class chains, which are evaluated natively on the device and are much faster.
final makes a variable, method or class unchangeable; finally is a block that always runs after try-catch; finalize is a deprecated method called before garbage collection.
11
What is the difference between @BeforeTest and @BeforeMethod?
Situation: our developers were in another time zone and test failures waited a day for replies. Task: reduce delays. Action: I wrote clear failure reports with screenshots, logs and steps, recorded short videos for complex issues, and set a fixed 30-minute overlap call twice a week. Result: turnaround on defects dropped from two days to about one, and fewer issues bounced back.
17
What is the difference between an array and an ArrayList?
Log the full response with then().log().all() to see the actual body. Common causes are a wrong JSON path, such as missing a wrapper like data, the field being in an array needing an index, a different content type like XML or HTML error page, or the field name having different case. Fix the path, and add a schema check so structure changes are caught clearly.
20
How do you test a responsive page in a mobile viewport using Selenium?
For layout checks you can set the window size, like driver.manage().window().setSize(new Dimension(390, 844)). For closer emulation in Chrome use mobile emulation in ChromeOptions: options.setExperimentalOption("mobileEmulation", Map.of("deviceName", "Pixel 7")), which also sets the user agent, pixel ratio and touch events. This catches responsive layout bugs quickly, but it is not a replacement for testing on real mobile browsers.
21
How do you make page objects work with dynamic locators, such as a row containing a given name?
Write a method that builds the locator from a parameter, for example private By rowFor(String name) { return By.xpath("//tr[td[normalize-space()='" + name + "']]"); }, and expose actions like deleteUser(name). Keep the template in the page class, not in tests. Escape quotes if names may contain them, and prefer CSS with data attributes when the application provides them.
POM adds upfront design effort and extra classes, which can feel heavy for tiny projects. Poorly designed page objects become large god classes, mix assertions with actions, or use deep inheritance chains that are hard to follow. It also does not solve flaky waits or bad test data by itself. Good conventions, components and code reviews are needed to get its benefits.
23
A login action can lead either to the dashboard or to an error message. How should the page object method return?
Make the outcome explicit with separate methods instead of one method guessing. For example loginAs(user) returns DashboardPage for valid credentials, while loginExpectingError(user) returns the same LoginPage so the test can check the error. Each method waits for its expected page and fails clearly if it does not appear. This keeps tests readable and avoids returning a generic Object or checking types in tests.
24
What is correlation in JMeter and why is it needed?
Correlation means capturing dynamic values from one response and passing them into later requests. Session ids, CSRF tokens, auth tokens and order ids change every run, so a recorded script with hard-coded values fails on replay. In JMeter you use post-processors such as JSON Extractor, Regular Expression Extractor or CSS Selector Extractor to save the value into a variable, then reference it as ${token} in later headers or bodies.
25
Tests run fine on Chrome but fail on Firefox at the same step. How do you investigate?
Rerun on Firefox with screenshots and logs. Common causes are timing differences, different default window sizes, unsupported CSS or JavaScript behaviour, alerts handled differently, or a driver version mismatch. Compare the DOM in both browsers at that step. Fix by using explicit waits, setting window size, and reporting genuine browser bugs to developers.
26
Your API tests started failing with SSL handshake errors on a new test server. What do you do?
First confirm the server uses a self-signed or internal certificate. The proper fix is to import the company CA certificate into a truststore and configure REST Assured with trustStore(path, password). As a temporary measure in a test environment only, relaxedHTTPSValidation() skips checks. Never use relaxed validation against production, and raise the certificate issue with the infra team.
27
Write a REST Assured test that deserializes a response into a POJO.
Pre-processors run before a sampler, for example a JSR223 PreProcessor that builds a signature or timestamp, or User Parameters that set values per thread. Post-processors run after a sampler and usually extract data from the response, such as JSON Extractor, Regular Expression Extractor or Boundary Extractor, storing it as a variable for later requests. Their scope depends on where they sit in the tree, so place them as children of the right sampler.
29
Write a simple page object class for a login page.
public class LoginPage {
private final WebDriver driver;
private final By user = By.id("username");
private final By pass = By.id("password");
private final By submit = By.cssSelector("button[type='submit']");
public LoginPage(WebDriver driver) { this.driver = driver; }
public HomePage loginAs(String u, String p) {
driver.findElement(user).sendKeys(u);
driver.findElement(pass).sendKeys(p);
driver.findElement(submit).click();
return new HomePage(driver);
}
}
30
Describe a time you improved the maintainability of an automation framework.
Situation: our suite had duplicated locators across 200 tests and each UI release broke many of them. Task: reduce maintenance effort. Action: I introduced page objects and components for the top ten pages, added data-testid attributes with the developers and wrote a short guide. Result: fixing a UI change went from half a day to under an hour, and new joiners wrote tests faster.
31
What does SE_NODE_MAX_SESSIONS control in the Docker Selenium images?
It sets how many browser sessions a node container can run at once. The default is one, which gives the best isolation and stability. Increasing it lets one container run several browsers in parallel, but you must also set SE_NODE_OVERRIDE_MAX_SESSIONS to true and give the container enough CPU, memory and shared memory. Many teams keep one session per container and scale the number of containers instead.
32
What is the difference between extract().response() and extract().path()?
extract().response() returns the full Response object, so you can read status, headers, cookies, body as string, and use jsonPath() several times. extract().path("field") returns one value directly from the body. Use path() when you need a single value like an id or token, and response() when you need many details or want to log the response.
33
Difference between an abstract class and an interface?
An abstract class can hold state and concrete methods; an interface defines a contract (with default methods since Java 8). A class extends one abstract class but can implement many interfaces.
34
Describe a time you convinced developers to fix a problem found by automation.
Situation: an API test kept failing intermittently and developers called it a test issue. Task: prove or disprove it. Action: I collected logs from ten failures, showed the same race condition in the order service with request IDs, and reproduced it with a small parallel script. Result: developers fixed a real concurrency bug before it reached customers, and trust in the suite improved.
35
An element is visible in Appium Inspector but your test throws NoSuchElementException on the device. What do you check?
First check timing: the screen may still be loading, so add an explicit wait for presence. Then check context: in a hybrid app the element may be in a webview while you are in NATIVE_APP. Confirm the locator matches exactly, including package prefix in resource-id. The element may be off screen in a list, so scroll first. Also check that the Inspector session used the same app build, language and device size as the test.
36
What are the standalone, hub and node, and distributed modes of Selenium Grid 4?
Standalone runs every Grid component and a local node in a single process, which suits a laptop or a single container. Hub and node mode runs the router, distributor, queue and session map together as the hub, with separate node processes registering to it, which is the usual team setup. Fully distributed mode runs each component separately, often on Kubernetes, for very large grids that need independent scaling and high availability.
JsonPath (Groovy GPath syntax in REST Assured) navigates JSON with dot notation. For {"data":{"items":[{"price":10}]}} you use data.items[0].price. You can also filter: data.items.findAll { it.price > 5 }.name returns names of items costing more than 5. Use it inside body() assertions or via response.jsonPath().getList("data.items.name") to extract values for further checks.
It uses the key's hashCode to find a bucket and equals to resolve collisions, giving O(1) average lookups; Java 8 converts long buckets into trees.
Frequently asked questions
What is asked in Automation Testing interviews for 1 year of experience?
With one year, interviewers expect you to have written real tests in an existing framework. Be ready to explain the framework you used, how you handled waits, frames and windows, how you ran tests with Maven and how you reported bugs. Expect a simple coding question and a basic REST Assured or Postman question.
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 1 year of experience?
Focus first on Explaining your project framework, Handling tricky Selenium elements, Maven commands and testng.xml, Basic API testing.