Now that I learned all about testing approaches, I faced a next question
“What do I want/need to test exactly?”
For me it was clear both integration testing and functional testing had to be covered as we were responsible for both. Unfortunately there is no answer that fits every situation and organization.
Imagine you’re virtualizing an application API, making it available to other applications in your organization or to partners outside your organization. It’s a given that you’ll be responsible for integration tests, but probably won’t care much about functional testing as that can be considered the responsibility of the team delivering the application API. Of course, it’s a different story if you expose e.g. a composite API or if you perform message transformation.
Once I had a stable version of my API, I considered doing some performance tests:
- Are the response times respected?
- Can it handle the expected loads?
- What is the limit before it starts failing?
Before starting I aligned with other teams in my organization, as often the operations team and underlying applications will be impacted by these big loads. From past experiences I remembered to preferably perform these tests on an environment configured similarly to your production environment to get more real results.
Last but not least security tests were performed on our API. A must nowadays in every situation that we want to ensure only the allowed users or applications have access to the agreed data and nothing more. I didn’t perform these tests myself, instead they were executed by our security team. Who had the needed knowledge and expertise on the latest trends and methods used by e.g. hackers to exploit data, and let’s just say it wasn’t a waste of time.