Behavior Driven Development (BDD) is an agile methodology that describes a cycle of interactions with well-defined outputs resulting in working, tested software. It focuses on describing behaviors that drive development through executable documentation that can be understood by everyone involved. BDD grew out of Test Driven Development but recognizes communicating with non-programmers is important. There are two main BDD styles - Cucumber uses Given/When/Then format and is more detailed/organized while Spec uses Describe/It and is more concise/freeform with documentation generated from code. Cucumber is typically used when product owners are involved while Spec is used for more developer-oriented tests.