Reputation: 31
What is the difference between Cucumber and QAF bdd, What are the features which QAF has which is not available in Cucumber and what are the features which are available in Cucumber and not available in QAF Bdd.
Upvotes: 1
Views: 2159
Reputation: 5908
Let's first take a look at BDD2 and Gherkin syntax:
Gherkin is syntax that cucumber (and QAF as well) understands. BDD2 is superset of Gherkin syntax. That means BDD2 supports all gherkin keywords and structure and have additional provisions. Below are addition provision in BDD2 syntax:
Below scenario authored in BDD2:
@smoke @TestcaseId:12345
Scenario: A scenario is a collection of executable steps of different type
Given step represents a precondition to an event
When step represents the occurrence of the event
Then step represents the outcome of the event
See more examples of BDD2.
BDD2 looks like Gherkin and any gherkin editor can understands it as well. But it depends on runner to understand and use additional features. You can use BDD2 either with QAF or Cucumber. When using cucumber QAF-Cucumber will enable cucumber runner to get benefit of addition syntax feature.
Both are open source frameworks. Cucumber is more popular and well known while QAF is widely used by different enterprises but not as much popular as compared to cucumber.
Cucumber is dedicated for BDD implementation using Gherkin.
Where as QAF supports coded, keyword driven and BDD implementation using TestNG. QAF supports QAF BDD and advance QAF BDD2 syntax in addition to Gherkin.
Till cucumber 4, java implementation of cucumber was not thread-safe but with cucumber-4 entire architecture of implementation get changed and it started supporting parallel execution with thread safety.
QAF formally known as ISFW was thread safe from beginning and supports scenario level parallel execution.
Cucumber is Gherkin runner can be used with Junit, TestNG or standalone. Supports only gherkin syntax. Cucumber can run BDD2 QAF-Cucumber
QAF is Built upon TestNG and have native TestNG implementation for BDD. You can use cucumber runner by using QAF-Cucumber
Cucumber doesn't have inbuilt implementation for testing of web,mobile, web-service. Either you need to write your own implementation or use third party framework that supports cucumber. using cucumber for different black box testing needs.
QAF has inbuilt Web, Mobile, WebServices support with different design concepts along with resource and test data management, integration with third party tools (like jira, ALM, QMetry, Rally etc).
Cucumber supports for different programing languages.
QAF is Java only.
Cucumber supports data-driven testing by use of Examples in gherkin syntax.
QAF supports data-driven testing by use of Examples in Gherkin or BDD2 syntax. It also supports External data providers and data-provider interceptor.
Cucumber has hooks for scenario lifecyle.
QAF has support for all TestNG listeners with additional step listener. In addition to that it has support for webdriver listener, webelement listener, result updator and data-provider interceptor.
Till cucumber 4, Step implementation was required to use regular expressions. With Cucumber 4 new way similar to QAF available to get rid of regular expression in step definition.
QAF uses simple and easy way to provide description of step.
Cucumber have predefined Parameter Type support as method arguments. It also supports custom types. For any custom type you need to implement and configure type registry. User need to use defined parameter types in step definition.
QAF natively supports all complex types including Map, List, and any custom classes. It also has transformation support to customize parameter transformation behavior. In step description user is free to use meaningful name for parameter placeholder regardless of method argument type.
Cucumber doesn't support step definition in BDD.
QAF supports new step definition in BDD as well
Upvotes: 1