In this post we will talk about different type of testing one should conduct to test APIs.
API Testing is altogether different than other software testing types as it focused more on the business logic layer of the software architecture instead of look and feel of an application.
API Testing is destined to check all the in-depth programming aspects of an application to ensure its streamlined functionality and performance.
It is a type of software testing that validates application programming interfaces on the parameter like its reliability, performance, and the functionality.
A failure of any API could lead to services not being available, processes not working as expected and even allow access to objects and data that should not be accessible hence it’s very important to carried out API testing in and out.
What are API testing methods or types? You definitely should know them because you cannot carried out them without understanding the different types of API Testing. Here are the various types of API testing,let me explain each type of API testing in detail :
Validation Testing -
Validation Testing involved validation of API behavior as well as its accuracy, efficiency.
During validation testing we need to ensure that the software meets the business requirements. The testers need to evaluate if the test execution results match what is expected behavior.
This testing process is carried out to verify the product, behavior, efficiency, and other such aspects of the application. Hence, it helps to assures that the application is correctly developed.
Functional Testing -
This testing is an in-depth validation of the specific functions of the API.
In this type of testing, we evaluate the API responses in terms of accuracy of output, and how errors are getting handled. Functional Testing of APIs also considers edge cases for boundary conditions.
The API functions are to be tested with specified parameters to ensure that the functions provide the expected output. These functions represent specific scenarios (successful cases) and error handling.
Due to the nature of the test, we should expect either an error (and thus, the appropriate error codes and handling instructions) or a corrected response.
Functional testing should be carried out for positive as well as negative scenarios.
UI Testing -
UI Testing evaluates the User Interface of the application.
It is an indirect test of the API in the sense that it does not test the API directly but rather tests the UI that is connected with the API. It however gives testers an overview of the performance, efficiency, and usability of the system.
User Interface testing is meant to examine the easy accessibility of the application for the users.
This test focuses on the interface that holds onto API. Moreover, this test will give a verdict on the usability, health, accessibility, and efficiency of the application as a whole.
Error Detection -
This type of testing includes detection or identification of errors during actual execution of API to measure its potential. The detected errors will be rectified and fixed to ensure that there will be no runtime breakdown.
While most tests are related to the implementation of the API and its functionalities, the Runtime Error Detection focused on the actual operation of the API.
To conduct such type of testing Runtime error detection should be enabled in the API configuration as it helps APIs to report back any defects that occur while it's in operation.
Following are the focused areas in this type of testing :
Monitoring: Code is tested for various implementation errors, handler failures to ensure there is no security issue in the code base.
Execution Errors: The code should respond to valid requests in a predictable, known way, and should fail invalid requests.
Resource Leaks: Invalid requests, purposefully overflowing commands submitted to the API to test for memory, resource, data, or operational leaks.
Error Detection: The code is put through known failure scenarios to ensure that errors are identified and handled.
Load Testing -
Load testing is used to check the performance of the API in both normal as well as peak conditions.
Load Testing validates whether the API operates under massive and/or sustained loads, e.g., by progressively increasing user requests from 1k to 10k and 100k and so on. Loads are typically baseline or regular loads.
Load Testing of APIs focuses on how these progressive loads are handled and the failure rate is measured for each load level. It is one of the non-functional things that is most often overlooked and will most often cause trouble.
Load testing is very similar to performance testing because we are trying to emulate production like traffic but instead of creating spikes in traffic, we want to emulate a constant steady stream of traffic at a normally expected rate. This is to ensure that the API's do not contain memory leaks or other similar defects that might cause issues after running for a prolonged period of time.
Load testing should take everything into account including spikes in traffic and multiple heavy processes running at the same time and interfering with one another. Also be aware that the environment that is used for testing needs to be similar to a production environment to get reliable results.
Load testing takes on a few different scenarios in order to ensure peak performance.
Baseline - tests the API against the regular traffic the API expects in normal, day-to-day usage.
Theoretical (maximum) Traffic - This is done to ensure that even during full load, methods are in place to safely throttle requests.
Overload - test is performed with 10–20% additional traffic on the top of Theoretical (maximum) Traffic . While this type of testing anticipates some sort of failure, it is more like a test of the API functionality to validate the error code generation and to ensure any failures are handled during high load.
Security Testing -
Since the API provides access to all external applications to access the internals of the software product, it is usually considered the most exposed or vulnerable part of the system. Hence Security Testing is critical to ensure the safety of the system, as a single vulnerability or bug could jeopardize the entire operations of an enterprise.
This type of testing is very important, and we need to ensure that proper security testing occurs based on a risk analysis. This type of testing needs to occur by a trained professional
Some of the aspects that are checked within the security testing services are encryption validation, API design for access control, user rights management, validating authorization checks and others.
Penetration Testing and Fuzz/Noise Testing are subsets of Security Testing
Penetration Testing - In Penetration testing, API is attacked by someone with limited working knowledge of the API to assess the threat vector from outside. These attacks can be limited to specific functions, resources, or processes, or can target the entirety of the API.
Fuzz/Noise Testing - It is a kind of legitimate DOS (Denial of Service) attempt to flood the system with digital noise, e.g., massive amounts of dummy data. In this testing we need send random data to those API endpoints and we need to carefully inspect the results. Our server should not crash from this unexpected traffic, and it should not display any odd behavior. Based on a risk analysis, fuzz testing might be performed much more structured or not at all.
Reliability Testing - ensures the API can produce consistent results and the connection between platforms remain constant.
WS Compilliance-
WS compliance Testing is a type of testing that only applies to SOAP APIs
WS compliance is tested to ensure standards such as WS-Addressing, WS-Discovery, WS-Federation, WS-Policy, WS-Security, and WS-Trust are properly implemented and utilized
Comentarios