API testing is part of software testing which involves testing of Application Programming Interfaces independent of User Interface. In context to Web Application, API testing mainly involves testing the REST/SOAP Web APIs exposed by application to GUI.
API testing is done to determine if APIs match the expectation in terms of functionality, reliability, performance and security. API testing happens at data and business logic layer and is done in absence of an GUI. API testing plays a major role in test automation since GUI changes often but APIs remain unchanged for a considerable long time. Automating API tests will be efficient and time saving.
API testing commonly includes testing REST APIs or SOAP web services with JSON or XML message payloads being sent over HTTP, HTTPS, JMS, and MQ.
Why API Testing?
API testing can be used because of the following reasons:
- API testing mainly deals business logic of a web application which usually remains unaffected by changes in GUI. Even in projects with rapidly evolving GUI, API testing can still be done independent of GUI ensuring that business logic is defect free.
- API testing also ensures correctness of business logic irrespective of the target devices for web application like desktop or mobile as API testing does not involve GUI.
- API testing can help detect application behavior problems even before GUI integration.
- As API testing doesn’t depend on GUI, APIs can be tested even before GUI is developed.
- API testing can help in regression testing.
When to start API Testing?
In order to have successful functional API testing, there are certain requirements:
- 1. Identify the API set to be tested based on their development status
- Identify the input data required for effective API testing
- Identify the desired output from the APIs
Three levels of API Testing
The Three Levels of API Testing “APIs, by their nature as being over-the-wire [or network protocol], allow for testing at a variety of levels: behavioral, contractual, and solution-oriented.
- Behavioral API testing ensures that it delivers expected behavior and handles unexpected behavior properly. This is the lowest, most internal value. Behavioral testing ensures that the REST API delivers on the expected behavior and handles unexpected behavior properly. Does the code work?
- Contractual API testing ensures that what is specified by the definition is what has actually been shipped via code. This falls at the middle level of needs. Contractual testing ensures that what is specified by the definition is what has actually been shipped via code. Does the API contract continue to function as we have defined it? With the right inputs? Outputs? Data formats?
- Solution-oriented API testing ensures that the API as a whole supports the intended use cases that it was designed to solve. This falls as the highest, mostly external value. Solution-oriented testing ensures that the API as a whole supports the intended use cases that it was designed to solve. Does the API solve real problems that our customers have? Does it do something that people actually care about?
Key benefits of API testing
- Less time consuming than GUI functional testing
- Can be done early in the development cycle without waiting for GUI development to complete
- Can help to stabilize business logic and help in efficient GUI integration
- Lightweight XML or JSON data transfer modes
- Can help in issue localization and isolation during GUI integration
- Automation can be done in any programming language
- Helps in regression testing
Ready! API is a comprehensive API testing tool for SOAP and REST APIs. Ready! API offers SOAP Web Services functional testing, REST API functional testing, WSDL (Web Services Description Language) coverage, message assertion testing and test refactoring.
Key Features of Ready! API
- Create tests directly from Swagger and other popular API description formats
- Analyze your functional test coverage to know what you’re missing
- Run ad-hoc tests without having to maintain temporary API client code
- Use the command-line to integrate your tests into your build system
- Quickly flip between multiple environments: development, testing, staging, etc.
- Test REST, SOAP, and other protocols in a single, unified framework
There are few other tools similar to Ready! API which include Postman and RunScope. Ready! API provides better features such as comprehensive report generation, CLI support for to help CI/CD, support for SOAP as well as REST.