BDD (Behavior Driven Development) is a software development process that originally emerged from Test Driven Development (TDD). Behavior Driven Development is written in such a way that it illustrates the behaviour of the system, written in readable and understandable language for everyone involved in the development.
BDD (Behavior Driven Development) especially focuses on providing shared process and shared tools promoting communication among software developers and business analyst on collaborating on software development or we can say being on the same page.
“Dan North”, the person who is responsible for the evolution of BDD. According to him – “BDD is using example at multiple levels to create a shared understanding and surface uncertainty to deliver software that matter.” The example in which BDD are written includes:-
- Converted in to Executive specification
- Used as the acceptance test
BDD (Behavior Driven Development) Key-Features
BDD (Behavior Driven Development) focuses on:-
- Providing a shared process and shared tools on promoting communication to the software developer, business analyst and stakeholders to collaborate on software development, with the aim of delivering product with business value.
- What a system must do and rather not on how it should be implemented.
- Providing better readability and visibility.
- Working not only in the working of the software but also that it meets customer expectation.
Feature File for BDD
- Feature: A feature would describe the current test script which has to be executed.
- Scenario: For a particular test case, scenario would describe the expected outcome and steps.
- Background: Before each scenario, background describes the steps that would be executed.
- Scenario Outline: We can execute the same scenarios for multiple sets of data, using scenario outline. The data is provided in a tabular structure (separated by | |). By providing the column header in angular brackets (< >) the step definitions can be parameterized. For each parameter, double quotes need to be put in the table and not in the step definition.
- Given: ‘Given’ specifies the context of the text to be executed. Given step can also be parameterized using data tables.
- When: ‘When’ specifies the test action to be performed.
- Then: ‘Then’ specifies the expected outcome of the test.
In each step definition within double quotes (“”), parameters can be passed. It will read as Regex format. Tags can be provided for different features, backgrounds or scenarios. In determining the specific scripts that would be executed, the tags would help.
What Is Cucumber?
Cucumber is one of the testing framework that helps to bridge the gap between business managers and software developers. Based on the BDD (Behavior Driven Development) style, tests are written in plain language that helps a layperson to understand. Cucumber allows software development teams to describe how software should behave in a plain text. The text is written in a domain-specific business-readable specific languages and serve as development-aid, automated tests and as documentation into one format.
Cucumber is a functional test automation tool for lean and agile teams. It supports Behavior Driven Development, specification by example and agile acceptance testing. Cucumber is a Ruby tool that offers a natural-language way to specify behaviors in terms of “Given, When, Then” (GWT) sentence fragments. This language is called Gherkin.
The syntax is extremely flexible: Cucumber only cares about the Gherkin keywords “Given,” “When,” “Then,” “And” (plus a few others); everything else is simply matched against your regular expressions. Any tokens captured by capture groups in your regexes are passed to your step definition blocks as parameters. Cucumber can be used along with Selenium, Watir, and Capybara etc. Cucumber supports many other languages like Perl, PHP, Python, Net etc. In this tutorial, we will concentrate on Cucumber with Java as a language.
What is Gherkin?
Gherkin is a Business Readable, Domain Specific Language created especially for behavior descriptions. It gives you the ability to remove logic details from behavior tests. Gherkin serves two purposes: serving as your project’s documentation and automated tests. It is a structured language; it follows some syntax let us first see a simple scenario described in gherkin.
Feature: Search feature for users
This feature is very important because it will allow users to filter products
Scenario: When a user searches, without spelling mistake, for a product name present in inventory. All the products with similar name should be displayed
Given: User is on the main page of www.myshopingsite.com
When: User searches for laptops
Then: search page should be updated with the lists of laptops
Gherkin contains a set of keywords which define different premise of the scenario. As we can see above the bold parts are the keywords. We will discuss about the gherkin test structure in details later but the key points to note are:
- The test is written in plain English which is common to all the domains of your project team.
- This test is structured that makes it capable of being read in an automated way. There by creating automation tests at the same time while describing the scenario.
Service Offerings
- We provide automation requirement analysis, automation test strategy/plan, test estimation, script creation, test scripts execution, defect management and test progress reporting to client/stakeholders.
- With the ideas from objected oriented analysis, design and domain-driven design to provide software development and with shared process & shared tools of management.
- With BDD (Behavior Driven Development), we collaborative everyone which require a cross-functional team consisting of customer/client, BAs, QAs, testers, UI & UX designers and software developers.
- With Oditek, you can avoid technical time waste caused by a reluctance to refactor code, slow feedback caused by handovers and silos, or rework caused by vague requirements. We offer a pro-active approach to software development.
- Oditek can help you implement individual tools to roll-out any number of combinations and integrations between them and configure them to your exact requirements – all within a matter of days.
- We will take the time to fully understand the way you currently work and what you are trying to achieve, in order to help you to build a comprehensive solution plan to move forward.
- Break/fix support, meaning if an application goes down, we’ll be on hand to get you up and running again.
- We provide all kind of test basically for web-based/enterprise application.
Skill Matrixes
- 7+ years of in-depth experience on automation testing in Agile environment.
- 10+ experience hand on Automation experience on (Selenium, Java, Cucumber, Serenity).
- Experience on continuous integration tools Jenkin or Azure DevOps.
- Experience in Test Strategies, Test Script, Automation Framework Designing, Refactoring, Executing and maintaining automated test scripts.
- We understand and design Automation Framework – Hybrid, Data Driven, Keyword Driven, Behavior Driven
- We apply automated tools in testing of applications across all phases of the Software Development Life Cycle (SDLC).
- We are acquainted with tools and processes to automate other test activities, such as test management, reporting, test data generation and defect management.
- We implement the test strategy via developing, executing test script and report generation.
- Provide timely project related data as required in applicable systems and ensure timely reporting and response to client partners.
- Working knowledge on Selenium, Cucumber and BDD (Behavior Driven Development) tools along with the understanding of TestNG/Junit, Gherkin, Ant/Maven and Jenkins
- We are capable of designing, developing and supporting frameworks for any kind of test.
- Proficient with bug tracking and test management tool sets
- We are all over the place in the field of Testing like Unit testing, Integration Testing, Performance/Stress/Scalability Testing, Automated Browser Testing, Visual Regression Testing, User Testing, Security Penetration Testing etc.
- Able to identify the gaps between manual and automaton testing and implement the solution regarding the same
- Good Programming skills in Java (Collections API, File I/O, Database I/O) and JSON
- Good for Web services testing using SoapUI, PostMan etc.
- Experience in version source control tools like GIT, SVN etc. and version control tools and test management tools like HP ALM.