The correct answer is the creation of unit tests before code being written and refactoring code once it is written. Test-driven development, for the sake of maintainability, focuses on unit tests being written before code and refactoring.
The other responses are incorrect because they are not necessarily part of Test-Driven Development. Manual peer testing is not a real term; pair programming and production smoke tests are irrelevant to Test-Driven Development.