There is a lot of good content out there on how to build tests with different tools. However, what's often lacking is the opportunity to put what you have read, seen or heard into practice.
That deliberate practice, though, is essential when you really want to learn a new skill. Reading, watching or listening alone isn't going to get you there (ever tried to learn swimming just by watching other people swim?).
This is the reason I published this project. It will give you an opportunity to get your hands dirty on a test automation challenge, covering several different tools and technologies that a test automation engineer encounters when they work on real-life projects.
By going through this project step by step, you will build a solution that serves as a portfolio project for your current or prospective employer.
This project is an ongoing piece of work, meaning that updates and new challenges will be added over time.
This project covers:
- Step 0: Setting up your local development environment
- Step 1: Creating a new empty project
- Step 2: Working with package managers to add libraries to our project
- Step 3: Writing and running a first test
- Step 4: Working with Git and GitHub to bring our code under version control
- Step 5: Running our tests as part of a CI pipeline
- Step 6: Working with an API testing library
- Step 7: Parameterizing your tests
- Step 8: Serializing objects to JSON
- Step 9: Adding a first UI test
- Step 10: Running our UI tests in CI
- Step 11: Working with waiting and synchronization strategies
- Step 12: Separating the 'what' from the 'how' in our UI tests
- Step 13: Further improvements for our code
This project will not hold your hand through every step. I will not provide you with instructions that tell you exactly what to do and what to type where. The point of this project is to figure things out and build things yourself.
I will, however, make sure that there is a logical progression from one step to the next, and I will provide information on the 'why?' and 'what?' (but again, not the 'how?') for every step. Links to relevant learning material will be included where applicable, for your review.
If you're really stuck, by all means have a look at one of the reference implementations for inspiration. The goal, though, is to build a solution yourself. Getting stuck, trying to find out how things work and the frustration that comes with this is part of the learning process.
That's up to you. I deliberately set up this project to be tool- and programming language-agnostic. So, whether you want to use Java, C#, Python, JavaScript with your libraries and test frameworks of choice, or if you want to use low-code tools like Robot Framework, it's up to you.
I will provide reference implementations for some of the most popular languages, tools and libraries, and I am happy to include yours, too.
Are you stuck? Awesome! That's how you know you're learning something new. Here are some tips to help you get unstuck:
- Ask an experienced coworker for help
- Pair up with a fellow learner
- Ask Google / ChatGPT / StackOverflow / ...
If you're really, really stuck and still can't find an answer, please open an issue on this repository and I (or maybe someone else) will gladly have a look at it.
Here are some ideas to get feedback on your code:
- Pair program with a fellow learner while working on the exercises
- Ask an experienced coworker to have a look at your code
Unfortunately, I don't have the capacity to give detailed feedback to individuals on their code myself.
Link | Language | Test runner | API library | UI library | CI platform |
---|---|---|---|---|---|
Click | C# | NUnit | RestAssured.Net | Playwright | GitHub Actions |
Absolutely! There are several ways to do this:
- Provide a reference implementation for the project
- Submit a pull request containing improvements or additions to the workshop material
- Spread the word about this project at your company, on social media, or any other place
I am more than happy to discuss options to bring this project to your organization. We can then tailor the content to your specific requirements, and we can perform the exercises in your context, using your technology stack and applications. Send me an email at bas[AT]ontestautomation[DOT]com for more details.