Part 1. First steps
Chapter 1. Building software that makes a difference
1.1 BDD from 50,000 feet
1.2 What problems are you trying to solve?
1.3 Introducing behavior-driven development
1.4 Benefits of BDD
1.5 Disadvantages and potential challenges of BDD
1.6 Summary
Chapter 2. BDD-the whirlwind tour
2.1 Introducing the train timetabe application
2.2 Determining the value proposition of the application
2.3 Requirements analysis: discovering and understanding features
2.4 Implementation: building and delivering features
2.5 Maintenance
2.6 Summary
Part 2. What do I want? Defining requirements using BDD
Chapter 3. Understanding the business goals: Feature Injection and related techniques
3.1 Introducing flying high airlines
3.2 Feature injection
3.3 What do you want to archieve? Start with a vision
3.4 How will it benefit the business?
3.5 Who will benefit? Identify stakeholders and their needs
3.6 What do you need to build? Identify capabilities
3.7 What features will provide the most ROI?
The Purpose-Based Alignment Model
3.8 Summary
Chapter 4. Defining and illustrating features
4.1 What is a “feature”?
4.2 Illustrating features with examples
4.3 Real Optionns: don't make commitmets
4.4 Delierate Discovery
4.5 From examples to working software: the bigger picture
4.6 Summary
Chapter 5. From examples to executable specifications
5.1 Turning concentre examples into executable scenarios
5.2 Writing executable scenarios
5.3 Using tables in scenarios
5.4 Expressive scenarios: patterns and anti-patterns
5.5 Organizing you scenarios using feature files and tags
5.6 Summary
Chapter 6. Automating the scenarios
6.1 Introduction to automating scenarios
6.2 Implementing step definitions: general principles
6.3 Implementing BDD more effectively with Thucydides
6.4 Automating scenarios in Java with Jbehave
6.5 Automating scenarios in Java using Cucumber-JVM
6.6 Automating scenarios in Python with Behave
6.7 Automating scenarios in .Net with SpecFlow
6.8 Automating scenarios in JavaScript with Cucumber-JS
6.9 Summary
Part 3. How do I build it? Coding the BDD way
Chapter 7. From executable specifications to rock-solid automated acceptance tests
7.1 Writing industrial-strength acceptance test
7.2 Automating your test setup process
7.3 Separating the what from the how
7.4 Summary
Chapter 8. Automating acceptance criteria for the UI layer
8.1 When and how should you test the UI?
8.2 Automating web-based acceptance criteria using
8.3 Using page objects to make your test cleaner
8.4 Summary
Chapter 9. Automating acceptance criteria for non-UI requirements
9.1 Balancing UI and non-UI acceptance tests
9.2 When to use non-UI acceptance test
9.3 Types of non-UI automated acceptance test
9.4 Defining and testing nonfuntional requirements
9.5 Discovering the design
9.6 Summary
Chapter 10. BDD and unit testing
10.1 BDD, TDD, and unit testing
10.2 Going from acceptance criteria to implemented features
10.3 Exploring low-level requirements, discovering design, and implementing more complex functionality
10.4 Tools that make BDD unit testing easier
10.5 Using executable specifications as living documentation
10.6 Summary
Part 4. Taking BDD Further
Chapter 11. Living Documentation: reporting and project management
11.1 Living documentation: a high-level view
11.2 Are we there yet? Reporting on feature readiness and feature coverage
11.3 Integrating a digital product backlog
11.4 Organizing the living documentation
11.5 Providing more free-form documentation
11.6 Technical living documentation
11.7 Summary
Chapter 12. BDD in the build process
12.1 Executable specifications should be part
12.2 Continuous integration speeds up the feedback cycle
12.3 Continuous delivery: any build is a potential release
12.4 Continuous integration used to deploy living documentation
12.5 Fasted automated acceptance criteria
12.6 Summary
Index