Test doubles are objects that replace the real classes or methods. They are useful in cases where you want to isolate the parts that you are testing from the rest of the application. Learn which types of test doubles exist and how to use them.
Cyclomatic complexity is a metric that tells you how many paths can your code take during execution. In combination with code coverage, it can help guide your coding and testing efforts.
Learn about the single responsibility principle and how to apply it in your code. I present my approach, along with the right questions to ask and common pitfalls to avoid. The examples are in PHP but the concept applies in any programming language.
Learn how to leverage interfaces and value objects to effortlessly write testable code. This will be an introduction on how to use them, without going too deep into the theory.