A feature is a functionality or standalone unit of a software application. In other words, the feature is a parameter which is used to test the requirements of the customer from the software product.

Let's understand it through a very common example of a social networking site.

Few basic features of the social networking site can be determined as -

  • Create and delete the user from the social networking site.
  • User login functionality to access the social networking site.
  • Sharing videos or photos on the social networking site.
  • Sending a friend request.
  • Logout or sign out.

At the time of testing, it is the best practice that we should determine the features first, before deriving the test scripts to be tested.

Hence from the above discussion, it is clear that, when we talk about cucumber, each independent functionality of the product or web application can be called as a feature. A feature typically has a list of scenarios to be tested for that feature, and the feature and its description are stored in the feature file.

There can be numerous features of a software product. Hence for the better management of features, we should create a separate feature file for each feature.

Sr.NoFeatureFeature Filename
1Login FeatureLogin.feature
2Share Post FeaturesharePost.feature
3Create an Account FeatureAccountCreation.feature
4Delete an Account FeatureAccountDelete.feature

The keyword "Feature" represents a feature under the test in Gherkin language.

Note: It is recommended that write a small description of features beneath the keyword feature in the feature file.

Example:

Suppose, the feature login functionality of a social networking site is under the test. Hence, we need to test it as per the following aspects:

  • If both credentials, i.e., username and the password are correct, then the user should log in into the social networking site.
  • If the username is incorrect, but the password is correct, then the user should be shown an error message.
  • If the user name is correct, but the password is incorrect, then the user should be shown an error message.
  • After the successful login, the user should be navigated to My Account or Profile page.
feature in cucumber testing

Now, we are going to create a feature file for the login feature of the social networking site:

Feature: Login functionality
Scenario: Successful Login with Valid entries
Given user navigates to the website facebook.com	
And user logs in through Login link by using username as "pritysharma321@yahoo.com" and password as "prity123sharma"

Then login must be successful.
Scenario:  Unsuccessful Login with Invalid entries
Given user navigates to the website facebook.com
When username is incorrect, but the password is correct
user logs in through Login link by using Username as "Parma321@yahoo.com" and Password as "prity123sharma"
When username is correct, but the password is incorrect
user logs in through Login link by using username as "pritysharma321@yahoo.com" and Password as "12345678"
Then login must be unsuccessful.

According to the above example, we can create feature files as per the particular feature. A feature file is always based on the behavior of an application under specific circumstances.