API testing is a type of software testing that focuses on validating the functionality, reliability, performance, and security of Application Programming Interfaces (APIs). APIs serve as the communication interface between different software systems, allowing them to exchange data and interact with each other.
Example:
The weather bureau's software system contains daily weather data. The weather app on our phone talks to this system via APIs and shows the daily weather updates on our phone.
Mobile apps that provide location-based services, such as ride-sharing platforms or food delivery apps, interact with geolocation APIs.
A financial data analysis application integrates with APIs provided by stock exchanges or financial data providers to fetch real-time stock prices, financial news, and market trends.
A travel booking website interacts with APIs from airlines, hotels, and car rental services to provide users with real-time availability and booking options.
An online marketplace integrates with various payment gateway APIs to facilitate secure payment processing for customer orders.
Rest Assured simplifies the process of API testing by providing a clean syntax for constructing requests and performing assertions on the responses, allows to write concise and robust API tests.Rest Assured supports various HTTP methods such as GET, POST, PUT, DELETE, and allows for easy manipulation of request headers, parameters, and bodies. It also provides extensive validation capabilities to verify the response status codes, headers, and response bodies.
Cucumber is a testing tool that supports Behavior Driven Development (BDD). It offers a way to write tests that anybody can understand, regardless of their technical knowledge. In BDD, users first write scenarios or acceptance tests that describe the behavior of the system from the customer’s perspective, for review and sign-off by the product owners before developers write their codes.
API testing with RestAssured in a Cucumber BDD (Behavior-Driven Development) framework helps to write tests in a more structured and easily readable format. RestAssured is a Java library for API testing, that provides a simple way to interact with RESTful APIs.
Here is an example of how API testing with RestAssured can be done in a Cucumber BDD framework:
API Used: https://reqres.in/
Set up the project dependencies:
RestAssured and Cucumber dependencies are added to the pom.xml file
Create feature files:
Have to write feature files using Gherkin syntax to describe the test scenarios in a human-readable format.
Here the feature file describes a scenario to create a new user using the API. It includes the initial setup, the steps to perform, and the validation of the outcome.
Create step definition classes to define the behavior for each step in the feature files.
Used RestAssured to send API requests, capture responses, and perform assertions on the response data.
Organized the step definitions based on the scenarios’ Given, When, Then structure.
GET requests in API testing with RestAssured
In this example, it uses the RestAssured's get() method to send the GET request to the specified base URI and endpoint. The response is stored in the response variable for further processing or validation.
POST requests in API testing with RestAssured
Data-Driven Testing
Created an Excel reader for data-driven testing in this Cucumber BDD framework. External libraries can be utilized to use Excel sheet data for data-driven testing in Cucumber. This Excel Reader class handles reading data from the Excel file. In the step definition class, instantiated an instance of the ExcelReader class and passed the path to the Excel file as a parameter.
Here's the Excel reader for data-driven testing in the Cucumber BDD framework:
This code sets up the request using the given base URI, endpoint, content type, and request body, and then sends the POST request. The response is captured in the response variable, which can be used for validation purposes.
Validation:
Validation is a critical aspect of API testing as it helps ensure that the API functions correctly and meets the expected behavior and requirements.
DELETE requests in API testing with RestAssured
In this step definition, it sends a DELETE request to the specified base URI and endpoint using the delete() method from RestAssured. The response from the request is stored in the response variable.
Execute the tests:
Run the feature files using a test runner class that integrates Cucumber and RestAssured.
The test runner executes the scenarios defined in the feature files and maps them to the corresponding step definitions.
View test results:
The test runner in Cucumber generates console output that provides details of the test execution. It displays the progress of the test execution, including the number of scenarios passed and failed.
The console output includes information about the executed feature files, the scenarios being executed, and the results of each scenario.
GET Request Console Output:
POST Request Console Output:
DELETE Request Console Output:
Conclusion:
By combining RestAssured with Cucumber's BDD framework, we can create highly readable, collaborative, and maintainable API tests that align with business requirements. It enhances the overall testing process, promotes effective communication, and improves the quality and reliability of API-driven applications.
By using the combination of RestAssured and Cucumber in a BDD framework, we can achieve a clear separation of test scenarios, step definitions, and test execution.
Overall, API testing with RestAssured in a Cucumber BDD framework provides an effective way to automate and document the API tests in a readable and maintainable format.