Get Testy with Spring Boot

Give bugs the boot with this 8 hour course on testing spring boot apps

There’s two ways to make quality software – don’t write bugs, or find and fix bugs as efficiently as possible. As humans, the first option isn’t possible – we are going to make mistakes. This course is about how to write code that makes it hard for bugs to survive, and tries to answer the question, “How can I change software without breaking it?

You’ll also see how clean API’s, smart architecture, and just plain beautiful code emerge from following these practices.

Sign Up Now

This course is still under development, and I would love to have people try it out and give feedback as soon as possible. Because of that, I’m making this $29.99 course free to everyone who signs up before July with a coupon code I’ll send out once the course is live.

The first 25 people will also receive access to “preview lessons” with free “office hours” to ask me questions about the material as they become available.

The Course

This course is for intermediate developers who already know Java and want to:

  • Write great API’s for classes using test driven development
  • Iterate on solutions faster
  • Assure the software works as a whole
  • Automatically prove a feature actually works
  • Incrementally improve test coverage in legacy projects

Below is a description of the topics and tools used.

Test Driven Development

Test driven development is the key to writing maintainable code. It forces you to work with the API to your class immediately, and makes sure that you are aware of all the dependencies that are in the code you are writing. This course covers test driven development in Java using JUnit with Hamcrest assertions and Mockito. It also exposes the ways that people create additional dependencies that they may not even be aware of.

Integration Testing

A working piece of software is more than the sum of its parts, but, without some level of integration testing, there’s a good chance that it’s broken. This course covers service level integration testing using spring-test for a spring-boot based application.

Testing by isolating integration points, including testing SQL calls using H2 and Liquibase are covered in this course.

End to End Testing

The end to end test represents proof that your application actually does what it says it’s going to do. Cucumber is a lightweight testing framework that builds on top of the tools you are already familiar with. That being said, an end to end testing suite is a code base in and of itself, and must be treated as such. This course covers how to apply good software architecture to your codebase, and covers how to treat this code just like your other client code bases.

Testing Legacy Code

The definition I use for legacy code is any code that is not under test. This course includes several techniques for getting subsets of larger code bases under test so that you can make changes more safely, even in code bases that didn’t get well tested the first time around.