Test-driven development (TDD) is a software development technique that follows three rules: 1) write a failing test first, 2) write code to pass that test, and 3) refactor code as needed. TDD has benefits like more trustworthy code and executable documentation, but also limitations like difficulty testing some code and needing management support. Unit tests test the smallest parts of an application, integration tests combine modules, and system tests evaluate full system requirements compliance as a black box.