4

What would be the additional benefits of wrapping a bdd(behavior development design) framework around a proprietary test tool besides the natural language aspect of the test steps?

Any suggestions for tools that would ease such a bdd integration with test tool/tools?

5
  • Can you give an example of what you mean?
    – dzieciou
    Commented Feb 23, 2016 at 21:14
  • @dzieciou I write a feature file with couple of scenarios and then associate steps in the scenario to some units(such as javascript functions) in the proprietary test tool. What just happened with the above set up would be that now the test are being driven using the scenarios in the feature file. Would there be any other benefit besides driving the tests through the natural language sentences?
    – user16854
    Commented Feb 23, 2016 at 21:28
  • It makes easier for non-technical people to write variations of the same test and understands tests but harder to maintain the fixtures, i.e., the glue that links feature files with the system under tests.
    – dzieciou
    Commented Feb 23, 2016 at 21:31
  • @dzieciou, ability to quickly understand test is definitely an added benefit. Hypothetically if the wiring that takes place behind the scenes were ever eliminated, are there any other benefits with a narrative style testing is what I am seeking.
    – user16854
    Commented Feb 23, 2016 at 22:12
  • From my experience of using Cucumber framework, it really reduces any communication gaps between management and devs. Also, during the brainstorming session we were able to identify more scenarios even before the coding started and it helps to ensure test coverage of the application.
    – Sanchita
    Commented Feb 24, 2016 at 11:53

5 Answers 5

2

Cucumber !

The main benefit is tests that are written in the users language using business domain terms.

This helps to bring both the developers and users together for a better understanding and implementation of applications.
For some aspects, programmers will appreciate product owners being very specific and writing down specifications and requirements in a logical fashion. For other aspects product owners will appreciate being able to understand the functionality that has been implemented based on the tests they they can read in plain English. In other cases programmers are made more aware of subtle real world factors that can dramatically affect design and implementation.

One example of this framework in action is Cucumber which is commmony a wrapper around RSpec but can and has also been used with many other development frameworks and languages.

2

I feel some of the additional benefits are:

  1. Isolation of test harness from the testing tool. By this I mean the only point the test tool is invoked is when performing actions on the web browser.

  2. Natural pagination by excepting the previous step to put into appropriate page context for the current step to act on.

  3. Better reporting by means of natural english sentences.

  4. Hierarchical/structured approach to testing allows for better debugging since there is a narrower view. So a step failing could be tracked back to an action as opposed to navigating through an entire script of actions.

In regards to a tool, I have written the following which allows cucumber-js to integrate with any testing tool by means of a driver: wrap-bdd on a nodejs platform. Only drivers so far implemented as an example are for test complete and test execute tool.

https://github.com/vsashidh/generator-wrap-bdd : installer

https://github.com/vsashidh/wrapping-BDD : main

1

Behaviors Become Defined

If everyone is on board with the process instead of a list of requirements, everyone gets a list of Behaviors which then define the requirements. As the process is used more, and discussions are had these behaviors become more thorough and the requirements become clearly defined from them.

Test cases are easier

When BDD frameworks are used correctly, test cases are easier for everyone. By seeing in a human readable format what the test case was doing when it failed, you can then be able to determine further actions and discovery processes to determine any other issues.

Following Patterns

Software Development tends to have patterns of defects. If your BDD framework has historical data, it will allow you to follow these patterns. As an example, one of the common areas for issues that I have seen is with roles and permissions. Since I know this is a common area for issues instead of waiting for development to finish, getting the code into QA, finding issues with it and then sending back to Dev I am able to ensure that part of the BDD includes the roles and permissions up front, ensuring that my developers understand exactly what they are attempting to accomplish.

Think first, Code later

All *DD follows this basic principle. Writing code is a privilege, one that is earned by determining the problems you are going to face up front. While this doesn't result in perfect code, it does help to reduce mistakes and makes everyone's life better.

0

I am using SpecFlow with XUnit and c#, and I find that well-written SpecFlow scenario steps keep the step definition code's purpose very clear. It effectively documents and comments the code, and encourages single responsibility and reuse.

0

Two biggest advantages of BDD are

  • improved communication and collaboration (same language being used for business/development/test)
  • simplified automation (as features/acceptance criteria can serve as a blueprint for the automated test cases)

Added benefit is that the whole team is focused on the biggest value for the end-user: behavior, since ultimately users care how the product behaves.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.