# 30 Days of API Testing - Day 28: Performance is key to a good API, how are you performance testing your APIs?

**URL:** <https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369>\
**Category:** 30 Days of Testing\
**Tags:** 30-days-of-testing, api-testing\
**Created:** [22 November 2018 07:12 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369 "2018-11-22T07:12:56Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![oceannguyen](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/oceannguyen/32/4270_2.png) [@oceannguyen](https://club.ministryoftesting.com/u/oceannguyen)\
**Post date:** [22 November 2018 07:12 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/1 "2018-11-22T07:12:56Z")

</div>

I already did a performance test for an API. In my opinion, performance testing an API is the same with a website.

Base on customer’s requirements we will do:

- **Baseline testing** : to find metrics for system performance under normal load
- **Load Testing** : to find metrics for system performance under high load.
- **Stress Testing** : to find the system breaking point.
- **Soak/Endurance Testing** : to make sure no unwanted behavior emerges over a long period of time.

I think the difference performance testing between an API and a website is the testing data. We need to prepare a very large data set up to 1 million records to perform performance testing our API.

---

<div class="post-metadata">

**Author:** ![ilya.lychkou](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/ilya.lychkou/32/4135_2.png) [@ilya.lychkou](https://club.ministryoftesting.com/u/ilya.lychkou)\
**Post date:** [2 December 2018 01:15 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/2 "2018-12-02T01:15:58Z")

</div>

I agree with **oceannguyen**. Also, I want to add that it’s very important to analyze and understand results of perfomance api tests. The end aim of perfomance testing is not to drop down server but to estimate at what loads and data it will work stably 🙂

---

<div class="post-metadata">

**Author:** ![heather\_reid](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/heather_reid/32/29_2.png) [@heather\_reid](https://club.ministryoftesting.com/u/heather_reid)\
**Post date:** [4 December 2018 16:22 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/3 "2018-12-04T16:22:45Z")

</div>

From Twitter

> <https://twitter.com/offbeattesting/status/1067792986468167681>

> <https://twitter.com/conorfi/status/1067875783023185921>

---

<div class="post-metadata">

**Author:** ![kms\_trangta](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/kms_trangta/32/4273_2.png) [@kms\_trangta](https://club.ministryoftesting.com/u/kms_trangta)\
**Post date:** [14 December 2018 08:20 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/4 "2018-12-14T08:20:01Z")

</div>

I haven’t worked on performance testing api project yet. So I research and summary about performance testing my APIs :  
\*\*When performance APIs testing, there are some questions should answer:

- What number of users can work with the API at the same time?
- How long can users work with the API before the restart is needed?
- What if a high number of users are working with the API for an extended period?
- What happens if a sudden spike of users that the API cannot handle happens?

\*\*5 scenarios can test:

1. Baseline testing
2. Stress testing
3. Soak testing
4. Peak testing
5. Spike testing

---

<div class="post-metadata">

**Author:** ![kms\_thanhhuynh](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/kms_thanhhuynh/32/4286_2.png) [@kms\_thanhhuynh](https://club.ministryoftesting.com/u/kms_thanhhuynh)\
**Post date:** [20 December 2018 10:52 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/5 "2018-12-20T10:52:46Z")

</div>

I have just been taught using Jmeter for load test a website, however, just do a simple step in process with template, still not really work in a project or research more. Therefore, to do a performance test APIs, I am going to refer [https://www.guru99.com/performance-testing.html](https://www.guru99.com/performance-testing.html) for general about Performance Testing:

The focus of Performance Testing is checking a software program’s

- Speed - Determines whether the application responds quickly
- Scalability - Determines maximum user load the software application can handle.
- Stability - Determines if the application is stable under varying loads

Types of Performance Testing

- Load testing - checks the application’s ability to perform under anticipated user loads. The objective is to identify performance bottlenecks before the software application goes live.
- Stress testing - involves testing an application under extreme workloads to see how it handles high traffic or data processing. The objective is to identify breaking point of an application.
- Endurance testing - is done to make sure the software can handle the expected load over a long period of time.
- Spike testing - tests the software’s reaction to sudden large spikes in the load generated by users.
- Volume testing - Under Volume Testing large no. of. Data is populated in database and the overall software system’s behavior is monitored. The objective is to check software application’s performance under varying database volumes.
- Scalability testing - The objective of scalability testing is to determine the software application’s effectiveness in “scaling up” to support an increase in user load. It helps plan capacity addition to your software system.

Performance Testing Process  
 ![image](https://us1.discourse-cdn.com/flex020/uploads/ministryoftesting/original/2X/7/792f19c1833df155ab1f478b08ae820aedbc5ca7.png)

---

<div class="post-metadata">

**Author:** ![tuanatran](https://avatars.discourse-cdn.com/v4/letter/t/a5b964/32.png) [@tuanatran](https://club.ministryoftesting.com/u/tuanatran)\
**Post date:** [23 December 2018 15:21 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/6 "2018-12-23T15:21:17Z")

</div>

I didn’t have a chance to work on Performance testing for API. I searched on internet and found a article for performance:

> **[Web service performance testing - tips and tools for getting started](https://assertible.com/blog/web-service-performance-testing-tips-and-tools-for-getting-started)**
>
> Performance testing is an important aspect of running an API or web application, but where do you start? This post will go over the basics of performance testing, present best practices, and provide tools to get started.

However, when I work on API Automation testing, I have a record to store all execution time for a list of test cases (baseline test cases). Based on the change of execution time I can have the overview of the current performance of the API then send my finding for the team.

---

<div class="post-metadata">

**Author:** ![kms\_namnguyen](https://avatars.discourse-cdn.com/v4/letter/k/3ec8ea/32.png) [@kms\_namnguyen](https://club.ministryoftesting.com/u/kms_namnguyen)\
**Post date:** [26 December 2018 00:42 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/7 "2018-12-26T00:42:09Z")

</div>

The most important focus of Performance Testing is checking a software program’s. I searched on internet and found a article for performance: [https://www.guru99.com/performance-testing.html](https://www.guru99.com/performance-testing.html)

- **Speed** - Determines whether the application responds quickly
- **Scalability** - Determines maximum user load the software application can handle.
- **Stability** - Determines if the application is stable under varying loads

**Types of Performance Testing**

- **Load testing -** checks the application’s ability to perform under anticipated user loads. The objective is to identify performance bottlenecks before the software application goes live.
- **Stress testing -** involves testing an application under extreme workloads to see how it handles high traffic or data processing. The objective is to identify the breaking point of an application.
- **Endurance testing -** is done to make sure the software can handle the expected load over a long period of time.
- **Spike testing -** tests the software’s reaction to sudden large spikes in the load generated by users.
- **Volume testing** - Under Volume Testing large no. of. Data is populated in a database and the overall software system’s behavior is monitored. The objective is to check software application’s performance under varying database volumes.
- **Scalability testing** - The objective of scalability testing is to determine the software application’s effectiveness in “scaling up” to support an increase in user load. It helps plan capacity addition to your software system.

**Common Performance Problems**

- **Long Load time -** Load time is normally the initial time it takes an application to start. This should generally be kept to a minimum. While some applications are impossible to make load in under a minute, Load time should be kept under a few seconds if possible.
- **Poor response time -** Response time is the time it takes from when a user inputs data into the application until the application outputs a response to that input. Generally, this should be very quick. Again if a user has to wait too long, they lose interest.
- **Poor scalability -** A software product suffers from poor scalability when it cannot handle the expected number of users or when it does not accommodate a wide enough range of users. [Load Testing](https://www.guru99.com/load-testing-tutorial.html) should be done to be certain the application can handle the anticipated number of users.
- **Bottlenecking -** Bottlenecks are obstructions in a system which degrade overall system performance. Bottlenecking is when either coding errors or hardware issues cause a decrease of throughput under certain loads. Bottlenecking is often caused by one faulty section of code. The key to fixing a bottlenecking issue is to find the section of code that is causing the slowdown and try to fix it there. Bottlenecking is generally fixed by either fixing poor running processes or adding additional Hardware. Some **common performance bottlenecks** are
  - CPU utilization
  - Memory utilization
  - Network utilization
  - Operating System limitations
  - Disk usage

And you will read more at [Guru99](https://www.guru99.com/performance-testing.html) this article will help you explain more for Performance testing API

---

<div class="post-metadata">

**Author:** ![kms\_thaotnguyen](https://avatars.discourse-cdn.com/v4/letter/k/54ee81/32.png) [@kms\_thaotnguyen](https://club.ministryoftesting.com/u/kms_thaotnguyen)\
**Post date:** [29 December 2018 07:51 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/8 "2018-12-29T07:51:25Z")

</div>

We can use 6 types of performance testing as:

 ![what-is-performance-testing](https://us1.discourse-cdn.com/flex020/uploads/ministryoftesting/original/2X/4/4cad3f2ca2be0fab1368c5ae9edbe3c49cd80d74.jpeg)

I refer this link for more detail: [https://www.softwaretestingclass.com/what-is-performance-testing/](https://www.softwaretestingclass.com/what-is-performance-testing/)

---

<div class="post-metadata">

**Author:** ![restertest](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/restertest/32/9342_2.png) [@restertest](https://club.ministryoftesting.com/u/restertest)\
**Post date:** [3 April 2021 11:58 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/9 "2021-04-03T11:58:22Z")

</div>

I have not done much performance Testing in my time but I really like all the points made before.

I did find the below article with some information on the topic that might bring some plus to the thread

[https://levelup.gitconnected.com/how-to-performance-test-your-api-the-right-way-and-improve-reliability-8d7ff17c0037](https://levelup.gitconnected.com/how-to-performance-test-your-api-the-right-way-and-improve-reliability-8d7ff17c0037)

---

<div class="post-metadata">

**Author:** ![kristof](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/kristof/32/10839_2.png) [@kristof](https://club.ministryoftesting.com/u/kristof)\
**Post date:** [6 April 2021 09:01 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/10 "2021-04-06T09:01:18Z")

</div>

Well most of the types have already been mentioned but I’ll add one more:

- Recovery Testing

Recovery testing is a type of non-functional testing technique performed in order to determine how quickly the system can recover after it has gone through system crash or hardware failure. Recovery testing is the forced failure of the software to verify if the recovery is successful.

Extra info: [What is Recovery Testing? with Example](https://www.guru99.com/recovery-testing.html)

---

<div class="post-metadata">

**Author:** ![m.zn](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/m.zn/32/8715_2.png) [@m.zn](https://club.ministryoftesting.com/u/m.zn)\
**Post date:** [18 April 2022 03:11 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/11 "2022-04-18T03:11:19Z")

</div>

I have not worked on performance testing API project yet.  
I reviewed articles mentioned here. I also found there is MoT’s 30 Days of Performance Testing Challenge and lots of lessons and courses in MoT’s Dojo section about performance testing, for example:

- [Performance Testing 101 - Simon Knight | MoT](https://www.ministryoftesting.com/dojo/courses/performance-testing-101-simon-knight?s_id=12749669)
- [Performance Testing of Web Applications: So Much More than | MoT](https://www.ministryoftesting.com/dojo/lessons/performance-testing-of-web-applications-so-much-more-than-running-a-script-igor-samokysh?s_id=12749669)
- [Establishing Performance Goals | MoT](https://www.ministryoftesting.com/dojo/lessons/establishing-performance-goals)

 ![API performance testing](https://us1.discourse-cdn.com/flex020/uploads/ministryoftesting/original/2X/d/d283caceff55e953f3aa142b0730c6c6d0845996.jpeg)

---

<div class="post-metadata">

**Author:** ![rosie](https://sea2.discourse-cdn.com/flex020/user_avatar/club.ministryoftesting.com/rosie/32/7719_2.png) [@rosie](https://club.ministryoftesting.com/u/rosie)\
**Post date:** [23 October 2026 18:21 UTC](https://club.ministryoftesting.com/t/30-days-of-api-testing-day-28-performance-is-key-to-a-good-api-how-are-you-performance-testing-your-apis/20369/12 "2026-10-23T18:21:59Z")

</div>


