- What is an API
- API Testing
- Role of A software tester in API testing
- API Testing and Unit Testing.
- Area for covering your test
What is an API?
API stands for Application Programming Interface. Talking in technical terms an API is a set of procedures, functions, and other points of access which an application, an operating system, a library, etc., makes available to programmers in order to allow it to interact with other software. Didn’t get it? Well, neither did I. Let’s break these terms and explore more about APIs.
Taking an analogy here, let say you went to a restaurant. There is no waiter present, so you need to see the menu lying on the table and then make a request to the kitchen where the chef will prepare the dish for you. But it does not always work that way. What if the dish is not available? You will have to go to your seat again and decide something else. There will be many customers present in the restaurant which will slow the process of the chef since now he will be listening to the orders instead of preparing them. Also, how can we forget we live in this multilingual world? What if you do not understand the chef’s language? We need a waiter here. A waiter is what can be seen as an API in the internet world. The waiter will come and take your requests, give it to the chef, and then in response bring back the food. This waiter is bilingual and speaks both of your (chef and you) languages fluently. What if the dish is not available? Well, the waiter knows beforehand you made the wrong request, so he will tell you then and there on the table that the food item is not available. How much time and energy is saved? This is exactly what an API does.
As we visually depict the above analogy using an image, we can see that you are working as a user in the API world. You make the requests while the waiter works as an API who is an intermediary and takes the request to the appropriate server. This server will be processing your request and responding back to you. As said above, your server or application is the chef who is in the kitchen. He will process your request, cook your desired food, and present it back to you as a response. The methods and parameters will be discussed in detail later but here in the analogy, you can think of it as the special requests you make according to your taste and liking. For example, you order something from the menu and describe explicitly that it should be extra spicy. This will help the chef to cook according to your demands.
An API takes your requests from the device and fetch the response from the server. Today, API is everywhere. We have achieved so much through APIs, it’s hard to count. If you are into computer science or the IT industry, there is no escape from APIs. APIs help you fetch a particular response according to the particular request. For example, while you are booking a flight, you will require specific flight results according to the source, destination, and departure date, and maybe some other variables. For this, you might have to visit different airlines to check their different price. But through APIs, this is not so difficult. Through different APIs of different airlines, we can get the response of each and every airline for that specific query at one place like GoIbibo does. Maybe now you must have got the idea of how vastly APIs are used today. We all are connected through APIs. All the services that are offered online are mostly through API. As I said, APIs are everywhere
API Testing
So now that we have established what an API is and why APIs are critical to modern interconnected, globally distributed applications and services, it is important to understand why API testing is critical.
API testing creates a more reliable code. But historically, testing would take place at the GUI level. When a developer would finish their work, they would hand it off to the QA engineer. The engineers had limited time so they would test the code at the highest level – the GUI. This would cover both front-end and back-end development.
This worked for manual testing and for the beginning of automation testing but isn’t right for the age of agile and continuous testing. GUI testing is too brittle, GUI automated scripts break easily and more time-consuming. But more importantly, when the application is underdeveloped, teams can’t wait for the entire system to be updated and the GUI to be ready before testing occurs.
In the age of agile, testing must take place at a lower level, i.e at the API level as early as possible. Developers can even do it themselves. API’s can be tested even when the GUI of the application is not yet ready. On top of that API tests, because of “API contracts”, can even be created before development is complete.
An API or rather all the API present in the software/application should be tested perfectly. This is the job of a software tester and bears a huge responsibility. A perfect working API leads to a perfectly working application. Testing the API solves a lot of issues in the application which may arise at some point of time in the future. There is much software available for API Testing and one such software is Postman.
Roles & Responsibilities of a Software tester for testing API’s
As an API tester, you should have good architectural knowledge of various web services, REST, SOAP, and Micro Services.
Should able to use all the web methods like GET, POST, DELETE, etc
Validate the response, response time, error code
Able to validate the XML and JSON body by using Json parsers
Must know to use OAuth and OAuth2 authentication mechanisms
Load and Security testing on web services
Able to read and understand the API documentation
Able to derive a good number of test cases and scenarios.
Should be good in SQL queries to validate API and DB data elements
Become a master in a tool of your own choice SOAP UI and Postman are not Automation tools. Rest Assured, Rest Sharp, Node modules are the open source libraries for API testing.
API Testing and Unit Testing
API testing and unit testing are considered the same thing by some testers but actually, it is different. Unit testing is done by the Developers or by Test Engineers and is done on a class by class basis or at the single component level. The motive is to verify whether the module delivers the required functionality. The development team monitors unit testing activity and makes necessary changes wherever required. A major emphasis is on the fact whether each unit or module works perfectly fine in isolation. That is, dependency should be least to ensure a robust module design.
On the other hand, API testing is basically black box testing which is simply concerned with the final output of the system under test. API tests are executed only after the build is ready and portray the system as a whole as it is the user interface that an end user will interact with.
API testing primarily aims to test the business logic layer of the system’s architecture. API testing is primarily handled by the QA team, which requires them to run any API on top of a particular build meant to serve a specific purpose.
API testing also tests the unit as part of a system, while unit testing typically tests the unit in relative isolation from the rest of the system. Hence API testing is also ended to end testing. This simply means when we test the complete software in API testing then the modules which make that software are also tested, obviously. But when we do unit testing, we focus only on the functionality of that module and see its working which is completely isolated from the rest of the modules/software.
Area for covering your test
When we test any API through a tool, we face a lot of errors normally. These errors are not only related to the only APIs but can vary from software error to server error. This makes the job of a software tester more important and wide than it seems. Since the software is built and delivered in steps, the same goes for testing it. When software is in development stage, the tests and cases are built accordingly. This helps the developers to see any errors of server or network etc. The same goes for any other stage of software such as the production stage in which you evolve and upgrade those test cases. The area for covering your tests should be as wide as possible. It should cover every little possibility of the failure so that the software is built of premium quality and the feedback team receives minimum tickets.
An API takes your requests from the device and fetch the response from the server. Today, API is everywhere. We have achieved so much through APIs, it’s hard to count. If you are into computer science or the IT industry, there is no escape from APIs. APIs help you fetch a particular response according to the particular request. For example, while you are booking a flight, you will require specific flight results according to the source, destination, and departure date, and maybe some other variables. For this, you might have to visit different airlines to check their different price. But through APIs, this is not so difficult. Through different APIs of different airlines, we can get the response of each and every airline for that specific query at one place like GoIbibo does. Maybe now you must have got the idea of how vastly APIs are used today. We all are connected through APIs. All the services that are offered online are mostly through API. As I said, APIs are everywhere
API Testing
So now that we have established what an API is and why APIs are critical to modern interconnected, globally distributed applications and services, it is important to understand why API testing is critical.
API testing creates a more reliable code. But historically, testing would take place at the GUI level. When a developer would finish their work, they would hand it off to the QA engineer. The engineers had limited time so they would test the code at the highest level – the GUI. This would cover both front-end and back-end development.
This worked for manual testing and for the beginning of automation testing but isn’t right for the age of agile and continuous testing. GUI testing is too brittle, GUI automated scripts break easily and more time-consuming. But more importantly, when the application is underdeveloped, teams can’t wait for the entire system to be updated and the GUI to be ready before testing occurs.
In the age of agile, testing must take place at a lower level, i.e at the API level as early as possible. Developers can even do it themselves. API’s can be tested even when the GUI of the application is not yet ready. On top of that API tests, because of “API contracts”, can even be created before development is complete.
An API or rather all the API present in the software/application should be tested perfectly. This is the job of a software tester and bears a huge responsibility. A perfect working API leads to a perfectly working application. Testing the API solves a lot of issues in the application which may arise at some point of time in the future. There is much software available for API Testing and one such software is Postman.
Roles & Responsibilities of a Software tester for testing API’s
As an API tester, you should have good architectural knowledge of various web services, REST, SOAP, and Micro Services.
Should able to use all the web methods like GET, POST, DELETE, etc
Validate the response, response time, error code
Able to validate the XML and JSON body by using Json parsers
Must know to use OAuth and OAuth2 authentication mechanisms
Load and Security testing on web services
Able to read and understand the API documentation
Able to derive a good number of test cases and scenarios.
Should be good in SQL queries to validate API and DB data elements
Become a master in a tool of your own choice SOAP UI and Postman are not Automation tools. Rest Assured, Rest Sharp, Node modules are the open source libraries for API testing.
API Testing and Unit Testing
API testing and unit testing are considered the same thing by some testers but actually, it is different. Unit testing is done by the Developers or by Test Engineers and is done on a class by class basis or at the single component level. The motive is to verify whether the module delivers the required functionality. The development team monitors unit testing activity and makes necessary changes wherever required. A major emphasis is on the fact whether each unit or module works perfectly fine in isolation. That is, dependency should be least to ensure a robust module design.
On the other hand, API testing is basically black box testing which is simply concerned with the final output of the system under test. API tests are executed only after the build is ready and portray the system as a whole as it is the user interface that an end user will interact with.
API testing primarily aims to test the business logic layer of the system’s architecture. API testing is primarily handled by the QA team, which requires them to run any API on top of a particular build meant to serve a specific purpose.
API testing also tests the unit as part of a system, while unit testing typically tests the unit in relative isolation from the rest of the system. Hence API testing is also ended to end testing. This simply means when we test the complete software in API testing then the modules which make that software are also tested, obviously. But when we do unit testing, we focus only on the functionality of that module and see its working which is completely isolated from the rest of the modules/software.
Area for covering your test
When we test any API through a tool, we face a lot of errors normally. These errors are not only related to the only APIs but can vary from software error to server error. This makes the job of a software tester more important and wide than it seems. Since the software is built and delivered in steps, the same goes for testing it. When software is in development stage, the tests and cases are built accordingly. This helps the developers to see any errors of server or network etc. The same goes for any other stage of software such as the production stage in which you evolve and upgrade those test cases. The area for covering your tests should be as wide as possible. It should cover every little possibility of the failure so that the software is built of premium quality and the feedback team receives minimum tickets.
No comments:
Post a Comment
If you have any doubts or questions, please let us know.