Master Automation Testing: Frameworks & Tools
Automation testing is a software testing technique that performs using special automated testing software tools to execute a test case suite. This guide covers Selenium WebDriver, Java Coding, BDD Cucumber, and Mobile Automation.
Learning Roadmap
- Java Basics for Testers
- Selenium WebDriver Core
- Page Object Model (POM)
- TestNG & Maven Integration
- CI/CD with Jenkins
Pro Interview Tips
- Explain Exceptions clearly
- Master Dynamic XPath logic
- Know your Framework structure
- Practice Logical Java programs
Curated & Reviewed by Rammehar Dhiman, Senior QA Automation Engineer
1. Why Automation Testing?
Automation testing is essential for Regression Testing and Cross-Browser Testing. It saves time, increases test coverage, and ensures accuracy by removing human fatigue. In modern DevOps environments, automation is a must-have skill for every QA engineer.
Tools You Must Know
Beyond Selenium, industry leaders are now looking for expertise in Playwright, Cypress, and Appium for mobile testing. Always keep your toolkit updated!
📌 Automation Testing (Selenium, Framework & Scenarios)
1. What is Selenium?
Hinglish: Selenium ek open-source automation tool hai jo web applications ko automate karne ke liye use hota hai.
2. What are the components of Selenium?
- Selenium IDE: Record and playback tool
- Selenium WebDriver: Automates browsers using programming languages
- Selenium Grid: Runs tests on multiple machines and browsers
- Selenium RC: Older version (now deprecated)
Hinglish: Selenium ke 4 main components hote hain: IDE, WebDriver, Grid, aur RC.
3. What is WebDriver in Selenium?
Hinglish: WebDriver ek API hai jo browser ko control karke automation perform karta hai.
4. What are locators in Selenium?
Hinglish: Locators ka use web elements ko find karne ke liye hota hai.
5. What is XPath in Selenium?
driver.findElement(By.xpath("//input[@id='username']"));Hinglish: XPath ek path expression hai jo HTML structure me element locate karta hai.
6. Difference between Absolute and Relative XPath?
- Absolute XPath: Starts from the root node (/html/body/...). Highly unstable as any small UI change breaks it.
- Relative XPath: Starts from anywhere in the DOM (//tagname[@attr='value']). More stable and widely used.
Hinglish:
- Absolute: Root se start hota hai, thoda change hone par break ho jata hai.
- Relative: Beech se start kar sakte hain, zyada reliable hota hai.
7. How to handle dropdowns in Selenium?
Select sel = new Select(element);
sel.selectByVisibleText("Option");
Hinglish: Dropdowns handle karne ke liye Select
class ka use hota hai.
8. What is Fluent Wait in Selenium?
Hinglish: Fluent Wait har thodi der (polling) me element check karta hai aur error skip kar sakta hai.
9. What is the difference between driver.close() and driver.quit()?
- driver.close(): Closes the current browser window/tab that Selenium is currently controlling.
- driver.quit(): Closes all browser windows and tabs associated with the WebDriver session and ends the session.
Hinglish:
- close(): current tab close karta hai
- quit(): poora browser aur session close karta hai
10. Difference between implicit and explicit waits & Why do we use waits?
| Feature | Implicit Wait | Explicit Wait |
|---|---|---|
| Scope | Global (All elements) | Local (Specific element) |
| Condition | Presence in DOM | Specific conditions (Visibility, Clickable) |
Syntax for Explicit Wait:
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("loginBtn")));
Hinglish: Selenium me waits ka use synchronization
ke liye hota hai, taaki Selenium tab tak wait kare jab tak element visible ya clickable na
ho.
11. Write an XPath for an element and a dynamic table.
- Standard element:
//input[@id='username'] - Locates an input
box using its ID.- Dynamic Table:
//table[@id='empTable']//tr[2]/td[3] - Finds
data from a specific row and column.Hinglish:
- Standard: Yeh XPath ID ke through element locate karta hai.
- Dynamic Table: Yeh table ke particular row aur column ka data find karta hai.
12. What is an exception in Selenium and what have you faced?
- NoSuchElementException: Element locator is wrong or element is not on page.
- ElementNotInteractableException: Element is hidden or disabled.
- StaleElementReferenceException: Page refreshed after element was found.
- TimeoutException: Wait time exceeded before element appeared.
Hinglish: Exception ek unwanted situation hoti hai jo flow ko stop kar deti hai. Common: Element na mile, refresh ke baad error, wait timeout error.
13. Difference between findElement() vs findElements().
- findElement(): Returns single element, throws NoSuchElementException if not found.
- findElements(): Returns list of elements, returns empty list if not found.
Hinglish: findElement() ek element deta hai (error if not found), findElements() list deta hai (empty if not found).
14. How to handle alerts in Selenium?
Alert alert = driver.switchTo().alert();
System.out.println(alert.getText());
alert.accept(); // click OK
alert.dismiss(); // click Cancel
alert.sendKeys("text"); // enter text
15. Write the syntax for wait and take a screenshot.
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("logo")));
File src = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(src, new File("screenshot.png"));
Hinglish: Yeh pehle element ke visible hone ka wait
karta hai aur phir screenshot leta hai.
16. How do you design a POM (Page Object Model) framework?
Hinglish: POM follow karne se code maintainable, reusable, aur clean banta hai.
Architecture Example:
src/test/java
├── pages
│ ├── LoginPage.java (Locators & login())
│ └── HomePage.java (Locators & logout())
├── tests
│ ├── LoginTest.java (Calls LoginPage methods)
└── base
└── BaseTest.java (Driver setup & teardown)
17. How do you handle the 4th tab when multiple browser tabs are opened?
Set<String> handles = driver.getWindowHandles(); List<String> tabs = new ArrayList<>(handles); driver.switchTo().window(tabs.get(3)); // index 3 = 4th tabHinglish: Hum window handles ko list me store karke required tab ke index par switch karte hain.
18. How would you resolve StaleElementException?
Hinglish: Page refresh hone ke baad element dobara find (re-locate) karo.
19. Explain your roles and responsibilities.
Hindi: "Meri responsibilities hain requirements analyze karna, test cases/scripts likhna, bugs log karna, aur Jenkins ke saath integration karna."
20. Explain your automation project / framework.
Hinglish: Mera project Selenium, Java aur TestNG par based hai. Hum POM follow karte hain aur Extent Reports use karte hain.
Main Components:
- Base Class: Driver setup, browser config, waits.
- Page Classes: Locators and reusable methods.
- Test Classes: Actual test steps.
- Utility Classes: Screenshot, Excel, and Logs.
21. How do you handle iframes in Selenium?
driver.switchTo().frame("id"); // Switch In
driver.switchTo().defaultContent(); // Switch Out
Hinglish: Iframe ke andar jaane ke liye
switchTo().frame() aur bahar aane ke liye defaultContent() use karte hain.
22. Hard Assert vs Soft Assert in TestNG?
- Hard Assert: Stops execution immediately on failure. (
Assert.assertEquals)- Soft Assert: Execution continues; report failures at the end using
assertAll().Hinglish: Hard assert fail hone par test wahi ruk jata hai. Soft assert fail hone par bhi baaki code chalta hai.
23. How to scroll down to a particular element in Selenium?
scrollIntoView(true).WebElement element = driver.findElement(By.id("btn"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
Hinglish: JavaScriptExecutor se page ko kisi unit
element tak scroll kara sakte hain.
24. What is Drag and Drop in Selenium and how do you perform it?
Hinglish: Ek element ko click karke pakadna (drag) aur dusre element par chhod dena (drop).
Drag and Drop Code:
WebElement source = driver.findElement(By.id("draggable"));
WebElement target = driver.findElement(By.id("droppable"));
Actions act = new Actions(driver);
act.dragAndDrop(source, target).perform();
25. How do you handle (manage) Alerts in Selenium?
Hinglish: Alert ek JS browser popup hota hai jise inspect nahi kar sakte, hume
driver.switchTo().alert() use karna padta
hai.Types of Alerts:
- Simple Alert: Only OK button
- Confirmation Alert: OK & Cancel buttons
- Prompt Alert: Textbox + OK/Cancel
Alert alert = driver.switchTo().alert();
alert.accept(); // Click OK
alert.dismiss(); // Click Cancel
System.out.println(alert.getText()); // Read message
alert.sendKeys("Hello"); // Send text to prompt
26. What is Page Factory Concept in Selenium (Using Java)?
@FindBy annotations. It is an
advanced way of implementing Page Object Model (POM).Hinglish: Page Factory Selenium ka ek design pattern hai jo web elements ko
@FindBy annotation se initialize karta
hai.Why use Page Factory?
- Reduces code duplication: Minimal element initialization.
- Improves readability: Clear separation of locators.
- Easy Locators: Locators are managed within annotations.
27. Explain the order of TestNG annotations.
Hinglish: TestNG annotations ka order
@BeforeSuite se start hota hai aur @AfterSuite par end hota
hai.Execution Order:
@BeforeSuite → @BeforeTest → @BeforeClass → @BeforeMethod
↓
@Test
↓
@AfterMethod → @AfterClass → @AfterTest → @AfterSuite
28. What are XPath Axes? Give examples.
Hinglish: XPath Axes element ko relation ke basis par locate karta hai jaise parent-child.
Examples:
//input[@id='email']/parent::div//label[text()='Username']/following-sibling::input
29. What is the Difference Between Cucumber and TestNG?
| Feature | Cucumber | TestNG |
|---|---|---|
| Approach | BDD | TDD |
| Language | Gherkin (Plain English) | Java |
| Usage | Acceptance Testing | Functional/Unit Testing |
English: Cucumber is used for behavior-based testing using plain English, whereas TestNG is used for structured execution and reporting.
Hinglish: Cucumber collaboration ke liye best hai, TestNG complex logic ke liye use hota hai.
30. What is Given, When, Then?
Hinglish: Given, When, Then BDD format hai jo Cucumber me use hota hai.
- Given: Precondition
- When: Action
- Then: Expected result
31. How do you pass test data from Excel to a method?
Hinglish: Hum Apache POI aur DataProvider ka use karke Excel se data method me pass karte hain.
@DataProvider(name="excelData")
public Object[][] getData() {
return new Object[][] {
{"admin","1234"},
{"user","5678"}
};
}
@Test(dataProvider="excelData")
public void loginTest(String user, String pass) {
System.out.println(user + " " + pass);
}
32. Explain BDD (Behavior Driven Development).
Hinglish: BDD ek testing approach hai jisme test cases simple English me likhe jaate hain taaki communication better ho.
33. How do you automate login with username and password?
sendKeys, then click login.Hinglish: Hum locator find karke
sendKeys se data enter karte hain aur click perform karte hain.driver.findElement(By.id("username")).sendKeys("admin");
driver.findElement(By.id("password")).sendKeys("12345");
driver.findElement(By.id("loginBtn")).click();
34. How do you connect and validate database scenarios in your framework?
Hinglish: Hum JDBC se DB connect karte hain aur SQL query se data fetch karke UI se compare karte hain.
35. How do you pass files in your framework? (File Upload)
sendKeys method to upload files
by passing the absolute file path.Hinglish: Hum
sendKeys me file ka path
pass karte hain upload ke liye.driver.findElement(By.id("upload")).sendKeys("C:\\testdata\\file.txt");
36. Explain your TestNG framework.
Hinglish: Mera framework TestNG aur POM par based hai. Isme Maven, Base, Page, aur Test classes ka use hota hai.
37. What is the Difference Between Cucumber and TestNG? (Deep Dive)
English: BDD tool that uses Gherkin (Given/When/Then). Best for collaboration.
Hinglish: Isme scenarios English me likhte hain.
2. What is TestNG?
English: Testing framework for Java for execution and reporting.
@Test
public void loginTest() {
System.out.println("Login Test Executed");
}
3. Comparison Points:| Feature | Cucumber | TestNG |
|---|---|---|
| Purpose | Describe behavior | Execute test cases |
| Readability | Very Easy | Technical |
38. What is POM (Page Object Model)?
Hinglish: Har page ke liye alag class banana aur usme methods likhna POM कहलाता hai.
39. How do you perform parallel execution in Selenium?
parallel
and thread-count in testng.xml.Hinglish: xml file me parallel options set karke hum execution speed badha sakte hain.
<suite name="Suite" parallel="tests" thread-count="2">
40. How do you handle a new window in Selenium?
getWindowHandles() to get IDs and
switchTo().window(ID) to switch.Hinglish: IDs fetch karke specific window ID par switch karte hain.
41. How do you handle mouse hover in Selenium?
moveToElement() method.Hinglish: Actions class ka use karke cursor move karate hain.
42. How do you handle Web Tables in Selenium?
tr) and
columns (td).Hinglish: XPath se logic bante hain:
//table//tr[2]/td[3] code specific cell ke liye.
43. How do you handle keyboard operations in Selenium?
sendKeys().Actions act = new Actions(driver); act.sendKeys(Keys.ENTER).perform();
44. How do you handle double click in Selenium?
doubleClick(element) method of
Actions class.Actions act = new Actions(driver); act.doubleClick(element).perform();
45. How do you clear browser cache in automation?
driver.manage().deleteAllCookies();Hinglish: Saare cookies delete karke cache effect handle karte hain.
46. How do you find XPath of an element?
Hinglish: Element inspect karke relative path banate hain (e.g.,
//input[@id='username']).
47. How do you create a Maven project for Selenium?
pom.xml.Sample pom.xml:
<dependencies>
<!-- Selenium -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.18.1</version>
</dependency>
</dependencies>
48. How do you write a test automation script?
driver.get("https://example.com");
driver.findElement(By.id("user")).sendKeys("admin");
driver.findElement(By.id("login")).click();
49. What is TestNG?
Hinglish: Test cases manage aur execute karne ka modern framework.
50. What are different TestNG annotations?
@BeforeSuite, @BeforeTest, @BeforeClass,
@BeforeMethod, @Test, @AfterMethod,
@AfterClass, @AfterTest, @AfterSuite
51. What is TestNG Suite?
testng.xml) used to
control test execution (parallel, group, listeners).Hinglish: XML file jo batches of tests ko control karti hai.
52. What are waits in Selenium?
Hinglish: Page load hone aur elements appear hone ka wait karne ke liye dynamic mechanism.
53. Difference between Implicit and Explicit Wait.
| Implicit Wait | Explicit Wait |
|---|---|
| Applies globally | Applies to specific element |
| Defined once | Defined for each condition |
| Less flexible | More flexible |
54. If priority is not given in TestNG, how are test cases executed?
Hinglish: Default default alphabet order follow hota hai agar priority mention nahi hai.
55. Explain Hybrid Driven Framework.
Hinglish: Hybrid framework Data Driven, Keyword Driven aur POM ka combination hota hai.
56. How do you find XPath of an element?
1. Right click on element → Click Inspect
2. Check attributes like id, name, class
3. Create XPath:
//input[@id='username']Hinglish: Element par right click karke inspect karo aur attributes (id/name) ke base par XPath banao.
57. How do you extract all links from a webpage?
findElements with the tag name
"a" and iterate to get "href" attributes.List<WebElement> links = driver.findElements(By.tagName("a"));
for(WebElement link : links){
System.out.println(link.getAttribute("href"));
}
Hinglish: "a" tag se findElements
karke loop chalate hain aur attribute fetch karte hain.
58. XPath for "Navigate your next" (Infosys example)
//a[text()='Navigate your next']Hinglish: Hum exact text match ke liye
text() function use karte hain.
59. What is Dynamic XPath?
Example:
//input[contains(@id,'user')]Hinglish: Jab ID prefix constant ho par numbers badalte rahein tab
contains() use karte hain.
60. On which project have you worked?
Hinglish: Maine Selenium aur TestNG framework ka use karke real-time automation project par kaam kiya hai.
61. How to find XPath on any e-commerce site? (Search Box)
Example:
//input[@type='search'] or
//input[@placeholder='Search']
62. Difference between Absolute and Relative XPath.
- Absolute: Full path from root (starts with /). Unstable.
- Relative: Short path (starts with //). Stable and reliable.
Hinglish: Absolute root node se start hota hai, relative attributes se beech me se start hota hai.
63. Which framework is used in your current automation?
Hinglish: Main Hybrid framework (POM + Data Driven + TestNG) use karta hoon.
64. Do you use TestNG? Why?
Hinglish: Haan, execution control aur automatic reports ke liye TestNG perfect hai.
65. What is Stale Element Reference Exception?
Hinglish: Jab element reference purana ho jaye (refresh ke baad), tab ye exception aata hai.
66. Common Locators in Selenium.
Hinglish: Sabse common ID, Name aur XPath use hote hain.
67. How to find XPath efficiently?
Hinglish: Element inspect karke unique id ya text se dynamic path nikalna sabse efficient hai.
68. How to handle mouse operations?
Actions act = new Actions(driver); act.moveToElement(element).click().perform();
69. How to handle dropdowns using Selenium?
Select s = new Select(element);
s.selectByVisibleText("India");
70. How to select the first value in a dropdown?
s.selectByIndex(0);Hinglish: Index series 0 se start hoti hai, isliye zero index first value select karta hai.
71. Which locators do you commonly use?
Hinglish: Main jyadatar ID aur XPath use karta hoon kyunki ye reliable hain.
72. Why use relative XPath over absolute XPath?
Hinglish: Relative small hota hai aur tab bhi kaam karta hai jab HTML structure me minor changes ho jayein.
73. How to handle JavaScript alerts?
Alert a = driver.switchTo().alert(); a.accept(); // Click OK a.dismiss(); // Click CancelHinglish: Alert interface se hum popup buttons handle karte hain.
74. Difference between Implicit and Explicit wait with code.
// Implicit (Global) driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)); // Explicit (Specific) WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); wait.until(ExpectedConditions.visibilityOf(element));Hinglish: Implicit wait poore driver session ke liye hota hai, explicit visibility conditional hota hai.
75. Where is the test data kept in a framework?
Hinglish: Hum data script me hardcode nahi karte, Excel ya config files me rakhte hain.
76. What are the common TestNG annotations?
@Test, @BeforeMethod, @AfterMethod,
@BeforeClass, @AfterClass, @BeforeSuite.Hinglish: Ye annotations hume execution workflow manage karne me help karte hain.
77. Why do we use @BeforeMethod?
@Test case.Hinglish: Har test case se pehle chalta hai, configuration tasks ke liye.
78. Sample Selenium script: Login and Validate Product.
// Login Steps
driver.findElement(By.id("user")).sendKeys("admin");
driver.findElement(By.id("pass")).sendKeys("123");
driver.findElement(By.id("login")).click();
// Search Product
driver.findElement(By.id("search")).sendKeys("Laptop");
driver.findElement(By.id("btn")).click();
// Validation
String actual = driver.findElement(By.xpath("//h2")).getText();
if(actual.contains("Laptop")) {
System.out.println("Test Passed: Product found");
}
Hinglish: Login karke product search perform karte
hain aur product header se validation karte hain.
Top 20 Important Java Programs
1. How to Reverse a String in Java?
public class ReverseString {
public static void main(String[] args) {
String str = "hello";
String rev = "";
for(int i=str.length()-1; i>=0; i--){
rev = rev + str.charAt(i);
}
System.out.println(rev);
}
}
English: The loop starts from the last index and appends
characters in reverse order.Hinglish: Loop last character se start hota hai aur characters ko reverse order me add karta hai.
Output: olleh
2. How to check if a String is a Palindrome?
public class PalindromeCheck {
public static void main(String[] args) {
String str = "madam";
String rev = "";
for(int i=str.length()-1;i>=0;i--){
rev = rev + str.charAt(i);
}
if(str.equals(rev))
System.out.println("Palindrome");
else
System.out.println("Not Palindrome");
}
}
English: A palindrome string reads the same forward and
backward (e.g., madam, level).Hinglish: Palindrome string aage aur piche se same hoti hai.
3. Swap Two Numbers without a third variable.
public class SwapNumbers {
public static void main(String[] args) {
int a = 5, b = 10;
a = a + b; // 15
b = a - b; // 5
a = a - b; // 10
System.out.println("a: " + a + ", b: " + b);
}
}
Hinglish: Addition aur subtraction logic use karke
numbers swap kiye gaye hain.
4. How to generate Fibonacci Series?
public class Fibonacci {
public static void main(String[] args) {
int a=0, b=1, c;
for(int i=1; i<=10; i++){
System.out.print(a + " ");
c = a + b;
a = b;
b = c;
}
}
}
English: Each number is the sum of previous two numbers.Example: 0 1 1 2 3 5 8
5. Find the Largest Number in an Array.
public class LargestNumber {
public static void main(String[] args) {
int arr[] = {10, 20, 5, 30, 15};
int max = arr[0];
for(int i=1; i<arr.length; i++){
if(arr[i] > max) max = arr[i];
}
System.out.println(max);
}
}
Hinglish: Har element ko variable 'max' se compare
karke largest number find karte hain.Output: 30
6. Count Vowels in a String.
public class CountVowels {
public static void main(String[] args) {
String s = "automation";
int count = 0;
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u') count++;
}
System.out.println(count);
}
}
Hinglish: A, E, I, O, U vowels ko check karke
counter increment karte hain.
7. Find Duplicate Characters in a String.
public class DuplicateChar {
public static void main(String[] args) {
String s = "programming";
for(int i=0; i<s.length(); i++){
for(int j=i+1; j<s.length(); j++){
if(s.charAt(i) == s.charAt(j)){
System.out.println(s.charAt(i));
}
}
}
}
}
Hinglish: Nested loops use karke har character ko
baaki characters se compare kiya jata hai.
8. How to Reverse an Array?
public class ReverseArray {
public static void main(String[] args) {
int arr[] = {1, 2, 3, 4, 5};
for(int i=arr.length-1; i>=0; i--){
System.out.print(arr[i] + " ");
}
}
}
English: Loop starts from the last index (`length-1`) to
print in reverse order.
9. Count Words in a String.
public class CountWords {
public static void main(String[] args) {
String s = "Java Selenium Automation";
String words[] = s.split(" ");
System.out.println(words.length);
}
}
Output: 3
10. Check if a number is Prime.
public class PrimeNumber {
public static void main(String[] args) {
int num = 7, count = 0;
for(int i=1; i<=num; i++){
if(num % i == 0) count++;
}
if(count == 2) System.out.println("Prime");
else System.out.println("Not Prime");
}
}
English: A prime number has exactly two factors: 1 and
itself.
11. Remove Spaces from a String.
String s = "Java Selenium";
s = s.replace(" ", "");
System.out.println(s);
Hinglish: replace() method string se
saare spaces remove kar deta hai.
12. Find String Length without using length() method.
String s = "automation";
int count = 0;
for(char c : s.toCharArray()) {
count++;
}
System.out.println(count);
13. Find the Second Largest Number in an Array.
public class SecondLargest {
public static void main(String[] args) {
int arr[] = {10, 20, 30, 40};
int largest=0, second=0;
for(int num : arr){
if(num > largest){
second = largest;
largest = num;
} else if (num > second && num != largest) {
second = num;
}
}
System.out.println(second);
}
}
14. Print even numbers from an Array.
int arr[] = {1, 2, 3, 4, 5, 6};
for(int i=0; i<arr.length; i++){
if(arr[i] % 2 == 0) System.out.println(arr[i]);
}
15. Sum of all elements in an Array.
int arr[] = {10, 20, 30};
int sum = 0;
for(int i=0; i<arr.length; i++){
sum = sum + arr[i];
}
System.out.println(sum);
16. Print odd numbers between 1 to 10.
for(int i=1; i<=10; i++){
if(i % 2 != 0) System.out.println(i);
}
17. Reverse words in a sentence.
String s = "Java Selenium";
String words[] = s.split(" ");
for(int i=words.length-1; i>=0; i--){
System.out.print(words[i] + " ");
}
18. Find duplicates in an Array.
int arr[] = {1, 2, 2, 3, 4, 4};
for(int i=0; i<arr.length; i++){
for(int j=i+1; j<arr.length; j++){
if(arr[i] == arr[j]) System.out.println(arr[i]);
}
}
19. Check if two Strings are Anagrams.
import java.util.Arrays;
public class AnagramCheck {
public static void main(String[] args) {
String s1="listen", s2="silent";
char a[]=s1.toCharArray(), b[]=s2.toCharArray();
Arrays.sort(a); Arrays.sort(b);
if(Arrays.equals(a,b)) System.out.println("Anagram");
}
}
20. Print All Possible Pairs from a String.
String s = "abcd";
for(int i=0; i<s.length(); i++){
for(int j=i+1; j<s.length(); j++){
System.out.println(s.charAt(i) + "" + s.charAt(j));
}
}
Output: ab, ac, ad, bc, bd, cd
21. How to generate a Random Alphanumeric String in Java?
import java.util.Random;
public class RandomStringExample {
public static void main(String[] args) {
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 10; i++) {
sb.append(chars.charAt(random.nextInt(chars.length())));
}
System.out.println(sb.toString());
}
}
22. Check if a number is Odd or Even without using the '%' operator.
// Bitwise Method (Fastest)
if ((num & 1) == 1) System.out.println("Odd");
else System.out.println("Even");
Hinglish: (num & 1) == 1 logic se bit
level par checking hoti hai.
Advanced Automation & SDLC
1. What is Time Complexity and why is it important?
Hinglish: Ye batata hai ki input badhne par code kitna slow ya fast chalega. O(n) loop ke liye hota hai.
2. What is a Keyword Driven Framework?
Hinglish: Isme Excel me "ClickLogin" jese keywords likhte hain aur code un keywords ko actions me convert karta hai.
3. Explain Selenium Grid and its Hub-Node architecture.
Hinglish: Hub driver se command leta hai aur available Node par test bhej देता है cross-browser testing ke liye.
4. Behavioral Question: Why should we hire you?
Hinglish: Apne years of experience, framework building knowledge aur problem-solving skills ko highlight karein.
5. How do you raise a defect in Jira? (Standard Steps)
Hinglish: Steps to reproduce sabse important part hai taaki developer issue recreate kar sake.
6. Explain the Agile Process (Scrum, Sprints, Ceremonies).
Hinglish: Agile me client feedback jaldi milta hai aur changes handle karna easy hota hai.
7. Interview Tip: Which framework are you using?
Hinglish: Humesha 'Hybrid' bole kyunki real project me multiple patterns mix hote hain.
Core Java Mastery (Expert Mode)
1. Explain OOPS Concepts and how they are used in Automation.
- Encapsulation: Used in POM (Page Object Model) to wrap data and methods (Private variables, Public getters).
- Abstraction: Hiding implementation details, used in Base classes and utility interfaces.
- Inheritance: Reusability; test classes
extends a
Base/Utility class.- Polymorphism: Method overloading (same name, different parameters) and cross-browser testing (WebDriver interface).
Hinglish: Encapsulation = data hide karna. Inheritance = parents se child banana. Abstraction = sirf important details dikhana.
2. Java Code to Read a Properties (Config) File.
import java.io.FileInputStream;
import java.util.Properties;
public class ReadConfig {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
FileInputStream fis = new FileInputStream("src/test/resources/config.properties");
prop.load(fis);
System.out.println("Browser: " + prop.getProperty("browser"));
System.out.println("URL: " + prop.getProperty("url"));
}
}
Hinglish: Properties class load()
function se file read karti hai aur getProperty() se values fetch.
3. How do you take a screenshot in Selenium? (Practical Code)
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
TakesScreenshot ts = (TakesScreenshot) driver;
File source = ts.getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(source, new File("D:\\Screenshots\\error.png"));
English: Cast the driver to TakesScreenshot,
capture the file, and save it using FileUtils or FileHandler.
4. How to read data from an Excel sheet using Apache POI?
FileInputStream file = new FileInputStream("D:\\TestData.xlsx");
Workbook workbook = new XSSFWorkbook(file);
Sheet sheet = workbook.getSheet("Sheet1");
String user = sheet.getRow(1).getCell(0).getStringCellValue();
String pass = sheet.getRow(1).getCell(1).getStringCellValue();
Hinglish: Excel structure (Workbook → Sheet
→ Row → Cell) follow karke data iterate karna padta hai.
5. Difference between Method Overloading and Overriding.
- Overloading: Same name, different parameters, within same class (Compile-time).
- Overriding: Subclass provides specific implementation of parent method (Run-time).
Hinglish: Overloading "static binding" hai, Overriding "dynamic binding" jo inheritance ki vajah se possible hai.
6. Difference between ArrayList and LinkedList with use cases.
Hinglish: Search karne ke liye ArrayList fast hai, element delete/add karne ke liye LinkedList.
7. Why is String immutable in Java?
Hinglish: Memory save karne ke liye String Pool use hota hai jisme duplicate values create nahi hoti, isliye isse immutable rakha gaya hai.
8. Java Program to Check if a number is Prime.
int num = 17; boolean isPrime = true;
if (num <= 1) isPrime = false;
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) { isPrime = false; break; }
}
System.out.println(isPrime ? "Prime" : "Not Prime");
9. Write a program to print duplicate elements in an array.
int[] arr = {1, 2, 3, 2, 4, 3, 5, 1};
for(int i = 0; i < arr.length; i++) {
for(int j = i + 1; j < arr.length; j++) {
if(arr[i] == arr[j]) System.out.println("Duplicate: " + arr[i]);
}
}
10. Java program to reverse a given string without using inbuilt functions.
String input = "Selenium", reverse = "";
for(int i = input.length() - 1; i >= 0; i--) {
reverse = reverse + input.charAt(i);
}
System.out.println("Reversed: " + reverse);
11. Define a class and show how it's called using an object.
class Car { void start(){ System.out.println("Car started"); } }
public class Test {
public static void main(String[] args){
Car myCar = new Car(); // Object creation
myCar.start(); // Calling method
}
}
Hinglish: Class ek design hai, bina object banaye
hum uske state data ya behavior ko access nahi kar sakte.
12. Explain and show a Try-Catch block example in Java.
try {
int data = 100 / 0; // Risky code
} catch (ArithmeticException e) {
System.out.println("Cannot divide by zero: " + e.getMessage());
} finally {
System.out.println("Cleanup activities here");
}
13. Java program to sort an array and remove duplicates.
int[] arr = {5, 2, 8, 2, 5, 1};
Arrays.sort(arr);
int n = arr.length; int[] temp = new int[n]; int j = 0;
for (int i = 0; i < n - 1; i++) {
if (arr[i] != arr[i+1]) temp[j++] = arr[i];
}
temp[j++] = arr[n-1];
for (int i=0; i<j; i++) System.out.print(temp[i] + " ");
14. What are Getter and Setter methods and why are they used?
Hinglish: User ko direct variable control nahi dete, getters/setters validation layer ki tarah kaam karte hain.
15. What is an Interface in Java? (Blueprint Theory)
Hinglish: Interface classes ko ek particular set of rules follow karne ke liye majboor karta hai.
16. What is StringBuilder and how it is different from String?
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // Modifies same memory space
17. List the most commonly used String methods in automation.
length() - gets character countcharAt(index) - gets specific charequals() & equalsIgnoreCase() - string comparisoncontains() - substring checksplit() - breaking string based on regexsubstring(start, end) - extracting text
18. Difference between Array and List (ArrayList).
add(), remove(), etc.Hinglish: Array me size pehle batana padta hai, ArrayList me data ke hisab se size apne aap badhta hai.
19. Difference between Map and Dictionary (Legacy vs Modern).
Hinglish: Aaj ke time me HashMap (Map interface) standard hai speed aur flexibility ki wajah se.
20. How to iterate over List, Map, and Set structures?
// List/Set iteration
for(String val : set) { System.out.println(val); }
// Map iteration (Modern way)
map.forEach((k, v) -> System.out.println("Key: " + k + ", Value: " + v));
Hinglish: Enhanced for-loop list/set ke liye best
hai; Map ke liye entrySet() ya lambda use karte hain.
21. What is a variable and explain its types (Static vs Instant).
Hinglish: Static pure class ke objects ke liye common hota hai, instance objects ke hisab se alag hota hai.
22. What is a Wrapper Class and its use in Collections?
Integer for
int).Hinglish: Primitive values (int, char) ko ArrayList me store karne ke liye Integer/Character objects me convert karna padta hai.
23. How are Java Collections used in real Test Automation?
findElements), management of Window Handles (Sets), and mapping environment
variables (Maps).Hinglish: Browser windows handle karne ke liye
Set<String> use hota hai aur elements list ke liye
List<WebElement>.
24. Java program for Array of String iteration.
String[] fruits = {"Apple", "Banana", "Orange"};
for(int i=0; i<fruits.length; i++){
System.out.println("Index " + i + ": " + fruits[i]);
}
25. Logic to find duplicate characters in a given String.
String str = "testing"; char[] chars = str.toCharArray();
for(int i=0; i<str.length(); i++){
for(int j=i+1; j<str.length(); j++){
if(chars[i] == chars[j]) System.out.println("Duplicate: " + chars[i]);
}
}
26. Find the length of a String without using the internal library length().
String s = "Automation"; int length = 0;
for(char c : s.toCharArray()) length++;
System.out.println("Computed Length: " + length);
27. Briefly explain Collection, Map, and List hierarchy.
List: Ordered, allows duplicates.
Map: Independent interface, stores Key-Value pairs (no duplicates in keys).
28. Program to reverse a String based on user input (Scanner).
Scanner sc = new Scanner(System.in);
System.out.println("Enter string:");
String s = sc.nextLine(); String rev = "";
for(int i=s.length()-1; i>=0; i--) rev += s.charAt(i);
System.out.println("User Reverse: " + rev);
29. Program for sorting a String Array alphabetically.
String arr[] = {"Zebra", "Apple", "Monkey"};
Arrays.sort(arr); // Apple, Monkey, Zebra
Hinglish: Arrays.sort() utility
function comparison algorithm use karke strings ko order me set karta hai.
30. Difference between Abstraction (Class) and Interface.
Hinglish: Agar base design common rakhna ho toh abstract class; agar sirf functionalities force karni hon toh interfaces.
31. Program to find the second largest number in an unsorted array.
int nums[] = {5, 20, 10, 8, 25};
Arrays.sort(nums);
System.out.println("Second Largest: " + nums[nums.length-2]);
32. How to handle logic exceptions vs runtime environment failures?
try-catch and
Selenium's WebDriverWait.
33. What is the 'final' keyword and its impact on class/method/variable?
Hinglish: Final se security multi hai taaki koi aapki class ka behavior change (override) na kar sake.
34. What is the purpose of the 'this' keyword in Java constructors?
public class MyClass {
int x;
MyClass(int x) { this.x = x; } // 'this.x' belongs to object
}
35. Detailed explanation of all Inheritance types in Java.
2. Multilevel: Child → Parent → G-Parent.
3. Hierarchical: Multiple children of same parent.
4. Multiple: Only via Interfaces (preventing Diamond Problem).
5. Hybrid: Mix of above, using Interfaces in Java.
Hinglish: Java me ambiguity se bachne ke liye classes ke sath multiples inheritance block ki gayi hai.
📌 Cucumber Framework – Question&Answer
1. Explain the framework structure which you are using in your Cucumber project.
- Feature files → contain test scenarios
- Step Definition classes → contain implementation of steps
- Runner class → executes feature files
- Page classes (POM) → contain locators and actions
- Utility classes → for common methods (wait, screenshot, excel)
- Hooks class → for setup and teardown
This structure improves reusability and maintainability.
Hinglish: Mere Cucumber framework me:
- Feature file → scenarios hote hain
- Step Definition → steps ka code hota hai
- Runner class → execution ke liye hoti hai
- Page classes (POM) → locators aur methods ke liye
- Utility classes → common methods ke liye
- Hooks class → browser setup aur close ke liye
Isse code reusable aur easy to maintain hota hai.
2. What is a Feature file? What is inside it and explain each keyword.
Hinglish: Feature file me test scenarios likhe jaate hain Gherkin language me.
Keywords:
- Feature → describes application feature / functionality ka naam
- Scenario → test case
- Given → precondition
- When → action
- Then → expected result
- And / But → additional steps / extra steps
3. Which annotations are used in the Test Runner class?
@RunWith(Cucumber.class) and @CucumberOptions.Hinglish: Runner class me
@RunWith(Cucumber.class) aur @CucumberOptions use karte hain.
4. What attributes are used inside @CucumberOptions?
- features → path of feature file
- glue → step definition package / path
- plugin → report generate karta hai / reporting
- monochrome → console output readable
- dryRun → checks mapping of steps
- tags → run specific/selected scenarios
5. Write feature file for login credentials.
Feature: Login Functionality Scenario: Valid Login Given user is on login page When user enters username and password And user clicks on login button Then user should be logged in successfullyHinglish: Feature file me hum plain English me steps likhte hain:
Given = precondition
When = action
Then = result
6. What are Tags in Cucumber and why do we use them?
@smoke, @regression) are used to group and organize test scenarios. They allow us to selectively run a specific set of tests without executing the entire suite.Hinglish: Tags scenarios ko group karne ke kaam aate hain. Specific tests (jaise
@smoke ya @regression) run karne ke liye hum in tags ka use karte hain.
7. Differences between Scenario and Scenario Outline?
- Scenario: Runs a test case once with a single set of data.
- Scenario Outline: Runs the exact same test case multiple times using different datasets provided via an
Examples table.Hinglish: Scenario tab use karte hain jab ek hi data set ho, aur Scenario Outline tab use hota hai jab same steps ko alag-alag data (Examples table) ke sath repeat karna ho.
8. What is the use of the 'Background' keyword in Cucumber?
Background keyword groups steps that are common to all scenarios in a feature file (like logging into the application). These steps run automatically before each scenario.Hinglish:
Background common steps (jaise login) ko ek jagah rakhne ka tareeka hai, jo har scenario se pehle automatically execute hoti hain.
9. What is a Data Table in Cucumber?
List<List<String>> or a List<Map<String, String>>.Hinglish: Feature file ke ek hi step me multiple data inputs pass karne ke liye Data Table banate hain, jise Java code me
List ya Map ki tarah read kiya jata hai.
10. Explain Cucumber Hooks (@Before and @After).
- @Before: Executes before the first step of each scenario (e.g., initializing WebDriver).
- @After: Executes after the last step of each scenario (e.g., capturing a screenshot on failure or quitting the browser).
Hinglish: Hooks code blocks hain jo test ke aage-peeche chalte hain.
@Before browser setup karne ke liye aur @After test end hone par driver close ya error screenshot lene ke liye use hota hai.
11. What is the purpose of 'dryRun' in @CucumberOptions?
dryRun = true rapidly validates if every step in the Feature file has an associated Step Definition, without actually executing the underlying automation code. It is used to quickly spot missing steps.Hinglish:
dryRun = true check karta hai ki saare naye steps ka code likha hua hai ya nahi bina actual browser me test ko run kiye.
Framework Deep-Dive
1. Can you explain your TestNG automation framework structure?
Yes, I have designed a TestNG-based automation framework using Selenium by following the Page Object Model (POM) design pattern.
The framework is modular and divided into multiple layers for better maintainability, reusability, and scalability. Below is the framework structure:
Project Structure:
project-root/ ├── src/test/java/ │ ├── base/ │ │ └── BaseClass.java │ ├── pages/ │ │ ├── LoginPage.java │ │ ├── Users_Management_Page.java │ │ └── Policies_Page.java │ ├── testCases/ │ │ ├── TC01_LoginTest.java │ │ ├── TC19_Users_Management_Page.java │ │ └── TC05_Policies_Page.java │ ├── utilities/ │ │ ├── ConfigReader.java │ │ ├── WaitUtils.java │ │ ├── ScreenshotUtil.java │ │ ├── ExcelUtil.java / ODSReader.java │ │ └── RetryAnalyzer.java │ ├── listeners/ │ │ └── CustomReporter.java ├── src/test/resources/ │ ├── config/ │ │ └── config.properties │ ├── testData/ │ │ └── testdata.xlsx / testdata.ods ├── reports/ ├── screenshots/ ├── testng.xml └── pom.xml
Layer Explanations:
- 1. Base Layer: Contains BaseClass which handles WebDriver initialization, browser setup, and teardown methods.
- 2. Page Layer (POM): Contains all Page Object classes where web elements and reusable methods are defined. This ensures separation of UI logic from test logic.
- 3. Test Layer: Contains all TestNG test classes where test scenarios are written using annotations like @Test, @BeforeMethod, and @AfterMethod. Assertions are also implemented here.
- 4. Utilities: Includes reusable components like ConfigReader for reading properties, WaitUtils for synchronization, Screenshot utility for capturing failures, and Excel/ODS utilities for data-driven testing.
- 5. Listeners: Implements TestNG listeners to generate reports such as Extent Reports and to track test execution status.
- 6. Configuration File: config.properties is used to store environment-related data like URL, browser type, username, and password to avoid hardcoding.
- 7. Test Data: External data is maintained in Excel or ODS files for data-driven testing.
- 8. TestNG XML: testng.xml is used to manage test execution, grouping (smoke/regression), and parallel execution.
Overall, the framework is scalable, reusable, supports data-driven testing, reporting, retry mechanisms, and can be integrated with CI/CD tools like Jenkins.
"I am using a TestNG-based automation framework with Selenium, following the Page Object Model. It includes layers like Base, Pages, Test Cases, Utilities, and Listeners. The framework supports data-driven testing, reporting, retry mechanism, and parallel execution using testng.xml."
2. Can you explain your Cucumber automation framework structure?
Yes, I have designed a hybrid automation framework using Selenium, Cucumber, and TestNG by following the Page Object Model (POM) design pattern.
The framework is divided into multiple layers to ensure better maintainability, reusability, and scalability. Below is the framework structure:
Project Structure:
project-root/ ├── src/test/java/ │ ├── base/ │ │ └── BaseClass.java │ ├── pages/ │ │ ├── LoginPage.java │ │ ├── Users_Management_Page.java │ │ └── Policies_Page.java │ ├── stepdefinitions/ │ │ └── LoginSteps.java │ ├── utilities/ │ │ ├── ConfigReader.java │ │ ├── WaitUtils.java │ │ ├── ScreenshotUtil.java │ │ └── ExcelUtil.java │ ├── runners/ │ │ └── TestRunner.java │ └── listeners/ │ └── CustomReporter.java ├── src/test/resources/ │ ├── features/ │ │ └── login.feature │ └── config/ │ └── config.properties ├── reports/ ├── screenshots/ ├── testng.xml └── pom.xml
Layer Explanations:
- 1. Base Layer: Contains BaseClass which handles WebDriver initialization, browser setup, and teardown.
- 2. Page Layer (POM): Contains all Page Object classes where web elements and actions are defined. This helps in separating UI logic from test logic.
- 3. Step Definition Layer: Maps feature file steps (Given, When, Then) to Java methods. This acts as a bridge between feature files and automation code.
- 4. Feature Files: Written in Gherkin language and contain test scenarios in a readable format for both technical and non-technical users.
- 5. Runner Class: Uses TestNG with CucumberOptions to control test execution, specify feature file paths, glue code, and reporting.
- 6. Utilities: Reusable components like ConfigReader, WaitUtils, Screenshot utility, and Excel utility for data-driven testing.
- 7. Listeners: Used for generating reports like Extent Reports and capturing execution logs.
- 8. Config File: config.properties is used to store environment details such as URL, browser, username, and password.
- 9. TestNG XML: Used for grouping tests, parallel execution, and managing test suites.
Overall, the framework supports data-driven testing, reporting, reusable components, and can be integrated with CI/CD tools like Jenkins.
CI/CD Pipelines & DevOps for Automation
1. What is CI/CD, and how does it relate to test automation?
Hinglish: CI matlab code upload karte hi automatic tests chalna. CD matlab tests pass hone par code ko release karna. Setup automated hota hai taaki bugs jaldi mil sakein.
2. How do you integrate Selenium tests with Jenkins?
1. Create a Freestyle Project or Pipeline in Jenkins.
2. Configure Source Code Management (SCM) to pull code from Git.
3. Add a build step:
mvn test (for Maven projects).4. Use Post-build Actions to archive TestNG reports or send email notifications.
Hinglish: Jenkins me build create karke Git se code link karte hain aur 'mvn test' command chala kar reports save karte hain.
3. Explain Jenkins Pipeline (Jenkinsfile) for automation.
pipeline {
agent any
stages {
stage('Checkout') { steps { git 'url' } }
stage('Build') { steps { sh 'mvn compile' } }
stage('Test') { steps { sh 'mvn test' } }
stage('Reporting') { steps { allure report } }
}
}
4. What is Headless Mode and why use it in CI/CD?
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
Hinglish: Headless browser screen ke bina backend me chalta hai. Linux servers par UI nahi hota isliye wahan headless mode compulsory hota hai.
Cloud Grid & Parallel Execution
1. What is a Cloud Grid (BrowserStack/SauceLabs) and why use it?
Hinglish: BrowserStack hume remote devices access karne deta hai. Hume khud saare browsers aur phones kharidne ki zarurat nahi padti.
2. How do you connect your Selenium script to BrowserStack?
MutableCapabilities capabilities = new MutableCapabilities();
capabilities.setCapability("browserName", "Chrome");
URL url = new URL("https://USERNAME:KEY@hub.browserstack.com/wd/hub");
WebDriver driver = new RemoteWebDriver(url, capabilities);
3. How to achieve Parallel Execution in TestNG?
parallel attribute in testng.xml at the suite, test, or methods level.<suite name="Suite" parallel="tests" thread-count="2"> <test name="ChromeTest"> ... </test> <test name="FirefoxTest"> ... </test> </suite>Hinglish:
testng.xml me parallel attribute set karke hum ek sath multiple browsers par tests chala sakte hain.
4. What is a Tunnel (Local Testing) in Cloud Grids?
Hinglish: Tunnel ke zariye hum cloud devices par apne office ke server (localhost) wali website ko test kar sakte hain.
Docker for Selenium Grid
1. What is Docker and why use it for Selenium Grid?
Hinglish: Docker se hum browser aur hub ko containers mein pack kar sakte hain. Isse hume alag-alag computers pe setup nahi karna padta aur hum ek sath bahut saare browsers chala sakte hain.
2. How to run a Standalone Selenium Chrome container?
docker run -d -p 4444:4444 --shm-size="2g" selenium/standalone-chrome:latestHinglish: Is command se ek browser container start ho jayega jise hum direct URL se connect kar sakte hain.
3. Explain 'docker-compose.yml' for Selenium Grid.
version: "3"
services:
selenium-hub:
image: selenium/hub:latest
ports: [ "4444:4444" ]
chrome:
image: selenium/node-chrome:latest
depends_on: [ selenium-hub ]
environment: [ SE_EVENT_BUS_HOST=selenium-hub ]
4. How to scale browser nodes using Docker Compose?
--scale flag to spin up multiple instances of a browser node instantly.docker-compose up --scale chrome=5 -dHinglish: Ek simple command se hum 5 chrome browsers ek sath khol sakte hain testing ke liye.
REST API Automation (RestAssured)
1. What is RestAssured and why use it for automation?
Hinglish: RestAssured ek Java library hai APIs ko automate karne ke liye. Isse hum Java code likh kar API calls, responses aur assertions ko asani se handle kar sakte hain. Practice API Automation in Lab
2. Explain the Given, When, Then syntax in RestAssured.
- Given: Pre-requisites (Base URI, Headers, Query Params, Body).
- When: The action (GET, POST, PUT, DELETE with endpoint).
- Then: The verification (Status Code, Assertions, Response Body).
given().header("Content-Type", "application/json")
.when().get("/users")
.then().statusCode(200);
3. How to extract a specific value from a JSON response?
Response res = given().get("/api/user");
JsonPath js = new JsonPath(res.asString());
String name = js.getString("data.first_name");
Hinglish: Response string ko JsonPath mein convert karke, 'key name' ke zariye hum kisi bhi value ko bahar nikal sakte hain.
4. What are Serialization and Deserialization in RestAssured?
- Serialization: Converting a Java POJO (Plain Old Java Object) into a JSON/XML format to send as a request body.
- Deserialization: Converting a JSON/XML response back into a Java Object.
Hinglish: Java object ko JSON data banana (Sending) matlab Serialization. API ke JSON result ko waapas Java object bana dena matlab Deserialization.
5. How to handle API authentication (Bearer Token)?
given().header("Authorization", "Bearer " + myToken)
.get("/secure-endpoint")
.then().statusCode(200);
6. What is the role of RequestSpecBuilder and ResponseSpecBuilder?
Hinglish: Common details jaise Base URL aur Headers ko ek jagah rakhne ke liye builders ka use hota hai taaki code reusable ho sake.
Mobile Automation (Appium)
1. What is Appium and how does it work?
Hinglish: Appium mobile apps (Android aur iOS) automate karne ka tool hai. Ye humare Java code ko command ke roop mein server ko bhejta hai aur server usse mobile pe perform karta hai.
2. Explain Native, Hybrid, and Mobile Web apps.
- Native: Built for a specific OS (Swift/Java). Fast and offline-friendly.
- Mobile Web: Websites accessed via a mobile browser.
- Hybrid: Web content inside a native wrapper (Cordova/React Native).
Hinglish: Native matlab jo sirf phone ke liye bani ho; Mobile Web matlab browser mein khulne wali site; Hybrid matlab donon ka mixture.
3. What are Desired Capabilities in Appium?
UiAutomator2Options options = new UiAutomator2Options();
options.setPlatformName("Android");
options.setDeviceName("emulator-5554");
options.setAppPackage("com.example.app");
options.setAppActivity(".MainActivity");
Advanced SQL for QA
1. Difference between INNER JOIN and LEFT JOIN?
Hinglish: Inner Join sirf matching data dikhata hai. Left Join left wali table ka poora data dikhaye chahe right mein match ho ya na ho. Practice SQL Queries in Lab
2. How to find the 2nd highest salary in a table?
OFFSET/LIMIT clause.SELECT MAX(Salary) FROM Employees WHERE Salary < (SELECT MAX(Salary) FROM Employees);Hinglish: Poore table se max salary nikalo jo main max salary se kam ho.
Automation FAQ
Q: Is Selenium still relevant with Playwright and Cypress rising?
A: Yes, absolutely. While Playwright and Cypress are great, Selenium has the largest community support and is the industry standard for enterprise-level, multi-browser automation.
Q: How much Java should I know for automation?
A: You need strong core Java skills: OOPS concepts (Inheritance, Polymorphism), Collections (List, Map), Exception Handling, and File I/O.
Best Practices for Test Automation
- Follow the Page Object Model (POM): Keep page elements and test cases separated to reduce maintenance overhead.
- Implement Explicit and Fluent Waits: Avoid using
Thread.sleep(). Always use dynamic waits to wait for element states. - Write Independent Tests: Ensure test cases can be run in any order and in parallel without dependencies on other test execution paths.
- Maintain a Clean Directory Structure: Keep test runners, page objects, data files, and utilities in clearly defined folders.
- Adopt a Robust Logging and Reporting Framework: Integrate reporters like ExtentReports or Allure to capture failure screenshots automatically.