Use test-driven development for behavioral code changes when a focused failing test can express the requirement and provide useful design feedback.