Developer Testing Explained

Developer testing is the developers’ intentional and systematic employment of testing tools and techniques to achieve the highest possible quality of the software that they create.

Let’s try relating this to some more familiar concepts.

Developer testing and Unit testing
Unit testing is an integral part of developer testing. After all, the majority of all developer tests are most likely to be unit tests. A developer who works intentionally and systematically with unit tests will rely on established testing techniques to create meaningful and comprehensive unit test suites (as opposed to testing the easy and obvious). Such a developer will also constantly look for tools and libraries that will make the tests more self-documenting and easy to read.

Developer testing is more than unit testing. In most cases, developers need to supplement their unit tests with higher-level tests, such as integration tests and end-to-end tests.

Developer testing and Testing
Here “testing” means traditional manual testing. Nowadays it’s common to make a distinction between testing and checking. The former requires skill, experience, imagination, and creativity, whereas the latter is boring and repetitive and best left to a machine. In organizations where developers just write code, without actually verifying that it works, testing is reduced to checking and quality assurance is used to compensate for an inferior development process. An explicit goal of developer testing is the developers automate all the checking, so that actual testing can take place.

Sometimes, the terms prevention and detection are used instead. Developer testing is all about prevention.

Developer testing and Continuous Delivery
Developer testing is a prerequisite for continuous delivery. As a team starts to aim for a shorter delivery cadence, it soon realizes that it has to automate all of its current tests, and that new functionality has to be developed in tandem with developer tests (checks). There’s simply no way to handle regression testing manually with frequent releases.