In our What is API article, we went through APIs and the kind of problems they solve! In today’s world, APIs are at the heart of almost every app and cloud-based service, and it’s difficult to imagine many of the services we use daily without APIs. Apart from being the brain behind virtually any cloud service, it’s through the APIs that engineers connect SaaS products to other services and extend their offering without rebuilding everything from scratch. Many companies took advantage of this movement and offer different APIs as a product. Customers started customising online services, extending them and connecting them to internal systems using APIs.
Table of Contents
- Automated Testing
- Benefits of Automated Testing
- API Testing
- API Monitoring
- API Testing vs API Monitoring
- Coding vs 3rd-party services
- We monitor the CPU & RAM of our servers and the health of our DB. Do we still need API monitoring?
- We do Unit Testing. Do we still need API integration testing?
- Do we need two sets of tests for integration testing & monitoring?
- How often should we run the tests for monitoring?
- When should we execute the API integration tests?
- We do UI testing; do we still need to do API testing?
API testing & monitoring is part of the broader automated testing practice. Automated testing is the process of verifying the correctness of computer software (including mobile, desktop, web apps and APIs) features automatically using a set of pre-defined test cases. The test cases are defined (either by coding in a programming language or using a 3rd-party tool like Testfully) by software developers, software testers, QA engineers, product managers or BAs. The computer runs the test cases, which in return validates the correctness of the software.
Benefits of Automated Testing
Automated testing offers a lot of benefits, including:
- Automated testing allows software teams to verify the correctness of software upon any change to ensure that the existing features are intact.
- Using automated testing, software teams can verify new features using tests as well.
- Automated testing gives confidence to software teams to ship software faster without being afraid of releasing code with a bug to customers.
- In the long run, software with automated tests is more maintainable and extendable.
API Testing, also known as API integration testing and Synthetic API testing is a practice to verify the correctness of an API while it’s under development and has not yet released to the customers. The end goal of API testing is to confirm that API functions the way we expect for both existing and new features and prevent code with a bug causing issues for customers of the API.
Software engineers rely on API testing to catch bugs when coding APIs. In contrast, software engineers, QA engineers, BAs and product managers rely on API testing to sign off the release of new features. Often, engineers, testers, QA and product managers work together to define new tests and extend the test coverage.
Testing 3rd-party APIs
API testing is not limited to the APIs your team builds internally. Sometimes, it makes sense to test 3rd-party APIs that your team uses to ensure their behaviour remains consistent throughout the integration period. Breaking changes in 3rd-party APIs lead to bugs in your API, so it’s a good idea to treat the APIs you don’t own the same way as the APIs you own.
It’s not uncommon to see that APIs start malfunction in production unexpectedly due to heavy load, attacks, network glitches or software/hardware infrastructure failures. API monitoring is the automated process of keeping an eye on the running API in production, identifying any malfunctions immediately, and reporting them to the engineering teams. Software teams leverage API monitoring to watch running APIs in the background for any abnormality. Learn more about API monitoring.
API Testing vs API Monitoring
As we discussed earlier, API testing & monitoring have two completely different concerns. API testing prevents bugs from landing in production, while API monitoring identifies malfunctions when API is already in production. Ideally, software teams should have both API testing & API monitoring in place to ship quality APIs to customers.
Coding vs 3rd-party services
When it comes to API testing and monitoring, you can either roll out your solution by writing code and maintaining infrastructure or leverage a service provider like Testfully, but which one should you use? Coding your API testing & monitoring solution offers maximum power & flexibility to the engineers and requires lots of time to get it up and run. In contrast, tools like Testfully don’t require much time investment while offering a great deal of flexibility. Hence, it boils down to this question: Can you get the needed power or flexibility from a service provider? If not, go ahead with coding but always remember: Test Code is not tested and can misbehave due to bugs. Can you afford bugs in your API testing & monitoring code?
We monitor the CPU & RAM of our servers and the health of our DB. Do we still need API monitoring?
Yes, absolutely. Those kinds of monitoring only cover a portion of your deployment stack, while API monitoring covers everything and can quickly identify any issue. It’s a good practice to have API monitoring alongside server & database monitoring.
We do Unit Testing. Do we still need API integration testing?
Unit tests validate the correctness of different units of your code, not your API as a whole. When it comes to the correctness validation of API, API integration testing is superior to unit testing.
Do we need two sets of tests for integration testing & monitoring?
Ideally, the tests for API monitoring should be a subset of the test you would use for integration testing.
How often should we run the tests for monitoring?
The smaller the interval, the faster you will be alerted about the issues. We recommend running the critical tests at 1-min intervals and the remaining tests in 5-mins intervals.
When should we execute the API integration tests?
You should run tests while building APIs, testing them in test environments and post-release to production.
We do UI testing; do we still need to do API testing?
Yes, absolutely. You cannot cover all use cases using UI testing. Moreover, UI testing tends to be very slow, time-consuming and fragile.