# Learing Path

## **7-Day Core Java Detailed Learning Plan**

---

### **Day 1: Java Basics & Operators**

#### **Key Topics**

1. **Introduction to Java**
    
    * What is Java? (Platform-independent, OOP, Secure, Robust, Portable)
        
    * Java Versions (SE, EE, ME)
        
    * Why Java is popular for Automation & Backend?
        
2. **Java Architecture**
    
    * JDK (Java Development Kit) – for development
        
    * JRE (Java Runtime Environment) – for running Java applications
        
    * JVM (Java Virtual Machine) – converts bytecode into machine code (platform independent)
        
3. **First Java Program**
    
    * Structure: class, main method, statements
        
    * Compilation (`javac`) & Execution (`java`)
        
4. **Data Types**
    
    * **Primitive (8 types)**: byte, short, int, long, float, double, char, boolean
        
    * **Non-primitive**: String, Arrays, Classes, Objects
        
5. **Variables & Constants**
    
    * Declaration, Initialization, Scope
        
    * `final` keyword for constants
        
6. **Type Casting**
    
    * Widening (Implicit) – smaller → larger (int → double)
        
    * Narrowing (Explicit) – larger → smaller (double → int)
        
7. **Operators**
    
    * Arithmetic (+, -, \*, /, %)
        
    * Relational (&gt;, &lt;, &gt;=, &lt;=, ==, !=)
        
    * Logical (&&, ||, !)
        
    * Bitwise (&, |, ^, ~)
        
    * Unary (++a, a++, --a, a--)
        
    * Ternary (`condition ? value1 : value2`)
        

#### **Focus Points**

* Understand how JVM makes Java platform-independent.
    
* Difference between primitive & non-primitive data types.
    
* Importance of type casting in automation (handling numeric test data).
    

### **Coding Challenges (Easy → Hard)**

1. Print "Hello Java" 5 times.
    
2. Swap two numbers using a temporary variable.
    
3. Swap two numbers without using a temporary variable.
    
4. Convert temperature from Celsius to Fahrenheit.
    
5. Calculate area & perimeter of a rectangle.
    
6. Find sum of digits of a number.
    
7. Check if a number is even or odd.
    
8. Convert double to int (type casting).
    
9. Calculate simple interest.
    
10. Find ASCII value of a character.
    
11. Add two binary numbers (string-based).
    
12. Convert character to uppercase & lowercase.
    
13. Multiply two floating numbers entered by user.
    
14. Find square & cube of a number using operators.
    
15. Swap two strings without using a third variable.
    

---

### **Day 2: Control Flow (Decision & Loops)**

#### **Key Topics**

1. **Decision Making**
    
    * if, if-else, if-else-if ladder
        
    * switch-case (supports int, char, String)
        
2. **Loops**
    
    * for, while, do-while
        
    * Enhanced for loop (for-each)
        
3. **Jump Statements**
    
    * break – terminate loop
        
    * continue – skip current iteration
        
4. **Nested Loops**
    
    * Used for patterns & multidimensional operations
        

#### **Focus Points**

* Use if-else for login validation.
    
* Apply switch for multiple browser selection in Selenium.
    
* Learn differences: for vs while vs do-while.
    

### **Coding Challenges**

1. Find largest among three numbers.
    
2. Check if a year is leap year.
    
3. Print multiplication table of a number.
    
4. Sum of first N natural numbers.
    
5. Calculate factorial of a number using for loop.
    
6. Reverse a number using while loop.
    
7. Print Fibonacci series up to N terms.
    
8. Count number of digits in a number.
    
9. Find sum of even numbers between 1–100.
    
10. Print numbers from 1–50 skipping multiples of 5.
    
11. Find grade of a student using marks (switch).
    
12. Print star pattern:
    

```java
*
**
***
****
*****
```

13. Print prime numbers between 1–100.
    
14. Check if a number is Armstrong or not.
    
15. Digital root: keep adding digits until single digit remains.
    

---

### **Day 3: Arrays & Strings**

#### **Key Topics**

1. **Arrays**
    
    * Declaration: `int[] arr = new int[5];`
        
    * Initialization: `int[] arr = {1,2,3};`
        
    * Accessing elements via index
        
    * Traversing using for & for-each
        
    * Multidimensional Arrays (2D arrays: `int[][] matrix`)
        
2. **Common Operations**
    
    * Finding max, min, sum, average
        
    * Reversing an array
        
    * Sorting (using `Arrays.sort()`)
        
3. **Strings**
    
    * Immutable in Java
        
    * Methods: `length()`, `charAt()`, `substring()`, `equals()`, `equalsIgnoreCase()`, `compareTo()`, `split()`, `trim()`, `replace()`
        
4. **StringBuilder & StringBuffer**
    
    * Mutable strings
        
    * Methods: `append()`, `insert()`, `delete()`, `reverse()`
        

#### **Focus Points**

* Understand why strings are immutable.
    
* When to use StringBuilder for dynamic XPaths in Selenium.
    
* Learn how arrays store test data for automation.
    

### **Coding Challenges**

1. Declare and print array elements.
    
2. Find largest & smallest number in an array.
    
3. Calculate sum & average of array elements.
    
4. Reverse an array.
    
5. Find duplicate elements in an array.
    
6. Merge two arrays.
    
7. Check if array is sorted (ascending).
    
8. Rotate array by K positions.
    
9. Count vowels & consonants in a string.
    
10. Reverse a string without using `reverse()`.
    
11. Check if a string is palindrome.
    
12. Find frequency of each character in a string.
    
13. Remove all white spaces from a string.
    
14. Check if two strings are anagrams.
    
15. Find the longest word in a sentence.
    

---

### **Day 4: Methods & OOP Basics**

#### **Key Topics**

1. **Methods**
    
    * Syntax: `returnType methodName(parameters) { ... }`
        
    * Return types: void, int, String, etc.
        
    * Parameters: with & without arguments
        
    * Method Overloading – same name, different parameters
        
2. **Recursion**
    
    * Method calling itself
        
    * Example: factorial, Fibonacci
        
3. **Classes & Objects**
    
    * Class: Blueprint
        
    * Object: Instance of class
        
    * Accessing members: `objectName.methodName()`
        
4. **Constructors**
    
    * Default & Parameterized
        
    * Constructor Overloading
        
    * `this` keyword to differentiate between instance & local variables
        

#### **Focus Points**

* Create reusable methods for Selenium automation (launch browser, login).
    
* Understand constructor vs method differences.
    
* Practice recursion with factorial/Fibonacci.
    

### **Coding Challenges**

1. Method to calculate factorial.
    
2. Method to check prime number.
    
3. Method to find max of 3 numbers.
    
4. Method overloading: add(int,int), add(double,double).
    
5. Recursive Fibonacci method.
    
6. Create class `Student` with display method.
    
7. BankAccount class with deposit & withdraw.
    
8. Constructor to initialize employee details.
    
9. Demonstrate pass-by-value.
    
10. Reverse a string using recursion.
    
11. Method to calculate area (circle, rectangle, triangle).
    
12. Calculator class with multiple operations.
    
13. Swap two numbers using objects.
    
14. Print object hashcode.
    
15. Class with static & non-static methods.
    

---

### **Day 5: Advanced OOP (Inheritance, Polymorphism, Encapsulation, Abstraction)**

#### **Key Topics**

1. **Inheritance**
    
    * Single, Multilevel, Hierarchical
        
    * `extends` keyword
        
    * `super` keyword (call parent constructor/method)
        
2. **Polymorphism**
    
    * Compile-time (Method Overloading)
        
    * Runtime (Method Overriding)
        
3. **Encapsulation**
    
    * Private variables + public getters & setters
        
4. **Abstraction**
    
    * Abstract Class: `abstract class`
        
    * Interfaces: multiple inheritance
        
5. **Static & Final**
    
    * static variables & methods
        
    * final variable (constant), final method (cannot override), final class (cannot extend)
        

#### **Focus Points**

* How inheritance helps in Page Object Model (POM) for Selenium.
    
* Why polymorphism is used for WebDriver drivers (ChromeDriver, FirefoxDriver).
    
* Understand interface vs abstract class in frameworks.
    

### **Coding Challenges**

1. Inherit class `Car` from `Vehicle`.
    
2. Override `sound()` method in Dog & Cat classes.
    
3. Demonstrate method overloading & overriding.
    
4. Encapsulate Student marks using private variables.
    
5. Abstract class `Shape` → Rectangle, Circle.
    
6. Interface `Payment` with classes UPI & Card.
    
7. Static variable counter for number of objects created.
    
8. Final class demonstration.
    
9. Use `super` keyword to call parent constructor.
    
10. Runtime polymorphism with WebDriver-like classes.
    
11. Multiple inheritance using interface.
    
12. Class with static block & constructor – observe execution order.
    
13. Interface-based calculator with multiple classes.
    
14. Animal class hierarchy using polymorphism.
    
15. Demonstrate `this` keyword in constructor chaining.
    

---

### **Day 6: Exception Handling & Wrapper Classes**

#### **Key Topics**

1. **Exception Handling**
    
    * try, catch, finally
        
    * throw & throws
        
    * Checked vs Unchecked exceptions
        
    * Multiple catch blocks
        
    * Custom Exceptions
        
2. **Wrapper Classes**
    
    * Convert primitive to object (`Integer`, `Double`, etc.)
        
    * Autoboxing (int → Integer)
        
    * Unboxing (Integer → int)
        

#### **Focus Points**

* Handle `NoSuchElementException` in Selenium using try-catch.
    
* Convert test data string → int for validations.
    
* Create custom exceptions for invalid test cases.
    

### **Coding Challenges**

1. Handle divide by zero exception.
    
2. Handle array index out of bounds.
    
3. Handle null pointer exception.
    
4. Create custom exception `InvalidAgeException`.
    
5. Throw exception for negative input.
    
6. Demonstrate try-with-resources (file reading).
    
7. Nested try-catch example.
    
8. Convert string to integer using `Integer.parseInt()`.
    
9. Autoboxing example (int → Integer).
    
10. Unboxing example (Integer → int).
    
11. Multiple catch block example.
    
12. Rethrow an exception.
    
13. Method that throws checked exception.
    
14. Handle NumberFormatException.
    
15. Custom login failure exception.
    

---

### **Day 7: Collections Framework & Final Revision**

#### **Key Topics**

1. **Collections Framework**
    
    * List (ArrayList, LinkedList)
        
    * Set (HashSet, TreeSet)
        
    * Map (HashMap, LinkedHashMap)
        
    * Iterating: for-each, Iterator
        
2. **Packages & Access Modifiers**
    
    * public, private, protected, default
        
3. **Java Memory**
    
    * Stack vs Heap memory
        
    * Garbage Collection
        
4. **Mini Project (Automation Related)**
    
    * Login Automation with multiple credentials using List/Map
        

#### **Focus Points**

* Store web elements in List&lt;WebElement&gt;.
    
* Remove duplicate links using Set.
    
* Maintain credentials using Map.
    

### **Coding Challenges**

1. Store 5 names in ArrayList & print.
    
2. Remove duplicates from a list using HashSet.
    
3. Store student details (name, marks) in HashMap.
    
4. Iterate over ArrayList using Iterator.
    
5. Sort list in ascending & descending order.
    
6. Find frequency of words using HashMap.
    
7. Convert ArrayList to Array & vice versa.
    
8. Merge two ArrayLists.
    
9. Check if element exists in HashSet.
    
10. Copy one HashMap to another.
    
11. Create List of integers & remove all even numbers.
    
12. Implement LinkedList for storing cities.
    
13. Use TreeSet to store unique sorted elements.
    
14. Use HashMap for login credentials validation.
    
15. Mini Project: ATM Simulator or Student Management using List & Map.
    

\============================================================================**Selenium 3-Day Plan (with Coding Challenges)**

---

## **Day 1: Selenium Basics & WebDriver**

### **Topics in Detail**

* **Introduction to Selenium:**
    
    * What is Selenium? Why Selenium? Components (Selenium IDE, WebDriver, Grid)
        
    * Supported Browsers & Languages
        
* **Setup:**
    
    * Download & configure Selenium WebDriver (ChromeDriver/GeckoDriver)
        
    * Add Selenium JARs or Maven dependency
        
* **WebDriver Basics:**
    
    * Launch Browser
        
    * Navigate to URL (`get()`, `navigate().to()`)
        
    * Close & Quit
        
    * Get Page Title, URL, and Source
        
* **Locators in Detail:**
    
    * id, name, className, tagName, linkText, partialLinkText, xpath, cssSelector
        
    * Types of XPath (absolute & relative)
        
    * XPath functions: `contains()`, `starts-with()`, `text()`, `and/or`, indexing
        
* **WebElement Basics:**
    
    * `click()`, `sendKeys()`, `getText()`, `getAttribute()`, `isDisplayed()`, `isEnabled()`, `isSelected()`
        

### **Coding Challenges (Easy → Hard)**

1. Launch Chrome browser & open Google.
    
2. Get page title & print it.
    
3. Navigate to a webpage & refresh it.
    
4. Open browser, go to Gmail, print current URL.
    
5. Close vs Quit – demonstrate difference.
    
6. Locate element using ID & enter text.
    
7. Click a link using partialLinkText.
    
8. Find element using CSS selector.
    
9. Extract text of a heading using `getText()`.
    
10. Verify element is displayed & enabled.
    
11. Write XPath for dynamic element (using contains()).
    
12. Enter username/password and click login.
    
13. Handle search box and get suggestion list.
    
14. Write relative XPath for nested elements.
    
15. Automate Wikipedia search and extract heading.
    

---

## **Day 2: Selenium Intermediate (Actions, Waits, Select, Alerts)**

### **Topics in Detail**

* **Browser Navigation Commands:**
    
    * `navigate().back()`, `navigate().forward()`, `navigate().refresh()`
        
* **Waits:**
    
    * Implicit Wait
        
    * Explicit Wait (`WebDriverWait`, `ExpectedConditions`)
        
    * Fluent Wait
        
* **Actions Class (Mouse & Keyboard):**
    
    * `moveToElement()`, `clickAndHold()`, `contextClick()`, `doubleClick()`, `dragAndDrop()`, `sendKeys(Keys.ENTER)`
        
* **Select Class (Dropdowns):**
    
    * `selectByVisibleText()`, `selectByValue()`, `selectByIndex()`
        
    * Get all options & select multiple
        
* **Alerts & Pop-ups:**
    
    * `alert.accept()`, `alert.dismiss()`, `alert.getText()`, `alert.sendKeys()`
        
* **Checkboxes & Radio Buttons**
    
* **Frames & iFrames**
    

### **Coding Challenges**

1. Open browser and navigate between 3 websites.
    
2. Implement implicit wait for element loading.
    
3. Implement explicit wait for button to become clickable.
    
4. Perform mouse hover using Actions class.
    
5. Right-click (context click) on an element.
    
6. Drag and drop element.
    
7. Handle single-select dropdown.
    
8. Handle multi-select dropdown & print all selected options.
    
9. Select last option from dropdown dynamically.
    
10. Handle simple alert (accept it).
    
11. Handle confirmation alert (dismiss it).
    
12. Handle prompt alert (enter text & accept).
    
13. Switch to iframe and click button inside it.
    
14. Handle multiple checkboxes.
    
15. Automate slider movement using Actions class.
    

---

## **Day 3: Selenium Advanced (Windows, Screenshots, TestNG, Framework)**

### **Topics in Detail**

* **Handling Multiple Windows/Tabs:**
    
    * `getWindowHandle()`, `getWindowHandles()`
        
    * Switch between windows
        
* **Taking Screenshots:**
    
    * `TakesScreenshot` interface
        
* **Handling Tables:**
    
    * Read web tables (rows & columns)
        
* **JavaScriptExecutor:**
    
    * Scroll, click hidden elements, get inner text
        
* **TestNG Basics (Integration with Selenium):**
    
    * TestNG annotations: `@Test`, `@BeforeMethod`, `@AfterMethod`, `@BeforeClass`, `@AfterClass`
        
    * Assertions (`Assert.assertEquals()`, `Assert.assertTrue()`)
        
    * TestNG XML – suite, groups, parallel execution
        
* **Page Object Model (POM) Introduction**
    
* **Mini Project:**
    
    * Login → Navigate → Perform action → Logout
        

### **Coding Challenges**

1. Open two tabs & switch between them.
    
2. Capture screenshot of homepage.
    
3. Scroll down to footer using JavaScriptExecutor.
    
4. Scroll into view of specific element.
    
5. Extract all rows from a table.
    
6. Print all links from a webpage.
    
7. Highlight element using JavaScriptExecutor.
    
8. Handle hidden element (force click with JS).
    
9. Create a simple TestNG test (open Google).
    
10. Validate page title using TestNG assertion.
    
11. Group two test cases in TestNG.
    
12. Run tests in parallel using TestNG XML.
    
13. Implement basic POM for login page.
    
14. Automate login & logout using TestNG.
    
15. Mini project: Automate demo eCommerce site – search product, add to cart, and capture screenshot.
    

\============================================================================

# **3-Day API Testing Plan (Postman + Rest Assured)**

---

## **Day 1: API & Postman Basics**

### **Topics in Detail**

* **What is API?**
    
    * REST vs SOAP
        
    * JSON vs XML
        
    * HTTP Methods (GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD)
        
* **REST API Basics:**
    
    * Request & Response structure
        
    * Status Codes (1xx, 2xx, 3xx, 4xx, 5xx)
        
    * Headers, Body, Params, Authentication (Basic, Bearer, OAuth)
        
* **Postman Basics:**
    
    * Installation & Setup
        
    * Creating Collections & Requests
        
    * Using Query Params & Path Params
        
    * Sending GET & POST requests
        
    * Using Environment Variables
        
    * Postman Tests (Assertions using JavaScript)
        

### **Hands-on Tasks (Easy → Medium)**

1. Install Postman & make your first GET request to reqres.in.
    
2. Get list of users (`GET /api/users?page=2`).
    
3. Send POST request to create a user (`POST /api/users`).
    
4. Validate status code (200, 201).
    
5. Extract response body in Postman.
    
6. Add environment variable (base URL).
    
7. Use Pre-request script to set dynamic variable (timestamp).
    
8. Send PUT request to update user.
    
9. Send DELETE request to remove user.
    
10. Add test to check if response contains `id`.
    
11. Validate response time &lt; 500ms.
    
12. Chain requests using variables.
    
13. Save response as environment variable.
    
14. Export Postman collection.
    
15. Import collection & run in Collection Runner.
    

---

## **Day 2: Rest Assured Basics (Java)**

### **Topics in Detail**

* **What is Rest Assured? Why use it with Java?**
    
* **Setup:**
    
    * Add Maven dependency for Rest Assured
        
    * Install Java + IDE (IntelliJ/Eclipse)
        
* **Rest Assured Basics:**
    
    * Request Specification
        
    * GET, POST, PUT, DELETE requests
        
    * `given()`, `when()`, `then()`
        
* **Validations:**
    
    * Status Code
        
    * Response Body
        
    * Headers
        
* **Path & Query Parameters**
    
* **JSON Handling:**
    
    * `JsonPath` class
        
    * Extract specific fields
        
    * Deserialize JSON to Java (POJO)
        

### **Coding Challenges (Easy → Hard)**

1. Set up Rest Assured Maven project.
    
2. Perform a GET request to `/api/users?page=2`.
    
3. Validate status code = 200.
    
4. Validate response header `Content-Type = application/json`.
    
5. Extract user email from JSON.
    
6. Send POST request to create user.
    
7. Validate response contains `id`.
    
8. Update user details with PUT.
    
9. Delete user & verify status = 204.
    
10. Send request with query parameters.
    
11. Send request with path parameters.
    
12. Parse JSON array response.
    
13. Deserialize JSON to Java Object.
    
14. Send request with custom headers.
    
15. Validate response schema using JSON schema validation.
    

---

## **Day 3: Advanced API Testing (Automation + Framework)**

### **Topics in Detail**

* **Authentication:**
    
    * Basic Auth
        
    * Bearer Token
        
    * OAuth2
        
* **Request & Response Logging**
    
* **Chaining API Calls**
    
* **Data-Driven API Testing:**
    
    * Use TestNG DataProviders
        
    * Externalize test data (Excel/JSON)
        
* **Advanced Validations:**
    
    * JSONPath & Hamcrest Matchers
        
    * Response time validation
        
* **Framework Setup:**
    
    * Maven + TestNG + Rest Assured integration
        
    * TestNG reports
        
    * Reusable Utility classes
        
* **Mini Project:**
    
    * Automate CRUD operations for User API
        
    * Validate using assertions
        
    * Generate TestNG report
        

### **Coding Challenges**

1. Authenticate API using Basic Auth.
    
2. Send Bearer token in header.
    
3. Chain: Create user → Get user → Update user → Delete user.
    
4. Log request & response.
    
5. Validate multiple JSON fields using Hamcrest matchers.
    
6. Validate response time &lt; 1s.
    
7. Create reusable method for GET & POST.
    
8. Data-driven POST request (create multiple users).
    
9. Use JSON file as request body.
    
10. Handle failed request & log error.
    
11. Automate 5 API endpoints of a demo app.
    
12. Integrate with TestNG (parallel execution).
    
13. Generate Allure report.
    
14. Create POJO class for User API.
    
15. Build a mini framework (BaseClass, Utils, Tests).
    

\============================================================================

# **3-Day Plan: Git + GitHub + Maven + Jenkins**

---

## **Day 1: Git & GitHub (Version Control Mastery)**

### **Topics in Detail**

* **What is Git & Why use it?**
    
    * Version Control (Centralized vs Distributed)
        
    * Git vs GitHub vs GitLab vs Bitbucket
        
* **Git Installation & Configuration:**
    
    * Install Git
        
    * Configure username & email (`git config`)
        
* **Basic Git Commands:**
    
    * `git init`
        
    * `git clone`
        
    * `git status`
        
    * `git add`
        
    * `git commit`
        
    * `git log`
        
* **Branching & Merging:**
    
    * Create branch (`git branch feature-x`)
        
    * Switch branch (`git checkout feature-x`)
        
    * Merge (`git merge`)
        
    * Resolve merge conflicts
        
* **GitHub Basics:**
    
    * Create repository
        
    * Push code to GitHub
        
    * Pull & Fetch
        
    * Fork & Pull Requests
        
    * `.gitignore`
        
* **GitHub Collaboration:**
    
    * Issues & Pull Requests
        
    * Branch protection rules
        

### **Hands-on Challenges**

1. Install Git & configure user name/email.
    
2. Create a new Git repo locally.
    
3. Add files & commit changes.
    
4. Push code to GitHub.
    
5. Clone an existing repo from GitHub.
    
6. Create a new branch & switch to it.
    
7. Make changes & merge branch into `main`.
    
8. Resolve a simple merge conflict.
    
9. Add `.gitignore` to ignore `.class` files.
    
10. Revert last commit.
    
11. Undo staged changes.
    
12. View commit history (`git log`, `git reflog`).
    
13. Create pull request on GitHub.
    
14. Fork a repository & submit changes.
    
15. Delete a branch after merge.
    

---

## **Day 2: Maven (Build & Dependency Management)**

### **Topics in Detail**

* **What is Maven?**
    
    * Build automation & dependency management tool
        
    * Maven vs Gradle vs Ant
        
* **Maven Setup:**
    
    * Install Maven
        
    * Configure `M2_HOME` & PATH
        
* **Project Structure:**
    
    * `pom.xml`
        
    * `src/main/java` & `src/test/java`
        
* **Maven Lifecycle:**
    
    * `clean`, `compile`, `test`, `package`, `install`, `deploy`
        
* **Dependencies:**
    
    * Adding Selenium/TestNG/RestAssured dependencies
        
    * Repositories (Central vs Local)
        
* **Plugins:**
    
    * Surefire Plugin
        
    * Compiler Plugin
        
* **Maven Goals:**
    
    * `mvn clean install`
        
    * `mvn test`
        
    * `mvn package`
        
* **Profiles & Properties**
    

### **Hands-on Challenges**

1. Install Maven & configure environment variables.
    
2. Create Maven project (`mvn archetype:generate`).
    
3. Add Selenium & TestNG dependencies in `pom.xml`.
    
4. Build project (`mvn clean compile`).
    
5. Run tests using `mvn test`.
    
6. Package project into a `.jar` file.
    
7. Add surefire plugin & generate reports.
    
8. Create custom profile (dev/prod).
    
9. Exclude a dependency (transitive).
    
10. Install `.jar` in local repository.
    
11. Check dependency tree (`mvn dependency:tree`).
    
12. Add property in `pom.xml` & use it.
    
13. Fail build intentionally & fix it.
    
14. Integrate with a Selenium project.
    
15. Automate build + test + package in one command.
    

---

## **Day 3: Jenkins (CI/CD Automation)**

### **Topics in Detail**

* **What is Jenkins?**
    
    * Continuous Integration & Continuous Delivery
        
    * Jenkins vs GitHub Actions vs GitLab CI
        
* **Jenkins Installation:**
    
    * Install Jenkins (WAR or Windows package)
        
    * Access Jenkins at [`http://localhost:8080`](http://localhost:8080)
        
* **Jenkins Setup:**
    
    * Create new job (Freestyle project)
        
    * Configure JDK & Maven in Jenkins
        
* **Build Pipeline Basics:**
    
    * SCM integration (Git)
        
    * Build triggers (manual, poll SCM, webhook)
        
    * Post-build actions (email notification, archive artifacts)
        
* **Pipeline as Code:**
    
    * Declarative Pipeline
        
    * Scripted Pipeline
        
    * `Jenkinsfile`
        
* **Integrations:**
    
    * Run Maven build via Jenkins
        
    * Integrate Selenium tests
        
    * Email & Slack notifications
        

### **Hands-on Challenges**

1. Install Jenkins & start it locally.
    
2. Configure JDK & Maven in Jenkins.
    
3. Create freestyle job to print "Hello Jenkins".
    
4. Integrate GitHub repo in Jenkins job.
    
5. Configure Poll SCM (`H/2 * * * *`).
    
6. Build project after Git push (webhook).
    
7. Run Maven build from Jenkins (`mvn clean install`).
    
8. Generate HTML TestNG report in Jenkins.
    
9. Archive build artifacts.
    
10. Add email notification post build.
    
11. Create a simple pipeline using Jenkinsfile.
    
12. Add parameters to Jenkins job (e.g., ENV).
    
13. Build on specific branch only.
    
14. Automate Selenium project execution in Jenkins.
    
15. Create a CI pipeline: Pull code → Build → Test → Report.
    

\============================================================================

# **3-Day Manual Testing + Agile Testing Plan**

---

## **Day 1: Manual Testing Fundamentals**

### **Topics in Detail**

* **What is Software Testing?**
    
    * Importance of Testing
        
    * QA vs QC vs Testing
        
* **Types of Testing:**
    
    * Manual vs Automation
        
    * Functional vs Non-Functional
        
* **SDLC & STLC**
    
* **Testing Levels:**
    
    * Unit, Integration, System, UAT
        
* **Testing Types:**
    
    * Smoke, Sanity, Regression, Retesting
        
* **Test Case Design:**
    
    * Test Scenario vs Test Case vs Test Script
        
    * Test Case Template
        
    * Traceability Matrix (RTM)
        
* **Bug Life Cycle:**
    
    * New → Open → Fixed → Retest → Closed
        
    * Priority vs Severity
        
* **Static Testing (Reviews, Walkthroughs)**
    
* **Testing Techniques:**
    
    * Black Box: Equivalence Partitioning, Boundary Value Analysis
        
    * White Box: Statement, Decision, Condition coverage
        

### **Hands-on Tasks**

1. Identify 10 test cases for a login page.
    
2. Write test scenarios for a calculator app.
    
3. Classify defects: priority vs severity.
    
4. Create sample RTM for a sign-up feature.
    
5. Analyze bug report & explain life cycle.
    
6. Differentiate smoke vs sanity with examples.
    
7. Identify functional vs non-functional tests.
    
8. Perform boundary value analysis for age field (18–60).
    
9. Create checklist for eCommerce checkout.
    
10. Explain negative testing with 3 examples.
    
11. Prepare test plan outline.
    
12. Write acceptance criteria for a feature.
    
13. Conduct static review for a requirement.
    
14. Explain exploratory testing steps.
    
15. List possible defects in a social media post module.
    

---

## **Day 2: Agile Testing Basics**

### **Topics in Detail**

* **What is Agile?**
    
    * Agile Manifesto & Principles
        
    * Agile vs Waterfall
        
* **Agile Methodologies:**
    
    * Scrum, Kanban, XP
        
* **Scrum Framework:**
    
    * Roles: Product Owner, Scrum Master, Development Team
        
    * Events: Sprint, Daily Stand-up, Sprint Planning, Sprint Review, Retrospective
        
    * Artifacts: Product Backlog, Sprint Backlog, Increment
        
* **Agile Testing Concepts:**
    
    * Continuous Testing
        
    * Test Early, Test Often
        
    * Shift Left Testing
        
* **Agile Test Planning:**
    
    * User Stories & Acceptance Criteria
        
    * Definition of Done (DoD)
        
* **Defect Handling in Agile:**
    
    * Bug Triage in Sprints
        
    * Regression Testing in Agile
        

### **Hands-on Tasks**

1. Create a user story for login functionality.
    
2. Write acceptance criteria using Gherkin (Given-When-Then).
    
3. Identify sprint test activities.
    
4. Create a sample sprint backlog for a to-do app.
    
5. Participate in mock daily stand-up (3 questions).
    
6. Define “Definition of Done” for a feature.
    
7. Classify tasks: story vs bug vs spike.
    
8. List 5 agile testing challenges.
    
9. Map test cases to user stories.
    
10. Plan regression testing in a 2-week sprint.
    
11. Identify roles in Scrum team.
    
12. Simulate bug triage process.
    
13. Plan exploratory testing session.
    
14. Estimate testing effort using story points.
    
15. Write 3 sample retrospective notes (Start/Stop/Continue).
    

---

## **Day 3: Advanced Manual & Agile Practices**

### **Topics in Detail**

* **Test Documentation in Agile:**
    
    * Lightweight Test Cases
        
    * Checklist-Based Testing
        
    * Mind Maps
        
* **Continuous Integration & Continuous Delivery (CI/CD) basics**
    
* **Defect Management Tools:**
    
    * JIRA basics (creating story, bug, subtask)
        
    * Linking test cases to user stories
        
* **Risk-Based Testing**
    
* **Agile Metrics:**
    
    * Velocity
        
    * Burndown Chart
        
    * Defect Leakage
        
* **Real-time Agile Testing:**
    
    * Pair Testing
        
    * Automation Integration with Agile
        
* **UAT (User Acceptance Testing)**
    
* **Agile Testing Interview Questions**
    

### **Hands-on Tasks**

1. Create a lightweight test checklist for sign-up feature.
    
2. Design a mind map for shopping cart testing.
    
3. Create a JIRA bug with proper fields.
    
4. Link bug to user story in JIRA (sample workflow).
    
5. Prepare UAT test cases for a payment module.
    
6. Identify risks in an eCommerce release.
    
7. Plan regression suite selection.
    
8. Create burndown chart (sample data).
    
9. Prioritize backlog items using MoSCoW.
    
10. Suggest automation candidates for regression.
    
11. Write sample release note for testers.
    
12. Conduct mock sprint review demo.
    
13. List top 10 Agile testing interview questions.
    
14. Plan test data for login & payment.
    
15. Final mini-project: Plan testing for a 2-week sprint (create user stories, test cases, and a basic regression plan).
    

\============================================================================

# **Complete Framework Creation Plan (7 Steps)**

This plan can be executed in **7 steps (or 7 days)**, but you can compress it into **3–4 days for fast-track**.

---

## **Step 1: Project Setup & Environment**

### **Objectives**

* Set up the project structure using **Maven**.
    
* Add required dependencies (Selenium, TestNG, WebDriverManager, Log4j, ExtentReports).
    

### **Activities**

1. Create Maven Project (`mvn archetype:generate` or via IDE).
    
2. Create `src/main/java` and `src/test/java` packages.
    
3. Add dependencies in `pom.xml`:
    
    * Selenium
        
    * TestNG
        
    * WebDriverManager
        
    * Logging (Log4j or SLF4J)
        
    * Reporting (Extent Reports/Allure)
        
4. Configure Git repository for version control.
    

---

## **Step 2: Base Setup (Driver & Config Management)**

### **Objectives**

* Create a **Base Class** to initialize WebDriver.
    
* Externalize configuration (URL, browser, credentials).
    

### **Activities**

1. Create [`BaseTest.java`](http://BaseTest.java):
    
    * Setup & teardown methods (`@BeforeMethod`, `@AfterMethod`).
        
    * Browser factory (Chrome, Firefox, Edge).
        
2. Add [`config.properties`](http://config.properties) for environment details.
    
3. Add utility class for reading properties (`ConfigReader`).
    

---

## **Step 3: Utilities & Helpers**

### **Objectives**

* Add reusable utilities for common tasks.
    

### **Activities**

1. Create utility classes:
    
    * `WaitUtils` (Explicit/Fluent Waits)
        
    * `ActionUtils` (mouse hover, drag & drop)
        
    * `ScreenshotUtils`
        
    * `ExcelUtils` or JSON reader for test data
        
2. Add constants class ([`Constants.java`](http://Constants.java)).
    

---

## **Step 4: Page Object Model (POM) Implementation**

### **Objectives**

* Implement **Page Object Model** for better maintainability.
    

### **Activities**

1. Create package: `pages`
    
2. Create separate classes for each page:
    
    * LoginPage
        
    * DashboardPage
        
    * ProductPage
        
3. Add elements using `@FindBy` (PageFactory).
    
4. Write methods (login, search, add to cart, etc.).
    

---

## **Step 5: TestNG Integration & Test Scripts**

### **Objectives**

* Write TestNG test cases using POM.
    
* Implement Assertions & Groups.
    

### **Activities**

1. Create `tests` package.
    
2. Write sample tests (Login Test, Product Search Test).
    
3. Add TestNG annotations:
    
    * `@BeforeSuite`, `@BeforeMethod`, `@AfterMethod`
        
    * `@Test(groups = {"smoke","regression"})`
        
4. Create `testng.xml`:
    
    * Parallel execution
        
    * Include/exclude tests
        

---

## **Step 6: Reporting, Logging & CI/CD**

### **Objectives**

* Add **reports, logs, and CI integration**.
    

### **Activities**

1. Integrate Extent Reports or Allure.
    
2. Add Log4j for logging.
    
3. Configure `mvn clean test` for CI builds.
    
4. Set up **Jenkins job**:
    
    * Pull code from GitHub
        
    * Run tests via Maven
        
    * Generate reports
        
    * Send email/slack notification
        

---

## **Step 7: Final Enhancements & Scalability**

### **Objectives**

* Make framework **scalable, reusable & CI-ready**.
    

### **Activities**

1. Add **Data-Driven Testing**:
    
    * Excel, JSON, or DB integration
        
2. Implement **Retry Logic** (TestNG IRetryAnalyzer).
    
3. Add cross-browser support (Grid or Docker-Selenium).
    
4. Optimize waits & parallel execution.
    
5. Document framework ([README.md](http://README.md) or Wiki).
    

---

# **Deliverables after Framework Creation**

* **Reusable Automation Framework** (Java + Selenium + TestNG + Maven)
    
* Configurable ([`config.properties`](http://config.properties))
    
* POM-based design
    
* Logging & Reporting
    
* Integrated with Jenkins CI/CD
    
* Ready for regression, smoke, and data-driven testing
    

\============================================================================
