Cucumber is een framework voor Behavior Driven Development. Met Cucumber is het mogelijk specificaties in gewoon Nederlands op te stellen terwijl ook een geautomatiseerde testtool (Selenium) deze specificaties begrijpt. Om dit mogelijke maken moet er scripts afgeleid worden van de specificaties. Rent a Brain kan dit tegen een zeer concurrerende prijs voor u doen op onze nearshoring locatie in Hongarije.
Kies hieronder een onderwerp voor meer informatie.
wat is BDD :: wat is Cucumber :: wat is BDD met Cucumber ::
Behavior Driven
Development
(BDD)
is
Cucumber
Behavior Driven
Development
met
Cucumber
In software ontwikkeling is Behavior Driven Development (BDD) een ontwikkel proces dat is ontstaan uit Test Driven Development (TDD). BDD combineert de technieken en principes van TDD met ideeën uit het Domain Driven Design en Object Oriented Analysis and Design om software development (Scrum) teams en management teams te voorzien van gemeenschappelijke tools en processen om samen te kunnen werken bij het ontwikkelen van software.
Ook al is BDD voornamelijk een idee over de manier waarop software ontwikkeling zou moet worden ge-managed vanuit business belangen en technisch inzicht, gaat de praktijk er toch vanuit dat er software tools nodig zij om het ontwikkel proces te ondersteunen. Hoewel deze tools meestal speciaal zijn ontwikkeld voor BDD kunnen ze worden gezien als specialistische vormen van tools voor TDD. De tools zorgen voor (test) automatisering en een gedeelde domein taal die de centrale thema’s van BDD zijn.
Cucumber ondersteunt BDD . Het is een Agile-software-ontwikkeling techniek en het antwoord op Test-driven development. Het breidt TDD uit door test cases te schrijven die ook leesbaar zijn voor niet-programmeurs. In feite wordt mensentaal gecombineerd met een programmeertaal
Wat Cucumber is is het makkelijkst uit te leggen aan de hand van een voorbeeld. Functionaliteiten worden in Cucumber beschreven in de semi taal Gherkin. Gherkin heeft als eigenschap dat iedere zin begint met één van de vijf woorden Given, When, Then, And of But. In het Nederlands kan dit ook Gegeven, Wanneer, Dan, En en Maar. Of in één van de veertig andere talen. Laten we voor het voorbeeld de Engelse versie gebruiken. Het voorbeeld gaat over het intranet van een hotel waar gasten een ansichtkaart vandaan moeten kunnen versturen. In Cucumber wordt dit ongeveer zo beschreven
Feature: Guest should be able to send postcards from our service pages
Scenario: A Guest logs in on the service pages of Green Valley Estate Porva Inn (www.porvainn.eu)
Given a guest logs in on the service pages of Green Valley Estate Porva Inn
When the guest logs in correctly
Then the guest is logged in and aware of being on the service pages
Scenario: A guest wants to send a postcard
Given a guest is on the service page for sending postcards
When the guest wants to send a postcard
Then the guest has to fill out a form with information about the sender
And optionally a message
But do so correctly
And the postcard is sent
And the guest should be notified
Scenario: the recipient receives a postcard
Given a postcard was send to a recipient
Then the recipient has received a postcard by email
And the recipient can click on a link to go to the website of Green Valley Estate Porva Inn
Dit wordt vervolgens geautomatiseerd. Dit kan op 2 manieren. Voor de gebruikers acceptatietests wordt dit gedaan met de zogenaamde ingeblikte “canned” steps van Cucumber. Ongeveer zoals dit:
Feature: Guest should be able to send postcards from our service pages
Scenario: A Guest logs in on the service pages of Green Valley Estate Porva Inn (www.porvainn.eu)
Given (/^a guest logs in on the service pages of Green Valley Estate Porva Inn$/) do
steps %{
Then I maximize browser window
Then I navigate to “http://www.porvainn.eu/?page_id=17481″
}
end
When (/^the guest logs in correctly$/) do
steps %{
Then I enter “Cucumbertest” into input field having css “#user_pass”
Then I enter “Cucumbertest” into input field having css “#user_login”
When I click on element having css “#wp-submit”
}
end
Then(/^the guest is logged in and aware of beeing on the service pages$/) do
steps %{
Then element having class “entry-title” should have text as “Service pages Green Valley Estate Porva Inn”
Then element having css “div.content-column:nth-child(1) > div:nth-child(1) > h2:nth-child(1)” should have text as “U bent nu ingelogged op onze service pagina’s”
Then element having css “div.content-column:nth-child(2) > div:nth-child(1) > h2:nth-child(3)” should have text as “You are now logged in on our service pages”
}
etc.
Omdat dit vrij onleesbaar is verdient het de voorkeur om deze testgevallen te herschrijven als:
Feature: Guest should be able to send postcards from our service pages
Scenario: A Guest logs in on the service pages of Green Valley Estate Porva Inn (www.porvainn.eu)
Given (/^a guest logs in on the service pages of Green Valley Estate Porva Inn$/) do
steps %{
Then I maximize browser window
Then I navigate to #{$the_Login_page}
}
end
When (/^the guest logs in correctly$/) do
steps %{
Then I enter #{$password} into #{$the_Password_input_field}
Then I enter #{$userid} into #{$the_User_name_input_field}
When I click on #{$the_Login_button}
}
end
Then (/^the guest is logged in and aware of beeing on the service pages$/) do
steps %{
Then #{$the_Page_title_should_be} “Service pages Green Valley Estate Porva Inn”
Then #{$the_Dutch_subtitle_should_be} “U bent nu ingelogged op onze service pagina’s”
Then #Then #{$the_English_subtitle_should_be} “You are now logged in on our service pages”
}
Vervolgens kunnen de tests geautomatiseerd worden afgedraaid.
Kijk voor meer informatie hoe dit gedaan wordt naar de video op onze Blog
BDD heeft 2 essentiele onderdelen. Een gemeenschappelijke taal die gedeeld wordt door developers, business en tools en Test Driven Development (TDD). De gemeenschappelijke taal wordt gewaarborgd door Cucumber met de functionaliteit beschreven in Given, When, Then vorm. TDD wordt ook ondersteund door Cucumber maar gebruikt daarvoor maar een klein onderdeel van Cucumber. Namelijk aleen de feature steps en niet de canned steps.
Waar voor de Acceptatie/Integratie testen de test nog als volgt beschreven en uitvoerden:
Then (/^the guest is logged in and aware of beeing on the service pages$/) do
steps %{
Then #{$the_Page_title_should_be} “Service pages Green Valley Estate Porva Inn”
Then #{$the_Dutch_subtitle_should_be} “U bent nu ingelogged op onze service pagina’s”
Then #Then #{$the_English_subtitle_should_be} “You are now logged in on our service pages”
}
end
Zullen developers in de Systeemtest de test als volgt uitvoeren:
Then (/^the guest is logged in and aware of beeing on the service pages$/) do
steps %{
Code die de functionaliteit uitvoert
}
end
Dit is namelijk de essentie van TDD. Waar de code de test is. En hier zien we één van de zwakkere punten van Cucumber. Het is makkelijk Cucumber fout te gebruiken. Ga voor meer informatie hierover naar onze Blog