I heard the statement “Test is not a landfill!” today from one of my leads and thought it was a great way to describe what Test is striving for. Test should not be like a landfill. When I picture a landfill, I see a fenced in area that garbage gets dumped into. The garbage is the low-quality builds or untested code coming from the Development team. And the fence is the lack of communication on what’s coming. Devs need to understand that unit tests are very important to run before checking in their code. And if they are going to check in something that will break BVTs, they need to communicate that beforehand.
As for unit tests, I find the best ways to get devs to increase their priority in writing and running these tests is to 1). Report on them and 2). Don’t accept a build for testing without them being run. In the first case, widely communicating reports showing a lot of zeros for number of unit tests or code coverage of unit tests is a great motivator. Rejecting a build after devs potentially spent a lot of time coding but no time testing their code is also a good motivator. It’s not meant as punishment, just as a firm statement that testers aren’t going to waste their time testing a low quality build until devs run some tests to prove it at least has an adequate level of quality. If they run tests before every check-in, it is easier for them to debug a problem because that individual dev will know specifically what code was changed. Waiting until a build is produced and then having testers stumble into problems, costs more time because now testers have to debug through all the dev code (not just what was changed by one dev) and sometimes multiple testers have installed/deployed the build and are blocked. This is costly.
So a great statement for all test teams is that “Test is not a landfill”!