
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Set up your Java development environment for test automation by installing the JDK, Maven, and IDEs (IntelliJ recommended; Eclipse also fine), and learn to use Git and GitHub for collaboration.
Set up java on windows by installing the jdk and configuring java-home, install maven, then set up git and github, clone or fork a repository in IntelliJ.
Set up the project structure with src, main, and test, then create a Hello World Writer class with a JUnit test, and run it in IntelliJ.
Understand Java data types for testers, including integers and the int primitive, long with an L suffix, and strings. Learn floats and doubles and how rounding affects precision in tests.
Explore declaring numerical variables in java, using camelcase method names, primitive int versus integer class, and final to prevent reassignment for clearer, maintainable code.
Explore strings in Java as powerful objects; learn to create and manipulate text using methods like toUpperCase, toLowerCase, replace, length, and trim, with practical test examples.
Understand Java classes and objects, compare their roles in an object-oriented language, and see how a class defines attributes while an object holds actual values.
In Java, declare fields as private to enforce encapsulation and protect data from external modification. Use getters and setters to access or modify values, preventing direct, uncontrolled changes.
Explore static methods in Java, which operate across all class instances with a shared usual food like tuna, and learn static import to call methods without the class name.
Master Java inheritance by modeling a pet class hierarchy where Cat and Dog extend Pet, reuse fields with super, and access data via getters, for clean test automation.
Apply inheritance in Java by modeling a pet base class with cat and dog extending it, using super, private fields, and getters for test automation.
Learn to add conditional logic in Java test code by modeling a feeder, using assert equals to verify tuna for cats and cabbage for hamsters, and applying if-else.
Explore advanced conditionals with the switch statement and enum, using cases, break, and default to map animals like cat, dog, and hamster to food.
Use enums instead of strings for animal types to improve type safety and readability in tests. Create an animal type enum, switch on it, and static import to simplify code.
Explore java collections and arrays, declaring lists of strings and integers, accessing elements by index, and printing all colors with a for loop.
Explore reading and writing map entries in java 9 using Map.of to create concise key-value maps, and configure language level 9 in Maven for testing data setup.
Explore how to work with maps in Java: merge maps with putAll, retrieve with get or default, and update with put and replace using contains key.
If you want to get into test automation, learning Selenium, Playwright, Cucumber, Rest Assured or Serenity BDD is only part of the journey.
At some point, you need to understand the code.
Many testers start by copying snippets from tutorials, Stack Overflow, GitHub, or AI tools. That can work for a while. But when the code breaks, when you need to change it, or when your framework becomes more complex, copy-paste programming quickly becomes frustrating.
This course helps you build the practical Java foundations you need to become more confident with test automation code.
You will not learn abstract computer science theory. You will not spend hours on topics you rarely use in real automation work. Instead, you will focus on the Java skills that testers, QA engineers, and automation engineers use every day.
What you’ll learn
By the end of this course, you will be able to:
Read and understand Java code used in test automation projects
Write cleaner, more maintainable Java code yourself
Use variables, methods, classes, objects, and interfaces with confidence
Work with collections such as Lists, Sets, and Maps to manage test data
Use assertions to check expected outcomes clearly and effectively
Handle exceptions and errors in a more robust way
Understand object-oriented programming in a practical testing context
Use modern Java features such as lambdas, streams, and records where they make sense
Write and structure unit tests with JUnit
Build confidence through hands-on coding exercises and katas
Why this course is different
Most Java courses are designed for people who want to become software developers.
This course is different.
It is designed specifically for testers and QA professionals who want to move into test automation or become more effective in their current automation work.
That means the examples, exercises, and explanations are focused on the kinds of coding problems testers actually face: working with test data, structuring test code, writing assertions, understanding application behaviour, and building code that is easier to change.
The goal is not to turn you into a full-time Java developer.
The goal is to help you become comfortable and capable with Java in a test automation context.
How you’ll learn
This is a practical, hands-on course.
For most of the course, you will use in-browser coding exercises, so you can start practising Java straight away without installing an IDE, setting up a project, or fighting with your development environment.
That means you can focus on learning the language and building confidence from the very beginning.
Later in the course, when you move on to the larger projects, you will work with more realistic Java project setups. By that point, you’ll already have the core coding skills you need, so the tooling will feel much less intimidating.
You will build your skills through carefully designed exercises and coding katas, including:
The String Calculator kata
A complete shop application
A speaking clock challenge
Practical examples inspired by real test automation problems
You will also be introduced to test-driven development ideas, because good automation code is still code — and code is easier to write when you have fast feedback.
But don’t worry: this is not an advanced TDD course, and you do not need prior programming experience.
Everything is explained step by step.
This course is perfect for
This course is for you if:
You are a manual tester who wants to move into test automation
You are a QA engineer who wants stronger Java coding skills
You have copied automation code before but struggled to adapt or debug it
You want to understand what is happening inside Java-based automation frameworks
You are preparing to learn Selenium, Playwright, Cucumber, Rest Assured, or Serenity BDD with Java
You want a practical, tester-focused introduction to Java
This course is not for
This course is probably not for you if:
You are already an experienced Java developer
You are looking for a complete academic Java reference course
You want a Selenium or Playwright tutorial specifically
You want advanced Java topics that are not commonly used in test automation
If you want to learn Selenium, Playwright, Cucumber, Rest Assured or Serenity BDD, this course gives you the Java foundation that will make those tools much easier to learn.
Why Java still matters for test automation — especially with AI
Java is still one of the most widely used languages in enterprise test automation.
Many popular automation tools and frameworks use Java, including Selenium, Cucumber, Rest Assured, JUnit, Serenity BDD, and many in-house enterprise testing frameworks.
And with AI coding tools becoming more common, understanding Java is becoming even more important, not less.
AI can help you generate code faster. But it can also generate code that is overcomplicated, fragile, misleading, or simply wrong. If you do not understand the Java behind the code, it is very hard to know whether the AI has helped you — or quietly introduced a problem you will have to fix later.
This course helps you build the foundations you need to use AI coding tools more effectively. You will be better placed to review generated code, spot mistakes, ask better prompts, refactor poor suggestions, and adapt the code to your own automation framework.
There is also a bonus module coming soon that introduces practical AI-assisted coding for test automation, showing how AI can support your work without replacing the need for clear thinking and solid coding skills.
The goal is not just to write Java code.
The goal is to understand the code well enough to use modern tools, including AI, with confidence and judgement.
Start writing Java code you actually understand
By the end of this course, you will be more confident reading, writing, debugging, and maintaining Java code for test automation.
You will understand what the code is doing, why it is written that way, and how to change it when your tests need to evolve.
If you are ready to move beyond copy-paste coding and build real confidence with Java, this course is for you.