
Meet instructor Mauricio Nishi as he introduces modern developer testing, guiding you to engineer strong test cases, choose testing approaches, use mocking, and design for testability and maintainable tests.
Use automated tests and test code to guide development during refactoring and feature work, and to find bugs through specification-based, structural, and boundary testing, switching between modes as needed.
Explore boundary testing to reveal bugs that appear when inputs cross a threshold. Test near-boundary values like 100 and 101 to exercise both sides of the condition.
Use code coverage to improve your tests, not chase a number; it reveals untested lines and complex path combinations to strengthen your test suite.
Mocks reduce realism and introduce coupling and contract changes, making refactoring harder and requiring careful updates to mocks as production contracts change.
Design your system with testability in mind to make writing unit and integration tests easy, by controlling components, setting up test scenarios, and making assertions reliable.
Discover how ports and adapters separate domain code from infrastructure, enabling easy testing by mocking domain ports and isolating external systems like databases and web services.
Focus on testing a single microservice with unit, integration, and use-case tests, and mock external services to simplify validation while embracing divide and conquer and end-to-end testing costs.
Identify what makes legacy systems hard to test and build pragmatic infrastructure, including an API for data setup, to support use-case testing and observable results without large refactors.
Explore mutation testing, which creates mutants to assess how thoroughly your tests catch bugs. Learn about automation, cost, and human-in-the-loop feedback that guide real-world adoption.
Feel free to contact me! My twitter is @mauricioaniche !
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!