Showing posts sorted by relevance for query strategy. Sort by date Show all posts
Showing posts sorted by relevance for query strategy. Sort by date Show all posts

April 27, 2010

Test Strategy: How to create a powerful test strategy?

Let us begin with discussing what is a Test Strategy? As you know, Strategy means using the resources at one's disposal to achieve the desired objectives effectively. Test strategy means the plan that details how the testing objectives would be met effectively. See the video, How to create a  test strategy or read on.

Like any other strategy, the test strategy may be defined at different levels. You may have a test strategy at the organization level, at a program level or at a project level. The thing is that it may not be called a test strategy at the organization/ department/ program level; it may just exist as a management policy or as a part of a governance plan. At the project level, the test strategy may just be a part of the test plan. Further, depending on the nature of the project, the test strategy defined at the project level may or may not satisfy the test strategy outlined at a higher level.
The advantages of an effective test strategy are:
1. It mitigates the risks to objective testing.
2. It helps focus on different aspects of the system under test (by using distinct test phases such as unit testing, integrating testing and so on).
3. It provides clarity on the required people, procedures, tools and infrastructure.
4. It can be used to communicate the test approach to the various stakeholders (clients, project/ test managers, developers and testers) in the project.

How to create a powerful test strategy?

If you want to define a powerful test strategy for your project/ program/ organization, you should consider the following tips:
1. Before you define your test strategy, you should research the client(s) and the end user(s) with respect to the their needs and expectations from the application(s).
2. Your test strategy should aim at satisfying the test objectives alone.
3. Practically speaking, you may need to create two versions of your test strategy depending on the situation - one for communicating to all and a detailed/ tailored one for agreement with the key stakeholders.
4. You have the option of having different kinds of focus in different test phases. However, do not go over-board with defining too many test phases with overlapping effort. In other words, economize with the test phases. Define only the ones which you think are really required.
5. Your test strategy should be totally customized according to your specific situation. What has worked for other companies or what has worked for your company in the past may not apply to your current situation.
6. You should consider the required test environment while designing your test strategy. You should at least have one test environment that is the same as (or is a replica of) the production environment. Further, your test strategy should assume the most common test environment configurations for the most part.
7. Your test strategy should define the testing tools (test/ defect management systems and/ or automated test tools). It is best if you have evaluated the testing tools yourself. If not, base your decision on reliable (vendor-agnostic) and popular user reports.
8. You should look at any defined test processes (e.g. entry/ suspension/ resumption/ exit criteria for test, process to execute test cases and process to report a defect) to examine their feasibility in your situation. Identify the required test processes that will be re-used, modified or created from scratch.
9. Identify the data that will be recorded, measured, analyzed and reported to show the progress of testing.
10. Challenge all assumptions while you design your test strategy. Provide safeguards if any of the prior assumptions prove incorrect later.
11. Finally, remember that a powerful strategy is never static. Monitor the results obtained from the test strategy and do not hesitate in making the desired modifications to your test strategy.

October 17, 2010

Test Strategy - How to define and implement it?

On this October 14, I attended a web talk by Alan Page along with several others. The topic of Alan's session was Test Strategy. I would like to list the points that I saw and heard Alan make before making my own observations:
  1. Consider the context before creating your test strategy. It is useful to consider your own situation in terms of your team's composition, their current skills, their desired skills and other goals. For example, it may be okay communicating the test strategy verbally within a small team of say up to 20 people. However, when you have a large team, it becomes useful to document the test strategy and distribute it so that everyone is on the same page.
  2. After considering your context, the next step in the process is your fact-finding and assessment. This helps you answer questions like how is testing at present, how would it be different in the future, would other parameters change and how could the team change to meet the future requirements.
  3. A useful way of clarifying your thoughts is to map your facts to goals. What is your current state (fact) and what is your desired state (goal)?
  4. The journey from your Current state to Desired state may not be a straight jump but a series of steps. However, each step should aid the transition away from the Current state and towards the Desired state.
  5. Once the strategy is in place, just take the desired actions. Track and review the progress and adjust course if required.
It was a clear and thought-out presentation. You can view the talk here. It should take you about 30 minutes to listen to it. Now my questions and comments.
  1. Each action (even the tiniest one) taken in an organization should contribute to the organization's objectives positively. How does the test strategist ensure that each step outlined in the test strategy maps to the organization's objectives and ultimately to its vision? A test strategist should be keenly aware of their organization's business objectives. Further, the test strategist should be aware of other factors such as the current customer experience, competition and the direction the industry is moving.
  2. Implementing a test strategy in a sizeable team is no mean task. Other than piloting actions and showing supporting data to other team members, what are the ways to smoothen the implementation of a test strategy? It may require sessions to explain the test strategy to each team member, arranging and executing any training they may need and providing the supporting processes and tools to the team help take action to move to the Desired state. Explaining what is in it for them, recognition of good performers and championing the test strategy may also help attain buy-in from the team members.
  3. How does the test strategist know that they have arrived and it is time for the next strategy? By ascertaining if the desired state is institutionalized (data consistently points to the desired state, team members discuss about the Desired state as the Current state and team members have become a little complacent).

March 19, 2014

Example Test Strategy | Test Plan


Test strategy is the plan (that may exist at any level like project, program, department or organization level) that describes how the test objectives would be met effectively with the help of the available resources. If you have a test strategy, it is easier to focus effort on the most important test activities at the time. Moreover, a test strategy provides clarity on the test approach to the project stakeholders. First, view my Test Strategy video. Then read on.
Many readers have asked me for example software testing strategy document. I requested Varsha, who is a senior member of the Software Testing Space community, to create an example test strategy for a hypothetical agile project. First, view the video, Example Agile Test Strategy, Agile Test Plan. Then read on.
Below is the resulting sample test strategy document. The sections contain much information. Additional guidelines are given in italics. I hope that this sample test strategy document helps you create a really effective test strategy for your own project. - Inder P Singh

Example Test Strategy

Introduction to Agile
Agile is an iterative and incremental (evolutionary) approach to software development that is performed in a highly collaborative manner by self-organizing teams within a control framework. High quality and adaptive software is developed by small teams using the principles of continuous design improvement and testing based on rapid feedback and change. Agile is people-centric, development and testing is performed in an integrated way, self-organizing teams encourage role interchangeability, customer plays a critical role and Project Life-cycle is guided by product features.

How Agile is different from Waterfall model
1. Greater collaboration
2. Shorter work cycle and constant feedback
3. Need to embrace change
4. Greater flexibility
5. Greater discipline
6. The goal should be quality and not just speed
7. Greater stakeholder accountability
8. Greater range of skills
9. Go faster and do more
10. Courage
11. Confidence in design

Purpose of this document
The purpose of this Test Strategy is to create a shared understanding of the overall targets, approach, tools and timing of test activities. Our objective is to achieve higher quality and shorter lead times with minimum overhead, frequent deliveries, close teamwork with team and the customer, continuous integration, short feedback loops and frequent changes of the design. Test strategy guides us through the common obstacles with a clear view of how to evaluate the system. Testing starts with the exploration of the requirements and what the customer really wants by elaborating on the User stories from different perspectives. Testing becomes a continuous and integrated process where all parties in the project are involved. 
Copyright © Software Testing Space

Guiding standards
StandardDescription
Shared ResponsibilityEveryone in the team is responsible for quality.
Data ManagementProduction data must be analyzed before being used for testing.
Test ManagementTest cases, code, documents and data must be treated with the same importance as the production system.
Test AutomationAttempt to automate all types of testing (Unit, Functional, Regression, Performance, Security) as far as feasible.

Requirements strategy
1. Always implement highest priority work items first (Each new work item is prioritized by Product Owner and added to the stack).
2. Work items may be reprioritized at any time or work items may be removed at any time.
3. A module in greater detail should have higher priority than a module in lesser detail.

Quality and Test Objectives
FeatureDescriptionMeasure and TargetPriority
AccuracyFeatures and functions work as proposed (i.e. as per requirements)100% completion of agreed features with open
  • Severity 1 defects = 0
  • Severity 2 defects = 0
  • Severity 3 defects < 5
  • Severity 4 defects < 10
Must Have
IntegrityAbility to prevent unauthorized access, prevent information loss, protect from viruses infection, protect privacy of data entered
  • All access is via HTTPS (over a secured connection).
  • User passwords and session tokens are encrypted.
Must Have
MaintainabilityEase to add features, correct defects or release changes to the system
  • Code Duplication < 5%
  • Code Complexity < 8
  • Unit Test Coverage > 80%
  • Method Length < 20 Lines
Must Have
AvailabilityPercentage of planned up-time that the system is required to operateSystem is available for 99.99% for the time measured through system logs.Should Have
InteroperabilityEase with which the system can exchange information with other systems User interface renders and functions properly on the following (and later) browsers versions:
  1. IE version = 9.0
  2. Firefox version = 18.0
  3. Safari version = 5.0
  4. Chrome version 11.0
Must Have
PerformanceResponsiveness of the system under a given load and the ability to scale to meet growing demand.
  1. Apdex Score > 0.9
  2. Response Time < 200ms
  3. Throughput > 100 pm
Should Have

Test Scope (both business processes and the technical solution)
In Scope
Identify what is included in testing for this particular project. Consider what is new and what has been changed or corrected for this product release.
  • Automated) Unit testing
  • Code analysis (static and dynamic)
  • Integration testing
  • (Automated) Feature and functional testing
  • Data conversion testing
  • System testing
  • (Automated) Security testing
  • Environment testing
  • (Automated) Performance and Availability testing
  • (Automated) Regression testing
  • Acceptance testing
Copyright © Software Testing Space
Out of Scope
Identify what is excluded in testing for this particular project.

Testing Types
Testing typeDefinitionTest tool examples
Remove tools that will not be used.
Unit testingTesting that verifies the implementation of software elements in isolation Xunit test tools (Nunit, Junit), Mocking tools
Code analysis (static and dynamic)Walkthrough and code analysis1. Static code tool -> Java – Checkstyle, Findbugs, Jtest, AgileJ Structure views .Net – FxCop, stypeCop, CodeRush
2. Dynamic code tool ->Avalanche, DynInst, BoundsChecker.
Integration testingTesting in which software elements, hardware elements, or both are combined and tested until the entire system has been integratedVector Cast C/C++
Functional and Feature testingTesting an integrated hardware and software system to verify that the system meets required functionality:
  • 100% requirements coverage
  • 100% coverage of the main flows
  • 100% of the highest risks covered
  • Operational scenarios tested
  • Operational manuals tested
  • All failures are reported
UFT, Selenium WebDriver, Watir, Canoo webtest , SoapUI Pro
System testingTesting the whole system with end to end flowSelenium, QTP, TestComplete
Security testingVerify secure access, transmission and password/ session securityBFB Tester, CROSS, Flowfinder, Wireshark, WebScarab, Wapiti, X5s, Exploit Me, WebSecurify, N-Stalker
Environment testingTesting on each supported platform/ browserGASP, QEMU, KVM,Xen, PS tools
Performance and Availability testingLoad, scalability and endurance testsLoadRunner, JMeter, AgileLoad test, WAPT, LoadUI
Data conversion testingPerformed to verify the correctness of automated or manual conversions and/or loads of data in preparation for implementing the new systemDTM, QuerySurge, PICT, Slacker
Regression testingTesting all the prior features and re-testing previously closed bugsQTP, Selenium WebDriver
Acceptance testingTesting based on acceptance criteria to enable the customer to determine whether or not to accept the system Selenium , Watir, iMacros, Agile Acceptance Test Tool

Test Design strategy
1. Specification based / Black box techniques (Equivalence classes, Boundary value analysis, Decision tables, State Transitions and Use case testing)
2. Structure based / white box techniques (Statement coverage, Decision coverage, Condition coverage and Multi condition coverage)
3. Experience based techniques (Error guessing and Exploratory testing)

Test Environments strategy
NameDescriptionData SetupUsage
DevelopmentThis environment is local and specific to each developer/tester machine. It is based on the version/branch of source code being developed. Integration points are typically impersonated.Data and configuration is populated through setup scripts.Unit, Functional and Acceptance Tests.
Test tools e.g. Xunit test tools (Nunit, Junit), Mocking tools.
Source code management for version control
IntegrationThis environment supports continuous integration of code changes and execution of unit, functional and acceptance tests. Additionally, static code analysis is completed in this environment.Data and configuration is populated through setup scripts.Unit, Functional and Acceptance Tests.
Static code analysis
Continuous Integration tools e.g. Cruise control
StagingThis environment supports exploratory testingPopulated with post-analysis obfuscated production dataExploratory testing
ProductionLive environmentNew instances will contain standard project reference data. Existing instances will have current data migrated into the environmentProduction verification testing

Test Execution strategy
We will keep in mind the following points:
  1. Agile testing must be iterative.
  2. Testers cannot rely on having complete specification.
  3. Testers should be flexible.
  4. They need to be independent and independently empowered in order to effective
  5. Be generalizing specialists.
  6. Be prepared to work closely with developers.
  7. Focus on value added activities.
  8. Be flexible.
  9. Focus on What and Not How to test.
  10. Testers should be embedded in agile team.
  11. Flexible to contribute in any way then can
  12. Have wide range of skills with one or more specialties
  13. Shorter feedback cycles
  14. Focus on sufficient and straightforward situations.
  15. Focus on exploratory testing.
  16. Specify the meaning of "Done” i.e. when activities/tasks performed during the system development can be considered complete.
  17. Define when to continue or stop testing before delivering the system to the customer. Specify which evaluation criteria is to be used (e.g. time, coverage, and quality) and how it will be used.
Additionally, use this section to describe the steps for executing tests in preparation for deployment/release/upgrade of the software. Key execution steps could include:
1. Steps to build the system
2. Steps to execute automated tests
3. Steps to populate environment with reference data
4. Steps to generate test report/code metrics


Test Data Management strategy
Use this section to describe the approach for identifying and managing test data. Consider the following guidelines:
1. System and user acceptance tests – a subset of production data should be used to initialize the test environment.
2. Performance and availability test – full size production files should be used to test the performance and volume aspects of the test.


Test Automation strategy
Adopt a planned approach to developing test automation. Increase the quality of test automation code. Select the test cases for automation based on the following factors:
  • Risk
  • How long it takes to run the tests manually?
  • What is the cost of automating the test?
  • How easy are the test cases to automate?
  • How many times is the test expected to run in project?
Test Management
The Test Plan, test scenarios, test cases and bug report should be in a same system as in Bugzilla, Zira. Any agile tool can be used where User stories, Test Plan, Test scenarios, test cases and bug report can be stored in the same place.

Risks and Assumptions
Risks and assumptions raised in Daily stand up meeting (in front of all team members, scrum master and members) should be logged and addressed immediately.

Defect Management strategy
Ideally, defects are only raised and recorded when they are not going to be fixed immediately. In this case, the conditions under which they occur and the severity needs to be accurately recorded so that the defect can be easily reproduced and then fixed.

Defect Classification
SeverityDescription
CriticalDefect causes critical loss of business functionality or a complete loss of service.
MajorDefect causes major impact to business functionality and there is not an interim workaround available.
MinorDefect causes minor impact to business functionality and there is an interim workaround available.
TrivialDefect is cosmetic only and usability is not impacted.

Defect Lifecycle
StepDescription
Identify DefectEnsure defect can be reproduced. Raise in defect tracking system.
Prioritize DefectBased on severity defect is prioritized in team backlog.
Analyze DefectBased on analysis acceptance criteria and implementation details.
Resolve DefectImplement changes and/or remediate failing tests.
Verify ResolutionExecute tests to verify defect is resolved and no regression is seen.
Close DefectClose in defect tracking system.

Specify the shared defect tracking system.
Copyright © Software Testing Space
Note: This example test strategy has been contributed by Varsha Tomar. Varsha has 9 years experience in both manual and automated software testing. Currently, she works with Vinculum Solutions as Senior Test Lead. Her interests include software testing, test automation, training, testing methodologies and exploring testing tools.

Please put any questions that you have in the comments.

January 29, 2026

High-Impact Java Strategies to Build Scalable Test Automation Frameworks

SDETs and QA: Learn with the runnable Core Java Playbook for Interview Preparation Practice. View the Core Java playbook in action in the video below.

Summary: Many test automation frameworks fail not because of tools, but because of weak Java design decisions. This post explains high-impact Java strategies that help you build scalable, stable, and professional test automation frameworks.

Introduction: The SDET’s Hidden Hurdle

Moving from manual testing to automation is a big career milestone. Writing scripts that click buttons and validate text feels good at first.

Then reality hits. As the test suite grows, maintenance effort explodes. Tests become fragile, execution slows down, and engineers spend more time fixing automation than testing the application.

This problem is often called automation rot. It happens when automation is treated as scripting instead of engineering.

The solution is not a new tool. It is mastering Java as an engineering language for automation. By applying proven Java design and concurrency strategies, you can turn brittle scripts into a scalable, industrial-grade framework.

1. Why Singleton and Factory Patterns Are Non-Negotiable

In professional frameworks, WebDriver management determines stability. Creating drivers inside individual tests is a fast path to flaky behavior and resource conflicts.

The Singleton pattern ensures that only one driver instance exists per execution context. It acts as a guardrail, preventing accidental multiple browser launches.

The Factory pattern centralizes browser creation logic. Instead of hard-coding Chrome or Firefox inside tests, the framework decides which browser to launch at runtime.


// Singleton: ensure a single driver instance
public static WebDriver getDriver() {
    if (driver == null) {
        driver = new ChromeDriver();
    }
    return driver;
}

// Factory: centralize browser creation
public static WebDriver getDriver(String browser) {
    switch (browser.toLowerCase()) {
        case "chrome": return new ChromeDriver();
        case "firefox": return new FirefoxDriver();
        default: throw new IllegalArgumentException("Unsupported browser");
    }
}
  

Centralizing browser creation gives you one place to manage updates, configuration, and scaling as the framework grows.

2. The Finally Block Is Your Best Defense Against Resource Leaks

Exception handling is not just about catching failures. It is about protecting your execution environment.

The finally block always executes, whether a test passes or fails. This makes it the correct place to clean up critical resources such as browser sessions.


try {
    WebElement button = driver.findElement(By.id("submit"));
    button.click();
} catch (NoSuchElementException e) {
    System.out.println("Element not found: " + e.getMessage());
} finally {
    driver.quit();
}
  

Without proper cleanup, failed tests leave behind ghost browser processes. Over time, these processes consume memory and crash CI runners.

Using finally consistently keeps both local machines and CI pipelines stable.

3. Speed Up Feedback with Multi-Threading and Parallel Execution

Sequential execution is one of the biggest bottlenecks in modern automation. Long feedback cycles slow teams down and reduce confidence.

Java provides powerful concurrency tools that allow tests to run in parallel. Instead of managing threads manually, professional frameworks use ExecutorService to control a pool of threads.

This approach allows multiple test flows or user simulations to run at the same time, cutting execution time dramatically.

Engineers who understand thread safety, shared resources, and controlled parallelism are the ones who design frameworks that scale.

4. Decouple Test Data with the Strategy Pattern

Hard-coding test data tightly couples your tests to a specific source. This makes frameworks rigid and difficult to extend.

The Strategy pattern solves this by defining a contract for data access and allowing implementations to change at runtime.


// Strategy interface
public interface DataStrategy {
    List<String> getData();
}

// Runtime selection
DataStrategy strategy = new CSVDataStrategy();
List<String> testData = strategy.getData();
  

With this approach, switching from CSV to JSON or a database requires no changes to test logic. The test focuses on validation, not data plumbing.

5. Stabilize Tests by Mocking Dependencies with Mockito

Automation should fail only when the application is broken. External systems such as databases or third-party services introduce noise and false failures.

Mockito allows you to isolate the unit under test by mocking dependencies and controlling their behavior.


// Mock dependency
Service mockService = Mockito.mock(Service.class);

// Stub behavior
when(mockService.getData()).thenReturn("Mock Data");
  

Mocking removes instability and keeps tests focused on the logic being validated. This dramatically increases trust in automation results.

Conclusion: From Tester to Automation Engineer

Strong automation frameworks are built, not scripted.

By applying Java design patterns, proper resource management, parallel execution, data decoupling, and mocking, you move from writing tests that merely run to engineering systems that scale.

These skills separate automation engineers from automation scripters.

Final thought: is your current framework just running tests, or is it engineered to grow with your product?

If you want any of the following, send a message using the Contact Us (right pane) or message Inder P Singh (19 years' experience in Test Automation and QA) in LinkedIn at https://www.linkedin.com/in/inderpsingh/

  • Production-grade Java for Test Automation automation templates with playbooks
  • Working Java for Test Automation projects for your portfolio
  • Deep-dive hands-on Java for Test Automation training
  • Java for Test Automation resume updates

May 17, 2010

What have I learnt after blogging for a year?

The timing of this post is almost correct. I have been blogging for a little over a year now. Software Testing Space has now over 50 articles. Here are the top lessons that I learnt while blogging about topics in software testing. You will find these tips handy if you blog or plan to blog in the future.

1. Getting ideas for posts is critical.
In the beginning, I spent a lot of effort of listing and evaluating ideas to blog about. Then, I would select a topic that was interesting to me. That was a mistake. Your post is helpful only if the content is useful to your readers. Off late, I have found that a good source of ideas is the questions posed by readers. Of course, the response to the question should provide value and be interesting. You can also write on topics on which there is little, misleading or no information available online.

2. The title of the post is its most important part.
A reader is more likely to read the post if your title is interesting. A short title is better than a longer one. If you can frame the title as a question, even better.

3. Posts that draw on personal experience are more popular.
Posts should be interesting. A post based on personal experience captures a reader's attention more than one that just deals with a topic in a theoretical fashion. If you have no personal experience to draw upon, then you should provide the data supporting what you write. At least, you should explain the logic of your thoughts on the subject.

4. The post itself should not be too short or too long.
The post should cover the subject well. For example, if you are writing about how to create a good test strategy, you should first define what you mean by a test strategy. Then go on to point out the benefits of a good test strategy and finally outline the method by which you can create a powerful test strategy.
If your post is too long, a reader may just skim the post. However, this is not always true. I have had readers write to me and sometimes they remember even a point made in passing one of the earlier posts.

5. Grouping and linking information makes it easy to find it.
Earlier, I just managed with a chronological listing of all the posts. If a reader had to find a related post, they would need to look up the title of each prior post. Grouping your posts by category makes it easier for all. Further, linking to other resources (including previous posts) within the post is even better.

6. Add content regularly.
I have seen blogs that only have a handful (say, 2 or 3) posts or haven't been updated for a year or more. It is sad. If a reader visits your blog again, they expect to find some new useful or interesting content. These days, I aim to create at least 10 to 15 new posts every month.

7. Use the power of humor.
Writing with humor is an art. To be honest, I find writing with humor while being sensitive and respectful to all concerned rather challenging. However, I have written one humorous post and plan to write more in the future.

8. Finally, take help from others.
You should remember that there are many other experts in your field. They may be happy to share their knowledge with you. I found that interviewing other experts is a good way to way to gain knowledge and broaden your mind. I have started interviewing experts and soon more interviews should follow. I, too, write on other sites. If you would like me to write for you, you are welcome to let me know :}.

June 06, 2023

Test Planning in Software Testing

Great job on starting a new lesson! After reading this lesson, click Next button at bottom right to continue to the next lesson.

What is test planning in software testing?

Test planning is the process of defining the scope, objectives, strategy, resources, schedule, and deliverables for testing your software product or service. Test planning helps you align your testing activities with the project goals, quality standards, and regulations, while making the best use of available resources. Also, in test planning, you estimate the effort, cost, and the duration required for testing.

Test plan sections

A test plan typically contains the following sections:

  1. Scope and test objectives: The scope and purpose of software testing, the features and functions to be tested and not tested, and the quality criteria to be achieved.
  2. Test strategy: The high-level testing approach and methodology for software testing, the testing types and testing levels, the test techniques and tools, and the test environment.
  3. Test resources: The roles and responsibilities of the software testers, their skills, and any training needed by them.
  4. Test schedule: The timeline(s) and milestones for software testing activities, the dependencies and risks, mitigation plans and contingency plans.
  5. Test deliverables: The outputs of the testing process, such as test cases, test data, test results, defect reports, status reports, etc.

Test planning is a critical step in software testing because it helps to:

  • Guide the testing process and ensure its alignment to project goals and quality standards.
  • Avoid testing out-of-scope functionalities.
  • Communicate the testing process to the stakeholders.
  • Track and control the testing process, progress and quality.
  • Reuse the test plan for future enhancements or similar projects in the organization.

Test Plan Example

A banking website allows customers to perform various transactions online, such as checking account balance, transferring money, paying bills, etc. The test plan for this website may include:

  1. Test objective: To verify that the website functions correctly and securely according to the requirements.
  2. Test strategy: Do functional testing (including manual testing exploratory testing and automated regression testing), security testing, performance testing, usability testing, and compatibility testing. To use Selenium WebDriver, JMeter, and OWASP tools.
  3. Test resources: One test lead and four test engineers. Provide training on the banking domain, the website features, and the test tools. To use laptops with Windows 11 OS, Chrome browser, Internet connection, etc.
  4. Test schedule: Follow a lifecycle with four phases: test planning (2 weeks), test design (4 weeks), test execution (6 weeks), and test closure (2 weeks). Identified dependencies on development team, business team, security team, and end-users. Identified risks (delays in development, changes in requirements, resource issues, and technical issues)
  5. Test deliverables: Test plan document, test cases, test data, test results, defect reports, status reports and test summary report.

How do you do test planning?

  1. First, understand and review all your software requirements and specifications.
  2. Estimate the effort, duration, cost, and resources required for software testing based on your data, assumptions and constraints. 
  3. Identify the dependencies, risks, and their mitigation and contingency plans.
  4. Use the standard format and terminology of your organization for your test plan document.
  5. Avoid using lengthy paragraphs and unnecessary details. Use lists and tables to structure the plan.
  6. Get feedback from the stakeholders in the test planning process.
  7. Review your test plan regularly. Update it if changes occur

FAQ (interview questions and answers)

  1. In your experience, what are the benefits of test planning?
    Test planning helps us ensure that the testing activities are aligned with the project goals, quality standards, and regulations, while making the best use of available resources. Test plan is an input to estimate the effort, cost, and the duration required for testing.
  2. Are there different types of test plans?
    Yes, there may be master test plan for the whole project, phase test plan for a single phase, and a specific test plan e.g. performance test plan for a specific type of testing
  3. What are the main components of a test plan?
    Scope, test objectives, test strategy, test resources, test schedule, test deliverables, and risk management.
  4. What is the difference between a test plan and a test case?
    A test plan is a document that describes the what, when, how, and who of software testing. A test plan refers multiple test cases. A test case is a set of steps that specifies what to test, how to test it, what inputs to use and the expected result.
I wrote the original lesson on May 11, 2023. Remember to just comment if you have any doubts or queries.


August 16, 2025

Java Test Automation Interview Questions and Answers with Java code

Here are my Java Test Automation Interview Questions and Answers for SDETs, QA and Test Automation Architects. Read the interview questions for Java Test Automation on Java Fundamentals for Test Automation, Core Java Programming Skills for Test Automation, Java and Object-Oriented Design Patterns in Test Automation, Java Frameworks and Libraries for Automated Testing, Java Interview Questions for Automation Testing Roles, Java and Selenium WebDriver for UI Automation, Data-Driven Testing with Java and API Test Automation with Java.

If you want my complete set of Java Test Automation Interview Questions and Answers as a document that additionally contain the following topics, you can message me on my LinkedIn profile or send me a message in the Contact Us form in the right pane:
Intermediate Java Concepts for Test Automation, Advanced Java Techniques for Automation Testing, Building a Java Test Automation Framework, Best Practices in Java Automated Testing, Java for Test Automation Tips, Tricks, and Common Pitfalls, and FAQs and Practice Questions for Java Test Automation.

Question: Why is Java popularly used in test automation, and how does it benefit testing roles?
Answer: Java’s platform independence, extensive library support, and large community make it highly suited for test automation frameworks like Selenium, JUnit, and TestNG. Java works with object-oriented principles and error-handling mechanisms, allowing SDETs and QA testers to create modular, reusable, and maintainable tests.

Question: What are the advantages of using Java over other languages in automation testing?
Answer: Java has the following advantages:
- Strong Typing: Helps catch many potential type-related issues at compile time.
- Comprehensive Libraries: Useful for handling data, file I/O, and complex test scenarios.
- Concurrency Support: Enables multi-threading, making it useful for performance testing.
- Integration with Testing Tools: Java integrates with many automation tools.

Question: What are the key data types in Java, and how do they support automation?
Answer: Java has two main data types:
- Primitive Types (e.g., int, double, boolean) are used for simple operations like counting or asserting values in tests.
- Reference Types (e.g., String, Arrays, Lists) are used for handling collections of data or complex assertions.
Example: Checking form validation where multiple strings or arrays may need validation.

Question: How does control flow work in Java test automation in Java?
Answer: Control flow (using statements like if, for, while, switch) allows automated test scripts to make decisions and repeat actions. It can handle scenarios like:
- Conditional Validation: Validating if a user is logged in and running appropriate test steps.
- Looping: Iterating through data sets or UI elements to ensure thorough testing.
Example

Question: How can you use variables effectively in your test automation scripts?
Answer: Variables in Java can store test data (e.g., URLs, credentials) that might change across environments. They make scripts easy to update.

Question: What is the role of exception handling (try-catch) in automation?
Answer: Exception handling deals with unexpected events (like missing elements or timeouts) without halting the entire test suite. It allows graceful error handling and makes the test less flaky (more robust).
Example

Question: How can you write classes and objects in Java to create modular test scripts?
Answer: Classes encapsulate test functions, reducing code redundancy. Objects represent specific test cases or actions, helping testers organize code in reusable modules.
Example

Question: How can you use inheritance to simplify test case creation?
Answer: Inheritance allows a class to reuse fields and methods of another class, which is helpful for creating shared test functions.
Example

Question: What is polymorphism, and how can you use it to optimize test cases?
Answer: Polymorphism allows testers to use a common method in different ways, making scripts more flexible. For instance, a click() function can work on various UI elements.
Example

Question: What is java.util, and why is it important for testers?
Answer: The java.util package provides data structures (like ArrayList, HashMap) that are can handle collections of data in tests, such as lists of web elements or data sets.
Example: Using ArrayList to store a list of test data inputs. 

Question: How does java.lang help in test automation?
Answer: The java.lang package includes core classes like String, Math, and System, for tasks like string manipulation, mathematical operations, and logging in test automation.
Example: Generating a random number for unique input generation. 

Question: Can you name some methods in java.util.Date that are useful in test automation?
Answer: java.util.Date and java.time have methods for handling date and time, which can be important for scheduling tests or validating time-based features. Note: Prefer java.time (Java 8+) over java.util.Date for new code.
Example: Using LocalDate for date-based validation. 

Question: As an Automation Test Architect or Lead, what are some practical tips for SDETs and QA on Java fundamentals?
Answer: 1. Understand Data Types: Knowing when to use specific data types (int vs. double, ArrayList vs. LinkedList) can impact memory usage and test speed.
2. Write Reusable Methods: Encapsulate common actions (like logging in or navigating) in reusable methods to make tests more readable and maintainable.
3. Handle Exceptions: Use specific exception handling (NoSuchElementException, TimeoutException) to catch errors accurately, making test results more informative.
4. Use Libraries: Use java.util collections for handling data sets and java.lang for efficient code execution.

Want to learn more? View my Java Interview Questions and Answers videos:
- https://youtu.be/HBQxq1UUNAM
- https://youtu.be/1gRuQMhydgs
- https://youtu.be/e5BLn9IGrF0

 


Question: How is exception handling useful in test automation, and how does the try-catch mechanism work in Java?
Answer: Exception handling allows test automation scripts to handle unexpected situations gracefully, such as missing elements or timeout errors, without halting the complete test run. The try block contains code that might throw an exception, and the catch block handles it.
Example

Question: What is the role of the finally block in exception handling?
Answer: The finally block executes irrespective if an exception occurred or not. It’s useful for cleanup activities, such as closing a browser or logging out.
Example

Question: How can you create a custom exception for test automation in Java?
Answer: Custom exceptions are defined by extending the Exception class. They allow specific error messages or handling specific test failures.
Example

Question: How can you handle files in test automation, and which classes can you use in Java for this purpose?
Answer: File handling allows tests to read data inputs from and write results to files, supporting data-driven testing. The commonly used classes are FileReader, BufferedReader for reading, and FileWriter, BufferedWriter for writing. 

Example
: Reading from a file 

Example: Writing to a file 

Question: How can you use file handling or data-driven testing?
Answer: By reading test data from external sources (e.g., CSV or text files), QA testers can parameterize tests, reducing hard-coded values and making tests work with multipledatasets.

Question: What are the advantages of using collections in test automation?
Answer: Collections, like ArrayList, HashSet, and LinkedList, are useful for managing dynamic data sets, such as lists of test cases or elements, with features like sorting, searching, and filtering.
Example: Using an ArrayList to store and iterate through test data 

Question: How can you use Maps for test data management in automation testing?
Answer: Maps store key-value pairs, making them useful for data like configurations or credentials where values can be retrieved by specific keys.
Example: Using a HashMap for storing and retrieving login credentials 

Question: What is the benefit of multi-threading benefit in test automation, especially for parallel execution?
Answer: Multi-threading allows concurrent test execution, reducing overall test execution time. In test automation, it allows tests to run in parallel, simulating multiple user interactions.

Question: What are the basic steps of implementing multi-threading in Java for parallel test runs?
Answer: Multi-threading in Java can be implemented by extending Thread or implementing Runnable. Each test case can be run as a separate thread, enabling simultaneous execution.
Example: Creating multiple threads for parallel tests 

Question: How can you use Executors to manage a pool of threads in Java?
Answer: The ExecutorService interface provides methods to manage a thread pool, allowing multiple tests to run concurrently while efficiently managing resources.
Example: Using Executors for parallel execution 

Question: What is the Page Object Model (POM), and why is it needed in test automation?
Answer: The Page Object Model is a design pattern where each web page in the application is mapped as a class with methods encapsulating actions users can perform on that page. It makes tests more readable and maintainable (by centralizing element locators and interactions in one place). You can view the working example of SeleniumJava POM implemented below.

Example: POM for a Login Page 

Question: What problem does the Singleton pattern solve, and how can you use it in test automation?
Answer: The Singleton pattern restricts the instantiation (meaning creating objects) of a class to one object. In test automation, it uses only one instance of the WebDriver during a test session, preventing resource conflicts and allowing better browser control.
Example: Singleton WebDriver instance 

Question: How can you use the Factory pattern in test automation?
Answer: The Factory pattern creates objects without specifying the exact class of object that will be created. It’s useful for managing browser-specific configurations by centralizing the logic for initializing different WebDriver instances.
Example: Factory pattern for WebDriver 

Question: How can you use the Strategy pattern, and how does it support data management in test automation?
Answer: The Strategy pattern defines a family of algorithms with interchangeability at runtime. It is useful for test automation where multiple strategies are needed to handle different types of data sources (e.g., CSV, database, JSON).
Example: Strategy pattern for test data input 

Question: How can the Strategy pattern manage different configurations in test automation?
Answer: The Strategy pattern allows dynamically switching between configurations (e.g., different test environments or data sets) by implementing different configuration strategies.

Question: What is Dependency Injection, and how does it work in test automation?
Answer: Dependency Injection (DI) is a design pattern where an object receives its dependencies from an external source rather than creating them. DI improves test reusability and flexibility by allowing dependencies like WebDriver or configurations to be injected instead of hardcoded.
Example: Dependency Injection in test 

Question: How does Inversion of Control (IoC) differ from Dependency Injection, and how does it work in Java testing frameworks?
Answer: IoC is a bigger concept where control is transferred from the object to an external source, while DI is a specific implementation of IoC. In Java testing frameworks like Spring, IoC containers manage dependencies, allowing components to be loosely coupled and more modular.
Example: IoC with Spring Framework in test automation 

Question: What are JUnit and TestNG, and why are they so popular in Java test automation?
Answer: JUnit and TestNG are Java testing frameworks for unit, integration, and end-to-end testing. JUnit is simple (view JUnit with Selenium Java demonstration here) and widely used for unit tests. TestNG has advanced features like parameterized tests and parallel execution.
Example: JUnit Test 

Example: Basic TestNG Test 

Question: How do JUnit and TestNG support different testing scopes (unit, integration, and UI)?
Answer: JUnit needs a minimal setup, while TestNG has features like parallel execution and dependency-based test configuration. Both frameworks are compatible with Selenium for browser-based tests.

Question: What are the functionality differences between JUnit and TestNG?
Answer:
- Annotations: TestNG offers more annotations (@BeforeSuite, @AfterSuite) compared to JUnit.
- Parameterized Tests: TestNG provides @DataProvider for parameterized tests, and modern JUnit (JUnit 5) supports parameterized tests natively via @ParameterizedTest with providers such as @ValueSource and @CsvSource.
- Parallel Execution: TestNG supports parallel execution and suites, while JUnit may need additional configuration first.
- Exception Handling: TestNG allows configuring expected exceptions and retry mechanisms easily.

Question: In which test automation projects, would you choose TestNG over JUnit?
Answer: TestNG is preferred for complex test suites that require parallel execution, detailed configuration, or dependency management among tests. For simple projects with unit tests, JUnit is more efficient due to its basic features.

Question: Why are Maven and Gradle needed for Java test automation?
Answer: Maven and Gradle are build automation tools that manage project dependencies, compile source code, and run tests. They allow adding libraries (like Selenium or REST-assured) by automatically downloading dependencies.

Question: How do you add dependencies in Maven and Gradle for a test automation project?
Answer: In Maven: Add dependencies in the pom.xml file under the <dependencies> tag. In Gradle: Use the dependencies block in the build.gradle file.
Example: Adding Selenium dependency in Maven 


Example: Adding Selenium dependency in Gradle 

Question: How do Maven and Gradle improve test automation workflows?
Answer: Maven and Gradle handle dependency conflicts, generate reports, and automate builds. They also support plugins to run tests, generate reports, and integrate with CI/CD systems like Jenkins, optimizing test automation workflows.

Question: What is mocking in test automation, and how does Mockito support it?
Answer: Mocking simulates the behavior of dependencies, such as databases or web services, to isolate the functionality under test. Mockito is a popular library that allows you to create and control mock objects in Java tests, making it easier to write tests that don't rely on external dependencies.
Example: Basic Mockito Mocking 

Question: How is stubbing different from mocking?
Answer: Stubbing is a specific type of mocking in which predefined responses are set up for particular method calls. While mocking controls the behavior of objects in tests, stubbing defines what happens when certain methods are invoked.

Question: How does Mockito help in writing isolated unit tests?
Answer: Mockito has functions like when, verify, and spy that allow fine-grained control over test dependencies, letting you validate your system, without the need for external systems or real data.

Question: Write a Java method to reverse a string. Why is it relevant for the SDET role?
Answer: Reversing a string is used in test automation for validating outputs, URL parsing, or log validation in automation scripts.
Example:
public String reverseString(String str) {
 return new StringBuilder(str).reverse().toString();
}
Question: Write a program to check if a number is prime.
Answer

Question: How you would design a test framework that validates login functionality?
Answer: A framework includes a modular test structure, page objects for UI elements, and reusable functions for key actions like login, logout, and navigation. I would use configuration files for environment-specific values like URLs and credentials.
Example:
- Framework Structure: Page Objects (LoginPage, HomePage) for element management.
- Test Methodology: Implement assertions to validate login success or failure.
- Test Data: Parameterize test data using JSON or an external CSV file.

Question: How would you handle a scenario where a test case intermittently fails due to network latency?
Answer: By implementing retry logic in the test framework to rerun a failed test a specified number of times before marking it as a failure. Additionally, I would use waits (explicit or fluent waits) instead of static delays to dynamically handle loading times.
Example: View Selenium Java waits demonstration in my Selenium Java Alerts video here.

Question: How would you identify and resolve a NullPointerException in a test script?
Answer: NullPointerException occurs when trying to use a null object reference. To resolve it:
- Use null checks before accessing objects.
- Debug and check initialization of objects.
- Use Optional to handle potential nulls more safely.
Example: Debugging Code 

Question: What approach would you take if your test fails due to StaleElementReferenceException in Selenium?
Answer: This exception occurs if the element is no longer attached to the DOM. To fix:
- Use try-catch with a re-fetch of the element.
- Implement explicit waits to allow the DOM to refresh.
- Use the ExpectedConditions.refreshed method to retry locating the element.
Example:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.stalenessOf(element));

Question: How would you optimize tests that involve frequent database queries in a test automation suite?
Answer: Caching and efficient database handling reduce latency and speed up test execution. To optimize:
- Use connection pooling for efficient database access.
- Cache frequently used data to minimize repetitive database calls.
- Batch database requests when querying or updating multiple records.
Example: Example Code for Caching 

Question: How would you structure tests to validate complex workflows like e-commerce checkout?
Answer: For complex workflows:
- Use a modular structure with page objects for each step (e.g., LoginPage, ProductPage, CheckoutPage).
- Parameterize test data for items and quantities.
- Implement data-driven tests to validate different scenarios (e.g., cart with multiple items, invalid coupon). 

Question: How do you set up a basic Selenium WebDriver project in Java?
Answer: Start by adding Selenium dependencies (e.g., via Maven), initializing WebDriver, and creating a basic test script.
Steps:
1. Add Selenium dependencies in the pom.xml if using Maven.
2. Initialize WebDriver.
Example:
WebDriver driver = new ChromeDriver();
driver.get("https://inderpsingh.blogspot.com/");

Question: Explain the use of findElement, click, and sendKeys methods in Selenium WebDriver.
Answer: These are methods in Selenium for interacting with UI elements. The examples of Selenium WebDriver methods are shown in my highly popular Selenium Java Questionsand Answers video at https://youtu.be/e5BLn9IGrF0

Examples
:
WebElement button = driver.findElement(By.id("submit"));
button.click();
driver.findElement(By.id("username")).sendKeys("testUser");

Question: How do you handle errors if an element is not found on the page?
Answer: Exception handling prevents test failures, especially when elements load dynamically. I would use try-catch for exception handling with WebDriver and implement waits to allow the page to load fully.
Example

Question: What are dynamic web elements, and how do you handle them in Selenium?
Answer: Dynamic web elements change their properties (e.g., IDs or class names) between page loads. Handling dynamic elements is needed for web testing, as modern web applications often have dynamically generated content. XPath and waits help manage these elements and reduce flaky tests. Use relative locators, XPath, CSS selectors, or dynamic waits (e.g., explicit waits) to handle such elements. View the SelectorsHub dynamic locators video here to know how to get the reliable locators.

Question: How would you handle a scenario where multiple elements have the same attributes (e.g., same class name)?
Answer: Use findElements to locate all matching elements and select the desired one based on index or other distinguishing characteristics.

Question: What are the best practices for writing maintainable Selenium tests in Java?
Answer: Key practices include using Page Object Model (POM), parameterizing data, and implementing reusable methods.
Examples:
1. Page Object Model (POM): Create a class for each page and manage elements and actions there. 

Parameterizing Test Data: Use external data files (CSV, JSON) to store test data, which makes tests more flexible and reusable. 

Reusable Utility Methods: Create utility methods for repetitive actions (e.g., wait for an element, scroll, etc.).
 
Question: How do you reduce tests "flakiness" against minor UI changes?
Answer: Use flexible locators (like relative XPath or CSS selectors) and avoid brittle locators tied to frequently changing attributes (like IDs). Implement custom retry mechanisms and avoid hard-coded waits in favor of explicit waits.

Question: How would you organize test code for a large-scale UI test automation project?
Answer: Organize the project with:
- Modular structure for tests and reusable functions.
- Separate packages for pages (Page Objects), test cases, utilities, and configurations.
- TestNG or JUnit for managing and running tests.
- Reporting with tools like ExtentReports or Allure for detailed insights.

Question: How can you read data from an Excel file in Java for test automation?
Answer: The Apache POI library allows us to interact with Excel files. Use XSSFWorkbook for .xlsx files and HSSFWorkbook for .xls files. You can view my video on Selenium Java Excel Read here.
Example

Question: How can you write data to an Excel file in Java using Apache POI?
Answer: To write data to Excel, we use XSSFWorkbook to create a new workbook and specify cell values.
Example: Writing data to Excel files allows us to store test results or logs, supporting validation and reporting in automated test suites. 

Question: How can you set up a parameterized test in JUnit?
Answer: Parameterized tests allow multiple data sets to be tested using a single test method. JUnit allows parameterized tests using @ParameterizedTest with a @ValueSource or custom provider method.
Example: Example of Parameterized Test Using JUnit 5 

Question: How can you do parameterized testing in TestNG?
Answer: TestNG provides @DataProvider to supply parameters to test methods. Using DataProvider in TestNG allows for parameterized tests with multiple test inputs.
Example: Example of Using DataProvider in TestNG 

Question: How can you read JSON test data in Java?
Answer: Libraries like Jackson or Gson can parse JSON data into Java objects for testing.
Example: Example Using Jackson to Parse JSON Data 

Question: How can you use XML for test data management in Java tests?
Answer: The javax.xml.parsers package provides utilities for XML parsing in Java.
Example:
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;
import java.io.File;
public class XMLReader {
 public void readXML(String filePath) throws Exception {
 Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(filePath));
 doc.getDocumentElement().normalize();
 NodeList nodeList = doc.getElementsByTagName("data");
 for (int i = 0; i < nodeList.getLength(); i++) {
 Element element = (Element) nodeList.item(i);
 System.out.println("Element Data: " + element.getTextContent());
 }
 }
}

Question: What are the design patterns that you can use in data-driven testing?
Answer: Design patterns for data-driven testing include the Factory Pattern and Singleton Pattern.
- Factory Pattern: Used to create test data objects dynamically based on test needs.
- Singleton Pattern: It uses only one instance of a data provider class exists to manage data centrally across tests.

Question: What are best practices for managing data-driven tests in Java?
Answer: Key best practices include:
- Externalize Test Data: Use external files (JSON, XML, Excel) for data instead of hardcoding it into scripts.
- Modularize Data Access Code: Create reusable methods for data access to reduce redundancy.
- Centralize Data: Centralizing data in one repository simplifies maintenance.

If you have questions, you can message me after connecting with me on LinkedIn at https://www.linkedin.com/in/inderpsingh/

Question: What is REST Assured, and why is it popular for Java-based API testing?
Answer: REST Assured is a Java library specifically designed for testing RESTful APIs. It simplifies HTTP requests and responses handling, using concise syntax for validating responses. REST Assured integrates with JUnit and TestNG, making it popular for API testing.
Example: Basic GET Request with REST Assured 

Question: How can you use HttpClient for API testing in Java?
Answer: Apache HttpClient is a library that supports more complex HTTP operations. It’s suitable for test scenarios where we need custom headers, cookies, or advanced request configurations.
Example: Example of GET Request Using HttpClient:
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class HttpClientExample {
 public void sendGetRequest() throws Exception {
 CloseableHttpClient client = HttpClients.createDefault();
 HttpGet request = new HttpGet("https://jsonplaceholder.typicode.com/posts/1");
 HttpResponse response = client.execute(request);
 BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
 String line;
 while ((line = reader.readLine()) != null) {
 System.out.println(line);
 }
 client.close();
 }
}

Question: How can you build a basic API test scenario for a POST request using REST Assured?
Answer: REST Assured allows construction of POST requests to verify data creation endpoints. For testing purposes, JSON data can be sent in the request body.
Example: POST Request Using REST Assured 

Question: How can you chain multiple API requests in REST Assured?
Answer: REST Assured supports response extraction and chaining, enabling us to use the result of one request as input for another. This is useful for test flows that require dependencies across API calls.
Example: Chaining API Requests 

Question: How can you validate JSON responses in REST Assured?
Answer: REST Assured offers easy-to-use syntax to validate JSON responses. The body method lets us directly assert JSON path values.
Example: JSON Validation 

Question: How can you validate XML responses in Java with REST Assured?
Answer: REST Assured can parse XML responses, enabling XPath expressions for field-level validation.
Example: XML Validation Using REST Assured 

Question: How can you handle authentication for API tests in REST Assured?
Answer: REST Assured supports various authentication mechanisms, including basic, OAuth, and API keys. REST Assured also supports token-based authentication for test scenarios with OAuth or API keys.
Example: Basic Authentication 

Question: How can you add headers and cookies to API requests in REST Assured?
Answer: REST Assured allows to specify headers and cookies, allowing us to test complex API calls.
Example: Adding Headers and Cookies 

Question: How can you use REST Assured to validate headers in a response?
Answer: REST Assured allows to assert headers in the response using the header method.
Example: Response Header Validation 

Need quick revision? View the following videos:
- https://youtu.be/HBQxq1UUNAM
https://youtu.be/1gRuQMhydgs
https://youtu.be/e5BLn9IGrF0
https://youtu.be/KTrde1KZPjw
https://youtube.com/shorts/TCidbCMUBiM
https://youtube.com/shorts/t1sfVp-3xDM
https://youtube.com/shorts/BjzJwg9QTyQ
https://youtube.com/shorts/3axOjPJYrw8
https://youtu.be/49BnC2awJ1U
https://youtu.be/2G3of2qRylo

Want to learn more? In order to get my full set of Java Test Automation Interview Questions and Answers with Java code, you are welcome to message me by connecting or following me on LinkedIn. Thank you!