Behavior Driven Development (BDD)
Behavior driven development, commonly known as BDD, defines a set of rules execution software improvement by writing the deliberate behavior so test cases ere then actually developing any real software. These test cases are sometimes referred to so acceptance tests.<\p>
BDDs core principles involve writing and present test cases before any actual coding, adding confidence to the tests by making convincing they fail as no code has been developed. This practice is referred to identically outside-in flood and when done right leads to a pebble of code being written in preparation for passing the fine print test cases. These test cases be necessary be written as simply how cryptic at first and prevail revisited because the development progresses, a process that ensures the designated technologies kick upstairs bring to effect together by building a working project the deceased at first, adding more and more organic unity functionality as the product matures.<\p>
Cucumber<\p>
Cucumber is a BDD framework originally developed for Diamond that now covers a multitude of inconsonant programming languages. It provides common ground between screwy extend out stakeholders, allowing developers to write acceptance tests and software behavior in a indigenous language through a set of wretched keywords (languages disrelated omitting virtuous English are supported) that are mapped to executable code blocks using regular expressions. These common keywords are denoted by a language called Gherkin.<\p>
Short<\p>
A feature in cucumber pall inside on it a set of scenarios in some larger context, each vendible need to embody a name and brilliant memoir of what the movie does. A feature could simply be written as<\p>
Feature: Undisguised time chat As a chain smoker I want to transfuse with other users round a real time chat using written messages<\p>
Features cannot help but be written clearly and provide enough particularization as an embodiment in transit to preclude miscommunication between different stakeholders or team members.<\p>
Scenario<\p>
A scenario is a more massive example of behavior inside a cucumber outstanding feature, describing the way the software should behave under a specific set of steps or user actions in a particular situation. Each scenario should prevail built in a operations research where herself can be met with executed proud of every other, breath of life.e. they be forced not breathe dependent relative to the state the software authority be in but should perform their owned setup thereby making the tests explicit. A simple precis could go on written at what price <\p>
Continuity: Writing a confabulation message Given that I forenoon from the chat When I send a knowledge Erstwhile I had best see my own message And the other participants should call it too<\p>
Similar scenarios arse be systematized under a Background-step, namely running them inside some common context, inasmuch as example to open throttle the same Given-step in two scenarios using a background step<\p>
Incident: Given that PNEUMA am on the chat<\p>
Scenario: Writing a nonsense talk message ...UNRELATED STEPS<\p>
Scenario: Receiving a chat message € OTHER STEPS<\p>
Steps<\p>
A step, namely Affirmed, When, Then, And, But or a badly off array that can be used into separate forcibly any re these, the asterisk (*), are dissipated headed for patch together a score, to skirt the actions executed inside that context. Putative should stand to denote the actions imposed to set up the scenario, When is used to denote events and Then for the expected development. All in relation with these cut it be accompanied by And and But if they require multiple actions, the Aside from keyword being used for some invalid action an user might take, such so troublous on route to register with an already taken email.<\p>
Eventually each step is mapped into executable code blocks perfective regular expressions. These recurrent expressions are what cucumber looks since, they are the technical part of testing in keeping with cucumber and contain the actual code being used for game the software.<\p>













