9.1 The philosophy behind test-driven development9.1.1 What test-driven development is9.1.2 Adjusting the size of your iterations9.1.3 Why adopt test-driven development?9.1.4 When not to apply test-driven development9.2 Writing a JavaScript module using TDD9.3 Testing top-down versus testing bottom-up9.3.1 What bottom-up and top-down testing mean9.3.2 How top-down and bottom-up approaches impact a test-driven workflow9.3.3 The pros and cons of bottom-up versus top-down approaches9.4 Balancing maintenance costs, delivery speed, and brittleness9.4.1 Test-driven implementation9.4.2 Test-driven maintenance9.5 Setting up an environment for TDD to succeed9.5.1 Teamwide adoption9.5.2 Keeping distinct lanes9.5.3 Pairing9.5.4 Supplementary testing9.6 TDD, BDD, validations, and specificationsBDD (behavior-driven development)Summary