Bit updated and organized version of Testing concepts.
Core QA Foundations (Must Know)
Learn why and when things are tested.
• Software Testing Basics
○ Test cases, test plans, test scenarios
○ Bug life cycle
• SDLC (Software Development Life Cycle)
• Types of Testing
○ Smoke, Sanity, Regression, Functional
• Manual Testing techniques
• When to use manual vs automation testing
👉 Goal: Understand testing strategy, not just tools.
2️⃣ Automation Testing (High Priority)
This is the main focus of the role.
• Selenium
○ Selenium WebDriver
○ Locators (ID, XPath, CSS, etc.)
○ Handling waits, frames, alerts
• Automation Frameworks
○ TestNG / JUnit
○ Page Object Model (POM)
• Java (for automation)
○ OOP basics
○ Exceptions, Collections
• Maven
○ Project structure
○ Dependencies
👉 Goal: Be able to design and maintain automation frameworks.
3️⃣ API Testing
Very important for backend validation.
• What APIs are (REST basics)
• HTTP methods (GET, POST, PUT, DELETE)
• Status codes
• API testing tools & concepts
• Validating JSON/XML responses
• API automation basics
👉 Goal: Test services without UI.
4️⃣ Performance & Load Testing
Used to test stability & scalability.
• JMeter
○ Thread groups
○ Samplers
○ Listeners
• Load vs Stress vs Performance testing
• Analyzing response time, throughput, errors
👉 Goal: Ensure the app works under real-world load.
5️⃣ Database Testing (SQL)
Critical for data validation.
• SQL basics
• Writing complex queries
• Joins, subqueries
• Oracle SQL
• MSSQL
• Backend data validation
👉 Goal: Verify data correctness behind the scenes.
6️⃣ Agile / SAFe & QA Process
How QA works in real teams.
• Agile principles
• Scrum ceremonies
○ Sprint planning, daily stand-up, retrospectives
• QA role in Agile
• Defect tracking & reporting
• Test coverage & reporting
👉 Goal: Work smoothly with developers & product teams.
7️⃣ DevOps & Infrastructure Awareness (Preferred but Valuable)
Not mandatory, but strong advantage.
• Linux (RHEL basics)
• Docker
○ Containers
○ Testing in containerized environments
• AppDynamics (APM basics)
• Understanding infrastructure dependencies
👉 Goal: Design tests that reflect real production usage.
8️⃣ Communication & Professional Skills
Often overlooked, but critical.
• Writing clear defect reports
• Estimating testing effort
• Communicating blockers & risks
• Cross-team collaboration
Advanced QA Concepts
• Automation: Selenium, TestNG, Page Object Model
• API Testing: Postman, REST/SoapUI
• Database Testing: SQL Queries, Joins, Data Validation
• CI/CD Integration: Jenkins, Maven
• Performance Testing Tools: JMeter
• DevOps Awareness: Docker, Linux, AppDynamics
• Metrics: Defect Density, Test Coverage, Test Effectiveness
============
Beginner Level (Foundations)
Goal: Understand what QA is, manual testing, and basic processes.
Topics to cover:
1. Software Testing Basics
○ Definition of testing
○ Purpose: detect defects, ensure functionality
○ Manual vs automation
○ Types of testing: Functional, Regression, Smoke, Sanity, Exploratory
2. SDLC & STLC
○ Software Development Life Cycle
○ Testing Life Cycle (Test planning → Design → Execution → Reporting)
3. Test Artifacts
○ Test Plan
○ Test Case
○ Test Scenario
○ Bug/Defect life cycle
4. Manual Testing Skills
○ Executing test cases
○ Logging defects
○ Retesting and regression
○ Understanding priority & severity
○ When to automate vs manual
5. Day-to-Day QA Activities
○ Reading PM specs
○ Test case creation
○ Test execution
○ Defect logging
○ Reporting & status updates
Key Tools (Beginner-Friendly)
• Jira / Bugzilla for defect tracking
• MS Excel / Google Sheets for test cases
2️⃣ Intermediate Level (Hands-On QA / Technical Skills)
Goal: Start automation, API, and database testing.
Topics to cover:
Automation Testing
• Selenium Basics
○ What is Selenium & why we use it
○ Locators: ID, Name, XPath, CSS
○ WebDriver commands: click, sendKeys, getText
• Automation Frameworks
○ TestNG / JUnit basics
○ Page Object Model (POM)
○ Running tests via Maven
• Java for Automation
○ Variables, loops, conditions
○ OOP basics: class, object, inheritance
○ Exception handling
○ Collections (ArrayList, HashMap)
API Testing
• REST API basics
• HTTP methods: GET, POST, PUT, DELETE
• Status codes: 200, 400, 404, 500
• Validating JSON/XML responses
• Tools: Postman / SoapUI
Database Testing
• SQL Basics: SELECT, INSERT, UPDATE, DELETE
• Joins, subqueries, aggregates
• Oracle & MSSQL differences
• Data validation using SQL queries
Performance Testing Basics
• Introduction to JMeter
• Thread groups, samplers, listeners
• Load vs Stress vs Performance testing
• Analyzing response times
Intermediate QA Skills
• Understanding automation candidates
• Regression testing strategy
• Bug reporting best practices
• Traceability matrix (requirement → test case → defect)
3️⃣ Advanced Level (Pro / Job-Ready Skills)
Goal: Be a full-stack QA engineer, ready for senior roles.
Advanced Automation
• Selenium advanced:
○ Handling dynamic elements
○ Frames, alerts, pop-ups
○ Wait strategies (Explicit, Implicit, Fluent waits)
• Automation frameworks:
○ Data-driven, Keyword-driven
○ Hybrid frameworks
• CI/CD integration: Jenkins, Git
Advanced API & Backend Testing
• API automation with RestAssured or similar
• Authentication & headers
• Chaining API requests
• Backend validation with DB + API + UI
Advanced Performance Testing
• JMeter:
○ Correlation
○ Parameterization
○ Assertions
• Load testing strategies for production-like scenarios
• Reporting & bottleneck analysis
DevOps / Infrastructure Awareness (Optional but Preferred)
• Linux commands for QA
• Docker basics for testing environments
• AppDynamics / APM tools
• Understanding system dependencies & network impacts
Leadership / Process Skills
• QA metrics: test coverage, defect density
• Risk-based testing
• Mentoring juniors
• Agile/SAFe ceremonies and contributions
=================
Software testing is the process of checking a software product to ensure it works as designed and as expected, and to identify defects before release.
Testing is about finding bugs, not proving there are none.
• How would we know the quality is good?
• What do testers actually do day-to-day?
Imagine an app works exactly as designed, but the design itself is confusing for users.
👉 As a tester, would you still raise a defect?
Answer Yes or No, and why (one line).
Even if software works as designed, bad design that impacts users is a valid defect.
This is often called:
• Usability defect
• Requirement/design defect
Typical QA Engineer Daily Activities
• Understand PM / requirement specifications
• Review design documents
• Create test plans
• Write test cases
• Execute manual test cases
• Identify automation candidates
• Write and execute automation scripts
• Log defects with detailed information
• Communicate testing status & reports
• Re-test and verify fixes after defects are resolved
Can you name one situation where manual testing is better than automation?
• Sudden system shutdown / interruptions → hard to automate
• Look and feel (UI/UX) → best judged by a human
Automate when:
• Test is repetitive
• Test is time-consuming
• Test is stable
• Regression tests
🔹 Test manually when:
• Look & feel / usability
• One-time or ad-hoc tests
• Hardware / system interruptions
• Exploratory testing
A test case is a set of steps executed to verify an end-to-end functionality and compare the actual result with the expected result.
📌 Key parts to always remember:
• Steps
• Expected result
• Actual result
• Pass / Fail
A test plan is a roadmap that defines what needs to be tested, how it will be tested, timelines, setup requirements, risks, and deliverables.
est Plan vs Test Case (Very Quick Comparison)
Test Plan Test Case
High-level document Detailed, step-by-step
Defines strategy & scope Verifies functionality
Created once per release Many test cases
Answers what & how Answers does it work?
💡 Easy memory trick:
• Plan = Strategy
• Case = Execution
If a requirement changes in the middle of a sprint, which document is more likely to be updated first?
👉 Test Plan or Test Case?
(Just one word, and why — one line.)
he PM specification (or requirement document) is the source of truth.
Here’s how it flows in QA:
1. Requirement changes → PM specification updated
2. QA updates Test Plan to reflect scope, strategy, and risks
3. QA updates Test Cases for specific steps and expected results
💡 Rule of thumb:
Always trace test plans and test cases back to the latest requirement.
Software testing is the process of evaluating a product to ensure it meets quality standards before release.
The purpose of testing is to identify defects, ensure the software functions as intended, and report discrepancies between expected and actual results.
• Manual Testing: Testing performed by humans by executing test cases step by step, without automation tools.
• Automation Testing: Testing performed using tools or scripts that execute test cases automatically, reducing human effort and increasing repeatability.
Functional testing verifies that the software works according to the specified requirements.
Focus: End-to-end functionality
Example: Logging in, submitting a form, checking results.
Regression testing ensures that new changes or bug fixes do not break existing functionality.
Smoke testing is a quick check of the critical functionalities to determine if the build is stable enough for detailed testing.
Example: Launch app → check login, main page load → if fails, testing stops.
Sanity testing is a focused check of specific functionality after a minor change or bug fix to ensure it works correctly.
Example: After fixing a payment bug → test payments, checkout, not the whole site.
Difference from smoke:
• Smoke = broad, shallow
• Sanity = narrow, deep
Exploratory testing is unscripted, creative testing where testers explore the application to find defects that are not covered in formal test cases.
Type Purpose Depth When Used
Functional Verify requirements End-to-end Every build
Regression Ensure fixes don’t break old features Broad After bug fixes or changes
Smoke Quick health check Shallow New build arrival
Sanity Verify specific fixes Narrow After minor changes
Exploratory Find unexpected defects Deep When testers explore freely
A new build of an e-commerce app is delivered. You want to quickly check that the app launches, login works, and main pages load before running detailed tests.
Reason: You’re doing a quick, high-level check of critical features to see if the build is stable enough for deeper testing.
The developer fixed a bug in the payment module. You now want to check only the payment functionality to make sure it works correctly, without testing the whole app.
Sanity Testing!
Reason: You’re doing a focused check on the specific area that was changed (payment module) to ensure it works, without testing unrelated features.
After a new release, you want to run all your existing test cases to make sure that new changes haven’t broken anything in the app.
Regression Testing!
Reason: You’re verifying that existing functionality still works after new changes or bug fixes.
You are testing a social media app without any pre-written test cases. You try posting, commenting, messaging, and even unusual sequences to find bugs.
Exploratory Testing!
Reason: You’re freely exploring the app to find defects that aren’t covered by formal test cases, relying on your intuition and creativity.
A new build of a banking app is delivered. You just want to check that login works and the dashboard loads, before starting detailed functional testing of all features.
Smoke Testing again!
Reason: You’re doing a quick check of the critical functionality (login + dashboard) to decide if the build is stable enough for deeper testing.
===========
Non-Functional Testing
Testing that doesn’t check specific functionality but how the system behaves.
Key types:
Type Purpose Example
Performance Testing System responsiveness and stability under load Check login speed under 1000 users
Load Testing How system handles expected user load Website with 10,000 users at peak
Stress Testing System behavior under extreme load Push system beyond capacity until it breaks
Scalability Testing Can system scale with increasing users Adding new servers and testing performance
Security Testing Detect vulnerabilities SQL injection, XSS attacks
Usability Testing Is the system user-friendly Test UI/UX with real users
Compatibility Testing Works across OS, browsers, devices Chrome, Firefox, Mobile, Tablet
Reliability / Stability System uptime & crash frequency 24-hour run test
Accessibility
Internalization
Localization
Rule: Non-functional = “how” it works, not “what” it does.
Testing Levels
Different stages of testing in SDLC
Level Purpose Example
Unit Testing Test individual components Login function tested by dev
Integration Testing Test interactions between modules Payment + Order modules together
System Testing Test full application Full website flow
Acceptance Testing (UAT) Verify system meets business requirements Client tests new release
Alpha / Beta Testing Early user feedback Beta testers for app launch
Test Strategies
Approach to testing: how you plan to test a system
Common strategies:
• Black Box Testing – Test functionality without knowing code
• White Box Testing – Test internal logic / code structure
• Gray Box Testing – Partial knowledge of code + functionality
• Risk-Based Testing – Focus on high-risk areas first
• Ad-hoc Testing – Informal testing without documentation
• Exploratory Testing – Test creatively to find unexpected bugs
==========
Bug / Defect Life Cycle
A bug life cycle describes the states a defect goes through from discovery to closure.
Here’s the typical flow:
1. New / Open – Bug is logged by tester.
2. Assigned – Developer is assigned to fix it.
3. In Progress – Developer is working on the fix.
4. Fixed / Resolved – Developer fixes the bug.
5. Retest / Verified – Tester retests to confirm the bug is fixed.
6. Closed – Bug is confirmed fixed and no longer exists.
7. Reopened – If bug persists, tester reopens it.
💡 Key point: Every bug must have a status to track progress.
Term Definition Example
Severity How serious the bug is Crash on login → Critical
Priority How soon it should be fixed Minor typo on homepage → Low
Quick rules of thumb:
• Severity → Technical impact
• Priority → Business impact / urgency
Example scenarios:
1. App crashes on checkout → Critical severity, High priority
2. Logo misalignment on mobile → Low severity, Low priority
3. Payment fails only for VIP users → High severity, High priority
A banking app allows users to log in. On rare occasions, entering a wrong password displays an unprofessional error message.
• Severity: ?
• Priority: ?
An an e-commerce app, the “Buy Now” button doesn’t work for all users, preventing purchases.
• Severity: ?
• Priority: ?
Scenario 1: Banking app — unprofessional error message
• Severity: Low → The app still works; it’s just a display/message issue.
• Priority: High → Because it affects the user experience and must be fixed soon.
Scenario 2: E-commerce app — “Buy Now” button doesn’t work
• Severity: High/Critical → Users cannot complete purchases, major functionality broken.
• Priority: High → Must fix immediately, because it impacts business revenue.
💡 Rule of thumb:
• Severity = technical impact (how bad is the bug?)
• Priority = business urgency (how soon to fix?)
A mobile app crashes only when uploading a profile picture larger than 10MB.
• Severity: ?
• Priority: ?
the severity is high/critical, because the app crashes, which is a serious technical problem.
=======================
Test coverage measures how much of the application or requirements have been tested.
Key idea:
• Helps QA ensure no functionality is left untested.
• Can be measured in multiple ways:
○ Requirements coverage: How many requirements have corresponding test cases.
○ Code coverage: (For automation) How much code is exercised by tests.
Example:
• Requirement: 5 features → You have 5 test cases → 100% coverage
• Requirement: 5 features → You have 3 test cases → 60% coverage
A traceability matrix links requirements → test cases → defects, ensuring every requirement is tested.
Why it’s important:
• Shows which requirements are covered
• Helps find gaps in testing
• Useful for audits and project documentation
Example Table:
Requirement ID Requirement Description Test Case ID Test Case Description Defect ID
R1 Login functionality TC1 Verify login with valid credentials D1
R2 Payment processing TC2 Verify checkout with card D2
Every requirement should have at least one test case and traceable defects if found.
You have 10 requirements for an app, and only 6 have test cases written.
• What’s your test coverage percentage?
• What should you do next as a tester?
• Test coverage: 60% ✅
• Next step: Create the missing 4 test cases to cover the remaining requirements.
💡 Key takeaway:
Test coverage is only meaningful if all requirements are linked to test cases — that’s why the traceability matrix exists.
================
Key Sections of a Test Plan
A professional Test Plan usually has these main sections:
1. Test Plan ID / Title
○ Unique name for the test plan
○ Example: TP_ECommApp_Release1.0
2. Introduction / Objective
○ What is being tested and why
○ Example: The plan verifies the functionality and performance of the checkout and payment modules.
3. Scope
○ In-scope: What features/modules will be tested
○ Out-of-scope: What will not be tested
○ Example:
§ In-scope: Login, Checkout, Payment
§ Out-of-scope: Admin dashboard, analytics module
4. Test Strategy / Approach
○ How testing will be done (Manual, Automation, Tools)
○ Example:
§ Regression: Automation using Selenium
§ Functional: Manual testing of all new features
5. Testing Types
○ List all types planned for this release
○ Example: Functional, Regression, Smoke, Performance, Security
6. Test Environment / Setup
○ OS, Browsers, Devices, Database, Test Data
○ Example: Chrome v118, Windows 10, Oracle DB, test account credentials
7. Test Deliverables
○ Documents or reports to be delivered
○ Example: Test Cases, Test Execution Report, Defect Report, Test Coverage Report
8. Entry / Exit Criteria
○ Entry: When testing can start
○ Exit: Conditions to declare testing complete
○ Example:
§ Entry: Build deployed on test server
§ Exit: All critical and high defects resolved, test cases executed
9. Roles & Responsibilities
○ Who does what
○ Example:
§ QA Tester → Test execution, defect logging
§ QA Lead → Test plan approval, reporting
10. Schedule / Timeline
○ Start and end dates for each testing phase
11. Risks & Mitigation
○ Possible issues and how to handle them
○ Example: Delay in build → Impact testing timeline
Writing a Simple Example Test Plan
Let’s do a mini-test plan for login functionality:
Test Plan ID: TP_Login_Release1.0
Objective: Verify login works for valid and invalid credentials
Scope:
• In-scope: Login page, forgot password
• Out-of-scope: Dashboard features
Strategy:
• Manual testing for functional coverage
• Automation for regression using Selenium
Testing Types: Functional, Regression, Smoke
Environment: Windows 10, Chrome v118, TestDB v1.0
Deliverables: Test cases, Defect reports, Execution report
Entry Criteria: Build deployed on test environment
Exit Criteria: All critical defects resolved, test cases executed successfully
Roles & Responsibilities: QA Tester: execute test cases; QA Lead: review results
Schedule: Jan 10 – Jan 15
Risks & Mitigation: Build delay → Adjust schedule
✅ Step 4: Key Tips
1. Keep it simple but complete
2. Always include Scope, Strategy, and Entry/Exit Criteria
3. Use tables for clarity (like Test Deliverables, Environment, Roles)
4. Keep it aligned with requirements
objective / Introduction:
The purpose of this test plan is to verify the login, registration, and logout functionalities of the e-commerce application. The testing will ensure that users can successfully register, log in, and log out as expected.
Scope:
• In-Scope:
○ Login page functionality (valid and invalid credentials)
○ Registration page functionality
○ Logout functionality
○ Display of error messages for invalid actions
• Out-of-Scope:
○ Backend database storage and validation
○ Features not visible on the UI or not part of the current requirements
Expanded Scope for Login & Registration Test Plan
In-Scope:
• Login page functionality:
○ Valid login
○ Invalid login (wrong password, non-existing user)
○ “Forgot Password” link (if exists)
• Registration page functionality:
○ Valid registration
○ Invalid registration (missing fields, invalid email/password)
○ Duplicate email/user registration
• Logout functionality
• Display of error messages and validation messages for invalid actions
• UI elements: Buttons, links, labels, text fields, alignment, and responsiveness on supported browsers/devices
• Basic accessibility checks (optional if part of requirement)
Out-of-Scope:
• Backend database verification
• Security testing (SQL injection, etc.)
• Performance testing (load/stress)
• Features not part of login/registration/logout
• Third-party integrations (email service, payment, etc.)
✅ Key tip: Scope should clearly define what is tested vs. not tested, including functional, UI, and minor validations, so nothing is ambiguous.
Test Strategy / Approach (Detailed)
1️⃣ Testing Approach:
• Manual Testing:
○ All functional flows will be manually tested to ensure correctness, including valid/invalid login, registration, logout, and error messages.
○ Manual testing is essential for UI/UX verification, accessibility, and hardware-dependent scenarios (e.g., mobile, kiosk devices, conference room hardware).
• Automation Testing:
○ Automation will be implemented for regression tests, covering login and registration flows on desktop and web platforms.
○ Automation Tools: Selenium WebDriver for web, Appium for mobile (if supported), TestNG for test execution and reporting.
○ Automation will include positive, negative, and boundary tests.
2️⃣ Types of Testing Included:
• Functional Testing: Verify login, registration, logout, and error messages.
• Regression Testing: Automated scripts to ensure fixes do not break existing functionality.
• Smoke Testing: Quick check after each build to ensure the critical login/registration flows are working.
• Sanity Testing: Focused testing after minor changes in login/registration modules.
• Exploratory Testing: Testers will explore edge cases like multiple simultaneous logins or unusual characters in username/password fields.
• Cross-Browser Testing: Chrome, Firefox, Edge, Safari (desktop).
• Mobile Device Testing: Android/iOS supported versions (manual only if automation not feasible).
3️⃣ Risk-Based Testing Considerations:
• High-Risk Areas:
○ Login failures → blocks user access
○ Registration errors → may prevent new users
○ Error messages not displayed properly → poor UX
• Medium-Risk Areas:
○ UI alignment or responsiveness issues
○ Non-critical validation messages
• Mitigation:
○ High-risk areas will have priority testing with both manual and automated scripts.
○ Medium-risk areas tested manually based on time constraints.
4️⃣ Tools and Environment:
• Automation Tools: Selenium WebDriver, Appium (mobile), TestNG, Maven
• Defect Tracking: Jira / Bugzilla
• Test Management: TestRail / Zephyr
• Browsers: Chrome, Firefox, Edge, Safari
• Mobile Devices: Android 12+, iOS 15+ (manual if automation not possible)
• Test Data: Use valid and invalid usernames/passwords, emails, and boundary inputs.
5️⃣ Additional Points:
• Tests will follow requirement traceability (RTM) to ensure all requirements are covered.
• Regression suite will be updated after each major release.
• Any critical bug discovered during smoke or exploratory testing will be immediately reported to the dev team.
• Reporting: Daily/weekly test execution summary reports will be provided to QA lead/project manager.
✅ Key Tip:
A good Test Strategy always explains:
1. How testing will be done (manual, automation)
2. Which types of testing are included
3. Tools and environments
4. Risk prioritization
5. Reporting and traceability
Test Deliverables
The following deliverables will be prepared and submitted during and after testing:
1. Test Plan Document
○ This document itself (Login & Registration Test Plan v1.0) describing scope, strategy, approach, roles, environment, risks, and schedule.
2. Test Cases / Test Scripts
○ Manual Test Cases: Step-by-step scenarios covering valid/invalid login, registration, logout, and error messages.
○ Automation Scripts: Selenium or Appium scripts for regression testing of login and registration flows.
3. Test Execution Reports
○ Summary of executed test cases, including pass/fail status, execution dates, and tester details.
4. Defect / Bug Reports
○ Log of all defects found during testing, including:
§ Bug ID
§ Description
§ Severity & Priority
§ Steps to reproduce
§ Status (Open / Fixed / Reopened / Closed)
§ Assigned developer
5. Test Coverage Report
○ Percentage of requirements covered by test cases.
○ Traceability of each requirement to its test case and related defects.
6. Automation Execution Reports
○ Results from Selenium/Appium executions, including passed/failed scripts, screenshots of failures, and logs.
7. Daily/Weekly QA Status Reports
○ Summarizing progress, blockers, defects raised, and pending actions for QA lead and project manager.
8. Defect Trend & Metrics Reports (Optional)
○ Defect density, severity distribution, and test effectiveness metrics to measure quality.
✅ Key Tip:
Deliverables should cover everything QA produces, not just defects. It shows that testing is structured, measurable, and accountable.
Step 6: Entry & Exit Criteria. This is a crucial part of any test plan, as it defines when testing can start and when it is considered complete.
Step 6: Entry & Exit Criteria
1️⃣ Entry Criteria (When QA Can Start Testing)
These are the conditions that must be met before testing begins.
For our Login & Registration feature, examples could be:
• The build is deployed to the test environment.
• All required test data (valid/invalid usernames, passwords, emails) is available.
• Test environment (browsers, devices, DB, servers) is configured and accessible.
• Test cases are reviewed and approved by QA lead.
• Required tools (Selenium, TestRail, Jira) are installed and configured.
• No critical blocker defects in the build (e.g., the app must launch successfully).
2️⃣ Exit Criteria (When QA Considers Testing Complete)
Conditions that indicate testing is done for this feature.
Examples for Login & Registration:
• All test cases have been executed.
• All critical and high-severity defects are fixed and verified.
• Remaining low/medium severity defects are documented and accepted by stakeholders.
• Test coverage meets the defined threshold (e.g., 100% of requirements for login/registration).
• Test execution and defect reports are completed and submitted.
• QA lead / Project manager approves testing closure.
✅ Pro Tip:
Entry & Exit Criteria make QA structured. They help avoid starting tests too early or ending them prematurely.
Roles & Responsibilities
Purpose:
Clearly defines who is responsible for each QA activity, ensuring accountability and smooth testing execution.
Example for Login & Registration Test Plan
Role Responsibility
QA Tester / Test Engineer - Execute manual test cases
- Run automation scripts
- Log defects with details
- Re-test fixed defects
- Participate in daily QA meetings
QA Lead / Test Lead - Review and approve test plan & test cases
- Assign test tasks to testers
- Track test execution and defect progress
- Prepare QA status reports
- Approve testing closure
Developer / Dev Team - Fix defects raised by QA
- Provide clarifications on requirements or design issues
- Support QA during environment setup if needed
Project Manager / Product Owner - Review and approve test strategy, scope, and priorities
- Accept residual risks or low-priority defects
- Coordinate between QA, Dev, and business teams
Automation Engineer (if separate) - Design and maintain automation scripts
- Execute regression automation
- Provide automation execution reports
✅ Pro Tip:
Even if it’s a small team, listing roles shows that responsibilities are clear — this is essential for audits, collaboration, and interviews.
Step 8: Test Schedule / Timeline
Activity Phase / Timing Notes
Test Plan Preparation Initial Requirement Gathering Prepare test plan, review requirements with BA/PM
Test Case Design Development Stage Write and review test cases based on requirements
Test Execution After build deployed to Test Environment Functional, UI, regression, and integration tests
Integration Testing Pre-release / End-to-End Testing Test interactions between login/registration and other modules
Production / Release Testing During Release Smoke / sanity checks to ensure production readiness
Regression Testing On new feature addition or hotfix/patch release Re-run existing automated and manual tests to verify stability
Smoke & Sanity Testing On every new build Quick verification to decide if detailed testing can proceed
Exploratory Testing If time permits / End of cycle Deep testing for edge cases and unexpected issues
✅ Key Tip:
The schedule should be realistic and linked to SDLC stages. Always highlight critical checkpoints like new builds, patches, or pre-release testing.
Step 9: Risks & Mitigation
Risk Impact Mitigation
Tester Unavailability Delays in test execution Maintain backup testers, cross-train team members, and plan overlapping schedules
Server / Environment Downtime Testing cannot proceed Use a dedicated test environment, schedule builds during stable server times, maintain backup environments
Bottleneck Points in Testing Delays in regression or integration testing Prioritize high-risk areas, use risk-based testing, automate repetitive tests
Security Risks Potential vulnerabilities if not tested Include basic security validations (login throttling, invalid inputs), escalate critical security issues to dev/security team
Market-driven Feature Changes New features may change testing scope Update test plan and test cases regularly, adopt Agile methodology for iterative testing
Budget / Timeline Constraints Insufficient time or resources for thorough testing Risk-based prioritization of testing, focus on critical and high-severity scenarios first
Incomplete Requirements / Miscommunication Test gaps or missed scenarios Early collaboration with PM/BA, review requirement documents, maintain RTM (Requirement Traceability Matrix)
===============
SDLC (Software Development Life Cycle)
Definition:
SDLC is a process followed to design, develop, test, and deliver software. Testing is integrated into every phase to ensure quality.
Main Phases:
1. Requirement Analysis
○ Gather functional & non-functional requirements.
○ QA ensures requirements are clear, testable, and complete.
2. Design
○ High-level and detailed design documents.
○ QA reviews design for testability, data flow, and UI logic.
3. Implementation / Coding
○ Developers write code.
○ QA may start unit testing or prepare test cases based on design.
4. Testing / QA
○ Functional, regression, integration, system, UAT, and non-functional testing happen here.
○ QA verifies software works as expected and defects are logged.
5. Deployment / Release
○ Software moves to production.
○ QA may perform smoke/sanity testing in production.
6. Maintenance
○ Bug fixes, patches, and enhancements.
○ Regression and re-testing ensures stability.
2️⃣ Agile / Scrum
Agile:
Agile is an iterative, incremental approach to software development. Focus is on frequent delivery, collaboration, and adaptability.
Scrum:
• Framework for implementing Agile.
• Work is divided into Sprints (usually 2–4 weeks).
QA in Agile / Scrum:
• QA is involved from day 1, not just at the end.
• Continuous testing, automation, and collaboration with devs and product owners.
• Daily Standups: QA reports testing progress, blockers.
• Sprint Review / Retrospective: QA shares defects, successes, and process improvements.
QA Activities in Agile:
• Test case creation during sprint planning.
• Smoke testing of build during sprint.
• Regression and exploratory testing.
• Automation scripts updated each sprint.
3️⃣ Advanced Testing Methodologies
a) TDD (Test-Driven Development)
• Definition: Write tests first, then write code to pass the tests.
• Purpose: Ensures code meets requirements from the start and is easier to maintain.
• QA Role: Review unit tests, understand test coverage, and may contribute to integration tests.
b) BDD (Behavior-Driven Development)
• Definition: Testing driven by behavior specifications, often written in Gherkin syntax (Given-When-Then).
• Purpose: Improves collaboration between QA, Dev, and Business.
• Example:
○ Feature: Login
○ Scenario: Successful login with valid credentials
§ Given: User is on login page
§ When: User enters valid username & password
§ Then: User should see the dashboard
c) Blue-Green / Canary Testing (Release Strategies)
• Blue-Green: Deploy to a duplicate environment (Blue = current, Green = new), switch traffic gradually.
• Canary: Release to a small subset of users first, monitor, then full rollout.
• QA validates functionality in new production environments.
d) Continuous Testing / DevOps Integration
• Automated tests integrated into CI/CD pipelines (Jenkins, GitHub Actions).
• Immediate feedback on build quality, faster bug detection, supports Agile and TDD/BDD.
💡 Key Takeaways:
• SDLC gives structure to software development.
• Agile / Scrum brings flexibility & early QA involvement.
• TDD & BDD ensure testing drives development.
• Modern QA is continuous, automated, and integrated into DevOps.
================
Have you ever written or seen automation scripts in Java or any language before? (Yes / No)
Key Concepts You Should Know Beyond Basic UI Scripts
a) Locators / Object Identification
• How your automation script finds buttons, text fields, links, etc.
• Examples:
○ ID, Name, ClassName, XPath, CSS Selector
• Why: Without good locators, scripts break easily.
b) Assertions / Validation
• Checking expected vs actual results after actions.
• Example: After login, verify dashboard page appears.
• Assertions types: Assert.AreEqual, Assert.IsTrue, Assert.IsFalse (in NUnit / Java equivalents in TestNG/JUnit).
c) Waits / Synchronization
• Apps may take time to load, so scripts need waits to avoid failures.
• Types:
○ Implicit Wait: Wait for all elements (not precise).
○ Explicit Wait: Wait for a specific element or condition.
○ Fluent Wait: Custom wait with polling interval and timeout.
d) Data-Driven Testing
• Running the same test with different sets of input data.
• Example: Login with multiple usernames/passwords.
• Tools: CSV, Excel, JSON, or DB as a source.
e) Modular / Reusable Functions
• Break actions into methods/functions:
○ Login(username, password)
○ Logout()
○ ClickButton(buttonName)
• Benefits: Easier maintenance and less code duplication.
f) Handling Popups / Alerts / Frames
• Learn to handle alerts, confirmation dialogs, file upload windows, and iframe switches.
g) Reporting
• After execution, you need logs or test reports.
• NUnit / TestNG can generate HTML or XML reports showing pass/fail for each test.
h) CI/CD Integration
• Running automation in Jenkins, GitHub Actions, or Azure DevOps automatically on each build.
Q1: Why are locators important in automation? What happens if they are not unique or change frequently?
Key points you said:
• Locators identify UI elements.
• Non-unique locators → wrong element clicked → test fails.
• Changing locators → scripts need updates → maintenance overhead.
What is the difference between implicit wait, explicit wait, and fluent wait in automation? Can you explain when to use each?
• Implicit Wait:
○ Sets a default wait time for all elements in the script.
○ Example: Wait 10 seconds for any element before throwing “not found” error.
○ Use when: You want a simple global wait for element presence.
• Explicit Wait:
○ Waits for a specific condition (like element clickable, visible, or loaded).
○ Example: Wait until login button is visible before clicking.
○ Use when: Only some elements may take longer or need precise conditions.
• Fluent Wait:
○ Like explicit wait, but polls at intervals until the condition is met.
○ Can ignore certain exceptions during wait.
○ Use when: App behavior is unpredictable, or loading times vary.
• Avoid using long implicit waits with explicit waits together — can slow down scripts and cause flakiness.
Q3 (next quiz): What is data-driven testing and why is it useful in automation?
Data-Driven Testing (Polished)
Data-driven testing is an automation approach where the same test script is executed multiple times with different input data to validate various scenarios and improve test coverage.
Why it’s useful (based on what you said):
• Tests multiple input/output combinations ✅
• Improves test coverage ✅
• Avoids writing duplicate scripts
• Easy to add new test scenarios by just adding data
Example (conceptual):
• One login test
• Data set:
○ valid user / valid password
○ valid user / invalid password
○ invalid user / valid password
○ empty fields
Where can test data come from in data-driven testing?
XML and Excel are correct.
Other common sources (for awareness):
• CSV files
• JSON files
• Databases
• Inline data / attributes (NUnit / TestNG)
Page Object Model (POM) – Polished
Page Object Model is a design pattern where each application page is represented as a separate class (object), containing its UI elements and actions, which can be reused across multiple test cases.
What you said (correct ✅):
• Login page automation in a single page
• Used as an object
• Reused in different test automations
Why POM is important:
• Reduces code duplication
• Improves maintainability
• If UI changes → update one place only
If the login button locator changes, how many files should you update when using POM?
That’s the beauty of POM: centralized maintenance. If locators change, you update the page object, and all tests using it automatically use the updated element.
Assertion vs Verification
Concept Explanation Effect on Test Execution
Assertion Checks a condition (true/false) and stops the test immediately if it fails. Test fails and stops at the assertion.
Verification Checks a condition but continues executing the rest of the test even if it fails. Test logs failure but continues.
Example:
• Assertion: Assert.AreEqual(expectedTitle, actualTitle) → if page title is wrong, test stops.
• Verification: Check a label exists, log result, then continue testing buttons or other elements.
✅ Key point: Assertions = hard stop, Verifications = soft check.
Why do we need waits in automation? Can’t we just click elements immediately?
Why Waits Are Needed in Automation
• Applications don’t always respond instantly – page loads, API calls, or animations take time.
• Without waits:
○ Scripts may try to click an element before it exists → test fails.
○ Scripts may be flaky (sometimes pass, sometimes fail).
• Waits ensure the script pauses just long enough for elements or conditions to be ready.
Types of waits we discussed:
• Implicit → global default wait
• Explicit → wait for specific condition
• Fluent → custom wait with polling & exception handling
Fluent Wait vs Explicit Wait
Aspect Explicit Wait Fluent Wait
Definition Waits until a specific condition is met or timeout occurs Customizable wait with polling intervals and exception handling
Polling Checks condition at default intervals Checks condition at defined intervals
Exception Handling Throws exception if condition not met Can ignore specific exceptions while waiting
Use Case Simple waits for elements Dynamic elements that load slowly or unpredictably
What is regression testing in automation and why do we automate it?
Regression Testing (Automation)
• Definition: Re-running previously executed test cases to ensure new code changes haven’t broken existing functionality.
• Why automate:
○ Saves time when tests need to run repeatedly (e.g., every build or release).
○ Ensures consistency — same steps, same checks every time.
○ Frees testers to focus on new or exploratory testing.
Example:
• Login, registration, and logout tests run automatically every time a new feature or hotfix is added.
In automation, what is the difference between UI testing and API testing?
UI Testing vs API Testing
Aspect UI Testing API Testing
Definition Tests the user interface — what the end user sees and interacts with. Tests the backend services / endpoints directly — data, requests, responses.
Type Usually black-box testing (don’t care about internal code). Can be black-box or gray-box (depends on whether you know API internals).
Focus Buttons, forms, layouts, navigation, error messages. Functionality of API methods, data validation, status codes, response time.
Tools Selenium, Cypress Postman, RestAssured, JMeter
Speed Slower (needs UI rendering) Faster (no GUI)
Why important Ensures user-facing features work correctly Ensures backend logic and integrations are correct
✅ Key takeaway:
• UI testing = “Is the app usable and correct visually?”
• API testing = “Does the backend logic and data work correctly?”
What is headless browser testing in UI automation and why would you use it?
Headless Browser Testing
Definition:
Running UI automation without opening a visible browser window. The browser works in the background (headless mode).
Why we use it:
• Faster execution (no UI rendering)
• Saves system resources
• Ideal for CI/CD pipelines where tests run automatically on servers
• Still validates functionality like clicks, form submission, navigation
Examples of headless browsers:
• Chrome Headless, Firefox Headless
• Tools like Selenium, Puppeteer
In automation, what is cross-browser testing, and why is it important?
Cross-Browser Testing
Definition:
Running tests on different browsers (Chrome, Firefox, Edge, Safari, etc.) to ensure the application behaves consistently.
Why it’s important:
• App compatibility: Users may access your app from different browsers, OS, or versions.
• UI & functionality validation: Ensures layout, buttons, forms, and scripts work correctly everywhere.
• Prevents user complaints and improves quality.
Example:
• Login button works in Chrome but not in Safari → cross-browser testing catches it.
What is parallel execution in automation testing, and why do we use it?
Running multiple automated tests simultaneously on different browsers, devices, or environments instead of sequentially.
Why we use it:
• Saves time — test results faster than running tests one by one
• Validates cross-browser and cross-device behavior efficiently
• Speeds up regression cycles in CI/CD pipelines
Example:
• Run login tests simultaneously on Chrome, Firefox, and Edge.
• Run the same suite on Windows and Mac in parallel.
What is flaky test in automation, and why should we avoid it?
A flaky test is an automated test that sometimes passes and sometimes fails without any changes in the application code.
Why it happens:
• Timing issues (elements not loaded, missing waits)
• Test environment instability
• Network latency
• Random data or dependencies
Why avoid:
• Gives false failures, wasting time investigating non-existent bugs
• Reduces trust in automation
• Slows down CI/CD pipelines
Tip:
Flaky tests should be stabilized with proper waits, reliable locators, and robust data setup.
What is Test Coverage in automation, and how do you measure it?
Test Coverage in Automation
Definition:
Test coverage measures how much of the application or functionality is tested by your automated or manual test cases.
How to measure:
1. Feature-wise coverage: Number of test cases written/executed for each feature vs total scenarios.
2. Requirement Traceability Matrix (RTM): Maps test cases to requirements to ensure all requirements are tested.
3. Code coverage (optional in automation): Measures lines/branches of code executed by automated tests (used in unit tests).
Goal:
• Ensure no critical functionality is missed
• Helps identify gaps in testing
Example:
• Login feature: 5 scenarios → 5 automated test cases → 100% coverage
• Registration feature: 5 scenarios → 3 automated test cases → 60% coverage (gap exists)
==================
What is continuous integration (CI) in automation, and how does it relate to QA?
Perfect! You already have the main idea of CI — integrating code frequently, merging challenges, and pipelines. Let me explain step by step, focusing on how QA fits into CI and automation.
Continuous Integration (CI) – Step by Step for QA
Goal:
Ensure that every code change is automatically tested so defects are caught early, and the main branch is stable.
Step 1: Developers commit code
• Developers work on their local branches.
• They push code to the main branch (or develop branch) daily.
QA role:
• Ensure that automated test scripts are updated to handle new features or changes.
Step 2: CI Pipeline triggers automatically
• Tools like Jenkins, GitHub Actions, Azure DevOps detect code commits.
• Pipeline starts: build → test → deploy (if configured).
QA role:
• Ensure test execution is part of the pipeline.
• Tests can include: unit tests, integration tests, and automated regression tests.
Step 3: Build the application
• CI pipeline compiles code and packages it into a build (for web, mobile, or desktop).
QA role:
• Verify build is deployable.
• Smoke test may be triggered automatically to check basic functionality.
Step 4: Automated tests execution
• Automated test suites run on the new build.
• Types of tests:
○ Unit tests (developer scripts)
○ Regression / UI automation (QA scripts)
○ API / backend tests
QA role:
• Maintain scripts in source control so pipeline can access them.
• Ensure test reports are generated automatically.
Step 5: Test reports & feedback
• Pipeline generates pass/fail reports for each build.
• Developers get immediate feedback if something breaks.
• QA reviews failed tests and logs defects.
Step 6: Deployment (Optional)
• If the build passes all tests, it can be automatically deployed to staging/test environment.
QA role:
• Perform exploratory or additional checks in staging.
• Approve the build for release to production.
Step 7: Repeat
• CI ensures continuous, fast feedback every time code changes.
• Regression automation saves time by re-testing all critical functionality automatically.
💡 Pro Tip:
To integrate your automation scripts into CI:
1. Keep scripts in source control (Git)
2. Make a build job in Jenkins / CI tool
3. Add test execution command (e.g., NUnit, Selenium, Maven) in the job
4. Configure report generation and notifications for QA & dev team
CI + Automation Pipeline Diagram (QA Focus)
Developers commit code → Git / Source Control
│
▼
CI Tool (e.g., Jenkins)
│
┌───────┴─────────┐
│ │
Build Application Run Automated Tests
│ │
▼ ▼
Build Generated ┌─────────────┐
(Web / Desktop / Mobile)│Unit Tests │
│Integration│
│Regression │
│API Tests │
└─────────────┘
│
▼
Test Reports
│
▼
Feedback to Dev + QA
│
▼
Staging / Test Environment Deployment
│
▼
QA Manual / Exploratory Checks
│
▼
Production Release
How QA Fits in This CI Pipeline
1. Maintain automated scripts → ready for each build
2. Run regression and smoke tests automatically
3. Review reports and log defects
4. Perform manual/exploratory tests in staging
5. Approve builds for release
💡 Pro tip:
• Modern pipelines can also run tests in parallel (multiple browsers / devices) to save time.
• All results can be sent to Slack, email, or dashboards for real-time visibility.
Let’s build a real-world QA automation + CI/CD pipeline diagram step by step, showing Selenium/NUnit integration, CI/CD, reports, and notifications.
Here’s a clean text-based version you can visualize or later draw as a flowchart:
QA Automation CI/CD Pipeline – Real World
Developers push code → Git / Source Control
│
▼
CI Tool (e.g., Jenkins)
│
┌─────────┴─────────┐
│ │
Build Application Trigger Automated Tests
│ │
▼ ▼
Compile / Package ┌──────────────┐
(Web / Desktop / Mobile) │Selenium UI │
│Tests via │
│NUnit │
│API Tests │
│Database / │
│Backend Tests│
└──────────────┘
│
▼
Generate Test Reports
│
┌────────────────┴───────────────┐
│ │
HTML / XML / PDF Reports Slack / Email / Teams Notification
│ │
▼ ▼
QA reviews results & logs defects Dev + QA receive instant feedback
│
▼
Staging / Test Environment Deployment
│
▼
Manual / Exploratory Testing (QA)
│
▼
Production Release
Key Highlights for QA
1. Automation is integrated: Selenium + NUnit tests run automatically on each build.
2. Reports generated automatically: QA can review failures quickly.
3. Notifications sent to Dev/QA: Immediate feedback prevents delays.
4. Parallel execution possible: Run tests on multiple browsers/devices to save time.
5. Manual/Exploratory QA still happens: To catch UI/UX or unexpected issues.
💡 Pro tip:
• In modern DevOps pipelines, you can also trigger tests on pull requests, so QA feedback happens before code merges into the main branch.
1️⃣ Continuous Integration (CI)
Definition:
The practice of merging all developers’ code changes into a shared main branch frequently (usually daily), with automatic builds and automated tests running on every commit.
Key Points:
• Focuses on integrating code quickly and catching bugs early.
• Detects merge conflicts before they become big problems.
• QA role:
○ Maintain automated tests
○ Run regression/smoke tests on each build
○ Report failures to developers immediately
Example:
• Dev A pushes login feature → CI builds app → runs automation → tells dev if tests pass/fail
2️⃣ Continuous Delivery / Deployment (CD)
Definition:
Continuous Delivery (CD) is about making every build deployable to production or staging automatically, after passing tests.
Continuous Deployment is a step further — every successful build is deployed automatically to production without manual approval.
Key Points:
• Focuses on delivering working software to users fast.
• QA role:
○ Validate staging/test environment builds
○ Execute additional exploratory/manual tests if needed
○ Approve for production (CD pipeline)
Difference between Delivery vs Deployment:
• Delivery: QA manually approves the release to production.
• Deployment: Builds go live automatically after passing tests.
3️⃣ CI vs CD Comparison Table
Feature CI CD
Goal Integrate code frequently Deliver deployable software continuously
Focus Build + Automated Tests Deployment to staging or production
Automation Build and tests automated Deployment automated (Delivery: manual approval; Deployment: fully automated)
QA Role Maintain automated tests, report failures Validate staging/test builds, approve release, monitor production
💡 Pro Tip:
• CI is developer & tester focused (catch bugs early).
• CD is business & customer focused (deliver value faster).
Developers push code → Git / Source Control
│
▼
Continuous Integration (CI)
┌─────────────────────────────┐
│ Build Application │
│ Run Automated Tests (UI/API)│
│ Generate Test Reports │
└─────────────────────────────┘
│
┌───────────┴────────────┐
│ Test Results Pass? │
│ Yes → proceed │
│ No → fix by Dev │
└───────────┬────────────┘
▼
Continuous Delivery / Deployment (CD)
┌─────────────────────────────┐
│ Deploy to Staging / Test Env│
│ QA Manual/Exploratory Tests │
│ Approve for Production │
└─────────────────────────────┘
│
┌───────────┴────────────┐
│ Production Deployment │
│ (Automatic if CD) │
│ (Manual approval if Delivery) │
└─────────────────────────┘
Explanation (QA Focus)
1. CI Stage:
○ Developers integrate code → automated build → automated regression/smoke tests run → test reports generated.
○ QA ensures tests are stable and monitors failures.
2. CD Stage:
○ Only successful CI builds move to staging.
○ QA can perform manual/exploratory checks before release.
○ Continuous Delivery: Requires manual approval for production.
○ Continuous Deployment: Automatically releases to production after successful tests.
💡 Quick Tip:
• Think of CI as “making sure the code is good” and CD as “making sure the good code reaches users fast and safely”.
What is the difference between hard-coded values and parameterized values in automation scripts? Why should we avoid hard-coding?
• Hard-coded values:
○ Fixed values written directly in the test script (e.g., username = “test123”)
○ Problem: Only works for that specific value, not reusable or scalable.
• Parameterized values:
○ Variables that can take different inputs (from Excel, CSV, database, or inline)
○ Makes tests data-driven and reusable across multiple scenarios
Why avoid hard-coding:
• Reduces test coverage
• Harder to maintain if test data changes
• Not suitable for data-driven or CI pipelines
Headless vs Regular Browser Testing
Aspect Headless Testing Regular Browser Testing
Definition Runs tests without opening a visible browser window Runs tests in a real browser window
Use Case Fast execution, CI/CD pipelines, automated regression Full visual validation, UI/UX checks, manual observation
Advantages Saves time & resources, suitable for parallel execution Can see UI issues, animations, layout problems
Limitations Can miss visual/layout problems Slower, consumes more resources
Key Tip:
• Use headless for speed and CI/CD
• Use regular browser for visual checks, layout validation, or debugging