Open broad-well opened 6 years ago
As demonstrated, I am a big proponent for Test-Driven or Behavior-Driven Development. There are numerous articles online that discuss their effectiveness and possible shortcomings.
See this article for a thorough definition.
Along with TDD, there should be integration and acceptance tests (or their equivalent) to ensure that the code "works" overall.
Developers' own effort in assuring the quality of their code is within the criteria for disciplined software. Certain methodologies should be prescribed as standards in order to minimize bugs and maximize reliability. Ideally, teams should never come to us to report bugs in the core module (how embarrassing!)