Use when implementing any feature or bugfix, before writing implementation code. Observe the required behavior first. Do not use it to keep a green suite that encodes the wrong object, to write tests after the code, or to ship production code without a failing test.