Collection Runner
์ฌ๋ฌ API ์์ฒญ์ ์ ํด์ง ์กฐ๊ฑด๊ณผ ์๋๋ฆฌ์ค์ ๋ฐ๋ผ ํ ๋ฒ์ ์คํํด ๊ฒ์ฆํ๋ ๋๊ตฌ
Collection Runner ์คํ

Functional
API ํ ์คํธ๋ฅผ ์ด๋ป๊ฒ ๋ฐ๋ผ๋ณด๊ณ ์๋์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ตฌ์กฐ

1. Run manually
Postman UI์์ ์ง์ ์ปฌ๋ ์ ์ ์คํํ๋ ๋ฐฉ์
์ฌ๋์ ํ๋จ๊ณผ ํด์์ด ํ์ํ ๋จ๊ณ์์ ์ฌ์ฉ
์ ๊ท API ๊ฐ๋ฐ ์งํ ๊ธฐ๋ฅ ๊ฒ์ฆ
ํ ์คํธ ์ผ์ด์ค๋ Assertion ์์ ํ ์ฆ์ ํ์ธ
ํน์ ๋ฒ๊ทธ ์ฌํ์ด ํ์ํ ๊ฒฝ์ฐ
์์ฒญ/์๋ต ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ๋ฉฐ ํ ์คํธํด์ผ ํ ๋
์๋ฅผ ๋ค์ด,
์๋ต ๊ฐ์ด ๋ง๊ธด ํ๋ฐ ์ด๊ฒ ์๊ตฌ์ฌํญ์ ๋ง๋์ง ์ ๋งคํ ๋
์๋ฌ ์ฝ๋๊ฐ ๋ด๋ ค์ค๋๋ฐ, ์ด๊ฒ ์ ์ ์๋ฌ์ธ์ง ์๋์ง ํ๋จํด์ผ ํ ๋
๋ฐ์ดํฐ ์ธํ ์ ๋ฐ๊ฟ๊ฐ๋ฉฐ ํ๋ฆ์ ํ์ธํด์ผ ํ ๋
ํ๊ณ์
๋ฐ๋ณต ์คํ์ ๋ถ์ ํฉ
์คํ ์ฃผ์ฒด๊ฐ ์ฌ๋ → ๋๋ฝ ๊ฐ๋ฅ์ฑ
์ผ๊ฐ ํ ์คํธ, ์ฃผ๊ธฐ ํ ์คํธ ๋ถ๊ฐ
โ๏ธ Run configuration
์คํ ์กฐ๊ฑด๊ณผ ์ค์
Iteration : ์์ฒญ์ ๋ช ๋ฒ ๋ฐ๋ณต ์คํํ ์ง ๊ฒฐ์
์๋ฅผ ๋ค๋ฉด,
ํ์ ๊ฐ์ API๋ฅผ 10๊ฐ์ ๋ค๋ฅธ ๊ณ์ ์ผ๋ก ๊ฒ์ฆ
์ฃผ๋ฌธ ์์ฑ API๋ฅผ ์ฌ๋ฌ ์ํ ์กฐํฉ์ผ๋ก ํ ์คํธ
๊ฒฝ๊ณ๊ฐ, ์์ธ๊ฐ์ ๋ฐ์ดํฐ๋ก ๋ถ๋ฆฌํด ๋ฐ๋ณต ๊ฒ์ฆ
Delay : ๊ฐ ์์ฒญ ์ฌ์ด์ ๋๊ธฐ ์๊ฐ ์ค์
์๋ฒ ๊ณผ๋ถํ ๋ฐฉ์ง
๋น๋๊ธฐ ์ฒ๋ฆฌ ์๋ฃ ๋๊ธฐ
Rate Limit API ๋์
์ค์ ์ฌ์ฉ์ ํ๋ฆ๊ณผ ์ ์ฌํ๊ฒ ๋ง๋ค๊ธฐ

2. Schedule runs
Postman Cloud์์ ์ปฌ๋ ์ ์ ์ ํด์ง ์๊ฐ์ด๋ ์ฃผ๊ธฐ์ ์๋์ผ๋ก ์คํํ๋ ๊ธฐ๋ฅ
Schedule runs์ ๋ชฉ์ ์ ๊ฐ๋ฐ ๊ฒ์ฆ์ด ์๋๋ผ ์ด์ ์์ ์ฑ ํ์ธ์ ๊ฐ๊น๋ค
์๋ฅผ ๋ค๋ฉด,
์ด์ ํ๊ฒฝ API ํฌ์ค ์ฒดํฌ (์ํ ์ ์ ์ฒดํฌ)
๋ฐฐํฌ ์ดํ ์ผ๊ฐ ํ๊ท ํ ์คํธ
์ธ๋ถ API ์ฐ๋ ์ํ ๋ชจ๋ํฐ๋ง
์ฅ์ ๋ฅผ ๋นจ๋ฆฌ ๊ฐ์งํ๊ธฐ ์ํ ์ ๊ธฐ ๊ฒ์ฆ
ํ๊ณ์
์ฌ๋ด๋ง, VPN ๋ด๋ถ API ์ ๊ทผ ๋ถ๊ฐ
IP ์ ํ์ด ์๋ ์๋ฒ๋ ์คํ ์คํจ ๊ฐ๋ฅ
๋ณต์กํ ์ธ์ฆ ๊ตฌ์กฐ์๋ ๋ถ์ ํฉ
โ๏ธ Schedule configuration
'์๋ ์คํ์ ์๊ฐ ๊ท์น’ ์ ์
Schedule name : ์์ฝ ์คํ ์ด๋ฆ (๊ตฌ๋ถํ๊ธฐ ์ํ ์๋ณ์)
ํ๊ฒฝ + ๋ชฉ์ + ์ฃผ๊ธฐ
์๋ฅผ ๋ค๋ฉด, payment-api-nightly
Run Frequency : ์ปฌ๋ ์ ์ ์ผ๋ง๋ ์์ฃผ ์คํํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ ํญ๋ชฉ
๋๋ฌด ์ฆ์ ์คํ → ๋ถํ์ํ ํธ๋ํฝ, ๋น์ฉ ์ฆ๊ฐ
๋๋ฌด ๋๋ฌธ ์คํ → ์ฅ์ ๊ฐ์ง ์ง์ฐ

3. Automate runs via CLI
Postman ์ปฌ๋ ์ ์ CLI ํ๊ฒฝ์์ ์คํํ๋ ๋ฐฉ์
์ผ๋ฐ์ ์ผ๋ก Newman(Postman CLI)์ ์ฌ์ฉํ๊ณ Jenkins, GitHub Actions ๊ฐ์ CI ๋๊ตฌ์ ์ฐ๋
PR(Pull Request) Merge ์ ์ API ํ ์คํธ ์๋ ์คํ
๋ฐฐํฌ ์ ์ ํ ์คํธ ์คํจ ์ ๋ฐฐํฌ ์ฐจ๋จ
๋ง์ดํฌ๋ก์๋น์ค ํ๊ฒฝ์์ ์๋น์ค ๊ฐ API ๊ฒ์ฆ
QA ์๋ํ ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํ ์กฐ์ง
Performance
'์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ API๋ฅผ ์ฌ์ฉํ ๋์ ์ํฉ'์ ๊ฐ์ ํด ์คํ ์กฐ๊ฑด์ ์ค์

1. Load profile
๋ถํ๋ฅผ ์ด๋ค ํจํด์ผ๋ก ์ค ๊ฒ์ธ๊ฐ
์ค์ ์๋น์ค์ ๊ฐ๊น์ด ํจํด ์ ํ
Ramp-up (์ ์ง์ ์ฆ๊ฐ) → ์ฌ์ฉ์ ์๊ฐ ์์ํ ๋์ด๋๋ ์ํฉ
Spike (๊ธ๊ฒฉํ ์ฆ๊ฐ) → ๊ฐ์๊ธฐ ํธ๋ํฝ์ด ํญ์ฆํ๋ ์ํฉ
Steady (์ผ์ ์ ์ง) → ์์ ๋ ์๋น์ค ์ํ
2. Virtual users
๋์์ API๋ฅผ ํธ์ถํ๋ ๊ฐ์์ ์ฌ์ฉ์ ์
Virtual users 100 → ์ฌ์ฉ์ 100๋ช ํ ์คํธ๋ค (X) ๊ฐ์ ์์ ์ 100๊ฐ์ ์์ฒญ ํ๋ฆ์ด ๋์์ ์คํ๋๋ค (O)
๋ก๊ทธ์ธ API → ๋์์ ๋ช ๋ช ์ด ๋ก๊ทธ์ธํ ์ ์๋๊ฐ?
์ฃผ๋ฌธ ์์ฑ API → ๊ฐ์ ์๊ฐ์ ๋ช ๊ฑด์ ์ฃผ๋ฌธ์ด ๋ค์ด์ค๋๊ฐ?
๊ฒ์ API → ํผํฌ ํ์์ ๋์ ๊ฒ์ ์์ฒญ์ ์ด๋ ์ ๋์ธ๊ฐ?
3. Test duration
์ค์ ํ ๋ถํ๋ฅผ ์ ์งํ๋ ์๊ฐ
์งง์ ํ ์คํธ → ์๊ฐ์ ์ธ ์ฒ๋ฆฌ ๋ฅ๋ ฅ ํ์ธ
๊ธด ํ ์คํธ → ๋ฉ๋ชจ๋ฆฌ ๋์, ๋์ ์ง์ฐ ํ์ธ
โ๏ธ Data file
๊ฐ Virtual user๊ฐ ์ฌ์ฉํ ์์ฒญ ๋ฐ์ดํฐ ์ธํธ
CSV๋ JSON ํ์ผ์ ํตํด ์์ฒญ ํ๋ผ๋ฏธํฐ, ๋ฐ๋ ๊ฐ์ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์คํํ๋ค
๊ฐ์ ๋ฐ์ดํฐ๋ก๋ง ์ฑ๋ฅ ํ ์คํธ๋ฅผ ํ๋ฉด
์บ์ ํจ๊ณผ๋ก ์ฑ๋ฅ์ด ๊ณผ๋ํ๊ฐ๋จ
์ค์ ์ฌ์ฉ์ ํจํด๊ณผ ๊ดด๋ฆฌ ๋ฐ์
DB ๋ถํ๊ฐ ํ์ค์ ์ด์ง ์์
์๋ฅผ ๋ค์ด,
์ฌ์ฉ์ ID๋ฅผ ๋ค๋ฅด๊ฒ, ์ํ ID๋ฅผ ๋ค๋ฅด๊ฒ, ๊ฒ์์ด๋ฅผ ๋ค์ํ๊ฒ
๋์์ฑ + ๋ฐ์ดํฐ ๋ค์์ฑ์ด ํฉ์ณ์ ธ์ผ ์๋ฏธ ์๋ ์ฑ๋ฅ ํ ์คํธ๊ฐ ๋๋ค.
์ด Load profile๋ก, ์ด๋งํผ์ Virtual users๊ฐ
์ด ์๊ฐ(Test duration) ๋์ ์ด๋ฐ ๋ฐ์ดํฐ(Data file)๋ก ์์ฒญ์ ๋ณด๋ธ๋ค
โ๏ธ ๊ทธ๋ํ ํด์
Requests / second (์ฒ๋ฆฌ๋)
์๋ฒ๊ฐ ์ด๋น ๋ช ๊ฐ์ ์์ฒญ์ ์ค์ ๋ก ์ฒ๋ฆฌํ๊ณ ์๋์ง
Avg response time (ํ๊ท ์๋ต ์๊ฐ)
์ฌ์ฉ์๊ฐ ์ค์ ๋ก ๋๋ผ๋ ์๋ต ์๋
Error rate
์์ฒญ ์คํจ ๋น์จ (4xx / 5xx)
Virtual users
๋ถํ๊ฐ ์๋๋๋ก ๋ค์ด๊ฐ๋์ง ํ์ธํ๋ ๊ธฐ์ค์
Ramp-up
๊ฐ์์ ์ฌ์ฉ์ ์(๋๋ ์์ฒญ๋)๋ฅผ ์๊ฐ์ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ์ํค๋ฉฐ
์์คํ ์ด ๋ถํ๋ฅผ ์ด๋ป๊ฒ ํก์ํ๋์ง ํ์ธํ๋ ์ฑ๋ฅ ํ ์คํธ ๋ฐฉ์
โ๏ธ ๋ชฉ์
์๊ณ์ ์ฐพ๊ธฐ, ์ฑ๋ฅ ์ ํ ํจํด ํ์ , ํ์ค์ ์ธ ํธ๋ํฝ ์ฌํ

๐ ํ ์คํธ ์กฐ๊ฑด
Virtual Users : 50๋ช
Ramp-up : 9์ด
Test duration : 1๋ถ
Total requests sent(์ด ์์ฒญ ์) : 1,819๊ฑด
๐ ๊ฒฐ๊ณผ ์์ฝ
Requests/second : ์ด๋น ์ฝ 27๊ฑด ์ฒ๋ฆฌ
Avg. response time : ํ๊ท 240ms
P90 / P95 : ๋๋ถ๋ถ ์์ฒญ์ด 300ms ์ด๋ด
P99 : ์ผ๋ถ ์์ฒญ๋ง 800ms๋
Error rate : 0% (์คํจ ์์)
→ ๋์ ์ฌ์ฉ์ 50๋ช ํ๊ฒฝ์์๋ ์๋ต ์๊ฐ์ ์์ ์ ์ด๋ฉฐ, ์๋ฌ ์์ด ์์ฒญ์ ์ฒ๋ฆฌํ๋ค
Requests / second (์ฒ๋ฆฌ๋)
Ramp-up ์ดํ ์ฒ๋ฆฌ๋์ด ์์ ๊ตฌ๊ฐ์ ์ง์
์ฒ๋ฆฌ๋์ด ๋ค์ญ๋ ์ญํ์ง ์์
์๋ฒ๊ฐ ์์ฒญ์ ๋ฐ๋ฆฌ์ง ์๊ณ ๊พธ์คํ ์ฒ๋ฆฌํ๊ณ ์์
Avg response time (ํ๊ท ์๋ต ์๊ฐ)
๋ถํ๊ฐ ์ฆ๊ฐํด๋ ์๋ฒ๊ฐ ์ฌ์ ์๊ฒ ๋์
๋ณ๋ชฉ ์ง์ ์ด ์์ง ๋ํ๋์ง ์์
Error rate
๋ชจ๋ ์์ฒญ์ด ์ ์ ์ฒ๋ฆฌ๋จ
์๋ฒ๊ฐ ๋ถํ๋ก ์ธํด ์ค๋ฅ๋ฅผ ๋ด์ง ์์
๊ธฐ๋ฅ + ์ฑ๋ฅ ๋ชจ๋ ์์ ์
Virtual users
Ramp-up ๊ตฌ๊ฐ์์ ์ฌ์ฉ์ ์ ์ฆ๊ฐ
์ดํ ์ผ์ ์์ค ์ ์ง
ํ ์คํธ ์ข ๋ฃ ์ ๊ฐ์
Spike
์งง์ ์๊ฐ ์์ ์ฌ์ฉ์ ์๋ ์์ฒญ๋์ ๊ธ๊ฒฉํ ์ฆ๊ฐ์์ผ
์์คํ ์ด ๊ฐ์์ค๋ฌ์ด ํธ๋ํฝ ํญ์ฃผ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ํ์ธํ๋ ์ฑ๋ฅ ํ ์คํธ ๋ฐฉ์
โ๏ธ ๋ชฉ์
๊ฐ์์ค๋ฌ์ด ํธ๋ํฝ ํญ์ฃผ ๋์ ๋ฅ๋ ฅ ํ์ธ, ์์คํ ์ ํ๋ณต ๋ฅ๋ ฅ ํ์ธ

๐ ํ ์คํธ ์กฐ๊ฑด
Virtual Users : 100๋ช
Test duration : 1๋ถ
Total requests sent(์ด ์์ฒญ ์) : 578๊ฑด
๐ ๊ฒฐ๊ณผ ์์ฝ
Requests/second : ์ด๋น ์ฝ 9.42๊ฑด ์ฒ๋ฆฌ (์ฒ๋ฆฌ๋ ๋ฎ์)
Avg. response time : ํ๊ท 314ms
P90 : 611ms
P95 : 927ms
P99 : 1,668ms (๊ทน๋จ์ ์ง์ฐ ๋ฐ์)
Error rate : 0% (์คํจ ์์)
→ ์๋ฌ๋ ์์ง๋ง ์๋ต ์ง์ฐ์ด ๊ฝค ํฐํธ
Requests / second (์ฒ๋ฆฌ๋)
์๊ฐ์ ์ผ๋ก ์์ฒญ๋ ๊ธ์ฆ, ๊ณง๋ฐ๋ก ๊ธ๋ฝ
์๋ฒ๊ฐ ์์ฒญ์ ๋ฐ๊ธด ํ์ง๋ง ๋์์ ์ฒ๋ฆฌํ์ง ๋ชปํ๊ณ ์ฒ๋ฆฌ ํ๊ฐ ์์์ ๊ฐ๋ฅ์ฑ์ด ๋์
Avg response time (ํ๊ท ์๋ต ์๊ฐ)
Spike ์งํ ์๋ต ์๊ฐ ๊ธ์์น, ์ดํ ์์ํ ๊ฐ์
๊ฐ์์ค๋ฐ ๋ถํ์ ์ฆ๊ฐ์ ์ธ ์ง์ฐ ๋ฐ์
Error rate
๋ชจ๋ ์์ฒญ์ด ์ ์ ์ฒ๋ฆฌ๋จ
์๋ฒ๊ฐ ๋ถํ๋ก ์ธํด ์ค๋ฅ๋ฅผ ๋ด์ง ์์
Virtual users
์งง์ ์๊ฐ์ ๊ธ๊ฒฉํ 100 VU ๊ทผ์
์ ์ง ๊ตฌ๊ฐ ๊ฑฐ์ ์์, ๋น ๋ฅด๊ฒ ๊ฐ์
'๐ QA > Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Postman์ผ๋ก Naver API ์คํํ๊ณ API Test (1) | 2026.01.03 |
|---|
