Modern Software Testing
What you'll learn
- The most common real-world trade-offs in software testing
- Different techniques to engineer more rigorous test cases
- Decide between unit, integration, or system tests, as well as when or not to mock
- Design highly testable units of code
- Understand what makes it easy for developers to write tests
- Some experience with testing frameworks in any programming language (Java's JUnit, C#'s NUnit, Python's pytest, etc)
- Understanding of the basics of software design (i.e., classes, dependency injection)
- Have used a mocking framework, even if only the basics of the tool
Are you a software engineer that already knows how to write automated tests, but wants to get better at it? This is the course for you.
This course isn't about teaching you some testing tool or framework. It's much bigger and deeper than that. It's about explaining to you all the principles, practices, and patterns of software testing, their advantages and disadvantages, so that you can write very strong tests that are actually able to find bugs, in a very productive way.
This course addresses topics like:
How to write test cases that go beyond the happy paths?
When to go for unit testing and when to go for integration testing?
How can I use code coverage to help me improve my tests (and finally stop hating it!)?
What's the secret to write many tests?
How to make tests that run fast and are simple?
When to mock, and when not to mock something?
What's key to design testable systems?
How can I fight flaky tests?
How to test micro services?
How to test legacy systems?
What's the role of QAs if I'm the one writing tests?
... and many more!
This course isn't focused on one specific technology or programming language, and everyone can benefit from it. These principles, practices, and tips emerge from my almost 20 years of experience in helping teams write better tests.
This course will feel like a conversation between two engineers. The majority of the course is about me speaking to the camera, with a few illustrations and highlights when needed. This course is perfect for you to take while cleaning the dishes, or taking the subway, as it requires your ears more than your eyes!
Who this course is for:
- Software developers that already know how to write tests, but want to get better at it!
Maurício develops software for almost 20 years. He has worked for different companies, ranging from web development to embedded systems. He's a tech lead at Adyen. He's also an assistant professor in software engineering at Delft University of Technology. Maurício's main expertise is software design and software testing. He has written a few books, such as Effective Software Testing, published by Manning in 2022, and SOLID for Ninjas in 2015. He has published over 40 peer-reviewed scientific research papers on topics like software testing, software maintenance and evolution.