avoid to have bugs in our applications, but we must limit its presence and impact (and not only in release date) Inception Design Development Acceptance Maintenance
that informs the developer whether the product is working or not. • Unit tests are fast • Unit tests are reliable • Unit tests isolate failures But tests made at the end of the project are only useful to exceed the mandatory coverage, they don’t provide many other benefits
discover how complex your code is becoming • Do you need to mock 7 objects for a unit test? • Do you have a setup method of >15 lines? • Are you able to test all your code? By writing test first: • You are becoming a consumer of your own API • You are forced to think what responsibilities the given object should have • You are creating a safety net for everyone
who cares about: • What the application does • How much it costs • Whether it is secure • Whether the network will hold • Whether it complies with the law • How easy it is to deploy and diagnose • How well it is written and architected • How easy it is to change
second-generation, outside-in, pull-based, multiple- stakeholder, multiple-scale, high-automation, agile methodology It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters Dan North
as a Story • As… I want… So that I… Define acceptance criteria as scenarios made up of steps • Given… When… Then... Automate the scenarios • So each step becomes running code
Customer I want to see a status of my delivery So I can know when it’s going to be delivered Scenario: Clicking a tracking URL Given I am waiting for a delivery And I received a confirmation message When I click the tracking URL from the message Then I should see a status of my delivery
the 60+ supported languages) with a little extra structure. Is designed to be easy to learn by non-programmers, yet structured enough to allow concise description of examples to illustrate business rules in most real-world domains. In Gherkin each not-blank line should start with a keyword: Feature, Scenario, Given, When, Then, And, Background, ...
give you a greater insight into the complexity of what you’re asking for • BDD will give you transparency about what the team is doing in each iteration • BDD will help your teams ship faster
you can find bugs even before they have been written • BDD will give you the best automatic regression tests • BDD will free you to do interesting, creative, exploratory testing