Backend/Test

[Test] JMeter๋กœ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

giraffe_ 2024. 3. 16. 23:16

์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ์ž‘์—…์„ ํ•˜๋ฉด์„œ ์–ผ๋งˆ๋‚˜ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋˜์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.

ํ…Œ์ŠคํŠธ ๊ณผ์ •์—์„œ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ๋ช…์˜ ์œ ์ €๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์ƒํ™ฉ์„ ์—ฐ์ถœํ•˜๊ณ , ์—ฌ๋Ÿฌ API์˜ ์„ฑ๋Šฅ์„ ํ•œ ๋ˆˆ์— ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

 

๋ชฉํ‘œ : 100๋ช…์ด ์œ ์ €๊ฐ€ ๋™์‹œ์— ๋“ค์–ด์˜ค๋Š” ์ƒํ™ฉ์„ ์—ฐ์ถœํ•˜๊ณ , API ์š”์ฒญ์— ๋ช‡ ์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š”์ง€ ๋น„๊ตํ•˜๊ธฐ

 

 

nGrinder, K6, JMeter์˜ ๋„๊ตฌ๋“ค์ด ์žˆ์—ˆ๊ณ , ์—ฌ๋Ÿฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋“ค์— ๋Œ€ํ•ด ์กฐ์‚ฌํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ƒํ™ฉ์— ๋งž๋Š” JMeter๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋“ค์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ณ , JMeter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ฒ ๋‹ค!

 

 

 

 

 

๐Ÿ”Ž ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋“ค ์กฐ์‚ฌ


nGrinder

  • ์ดˆ๊ธฐ ์„ค์ •์ด ๋‹ค์†Œ ๋ณต์žกํ•˜๋‹ค.
  • GUI๋ฅผ ์ œ๊ณตํ•œ๋‹ค. GUI๊ฐ€ ์ž˜๋˜์–ด ์žˆ๋‹ค. 
  • ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์„ธ๋ฐ€ํ•œ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋‹ค์–‘ํ•œ ํ†ต๊ณ„์™€ ๋ ˆํฌํŠธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

K6

  • ์„ค์น˜๊ฐ€ ๋น ๋ฅด๋‹ค.
  • GUI๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒŒ ์ฐจ์ง€ํ•ด ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๋‹ค.
  • ๋ณด๊ณ ์„œ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

 

JMeter

  • ์„ค์น˜๊ฐ€ ๊ฐ„ํŽธํ•˜๋‹ค.(but ์ž๋ฐ” ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์น˜ ํ•„์ˆ˜)
  • GUI๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ง์ ‘ ์ฝ”๋”ฉํ•  ํ•„์š” ์—†๋‹ค. ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๋‹ค. 
  • ์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ๋ฌธ์„œ๊ฐ€ ๋ฐฉ๋Œ€ํ•ด ์ฐธ๊ณ ํ•˜๊ธฐ ์ข‹๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ์™€ CPU๋ฅผ ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์ด ์žก์•„ ๋จน๋Š”๋‹ค.
  • ๋ณด๊ณ ์„œ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋‹ค.

 

 

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„  ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—ฌ์•ผ ํ–ˆ๋‹ค.

JMeter๊ฐ€ ์„ค์น˜๋„ ๊ฐ„ํŽธํ•˜๊ณ , ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๋„ ์—†๊ณ , GUI๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ์ ์ด ๊ฐ€์žฅ ํฐ ์žฅ์ ์ด์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์•˜๋‹ค.

 

 

 

 

์„ค์น˜ํ•˜๊ธฐ


1. ์ž๋ฐ” ์„ค์น˜ํ•˜๊ธฐ

JMeter๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์•ž์„œ์„œ, ์ž๋ฐ”๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ์ž๋ฐ”๊ฐ€ ์žˆ๋‹ค๋ฉด ํŒจ์Šคํ•œ๋‹ค.

 

2. JMeter ์„ค์น˜ํ•˜๊ธฐ

 

  • macOS๋ผ๋ฉด brew๋กœ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
brew install jmeter

 

(์ฒ˜์Œ์— brew๋กœ ์‹œ๋„ํ•ด๋ดค๋Š”๋ฐ, ๊ฝค ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ์ค‘๊ฐ„์— ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ์„ค์น˜์— ์‹คํŒจํ–ˆ๋‹ค..)

 

 

 

  • ์œˆ๋„์šฐ๊ฑฐ๋‚˜, ๋งฅ์ธ๋ฐ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›๋Š”๋‹ค.(zip ํŒŒ์ผ)

(ํ•œ๊ธ€ํŒ์œผ๋กœ ์„ค์น˜๊ฐ€ ๋œ๋‹ค!)

 

 

https://jmeter.apache.org/download_jmeter.cgi

 

 

 

 

 

 

์‹คํ–‰ํ•˜๊ธฐ


 

์••์ถ•ํ•ด์ œ๋ฅผ ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์กฐ๊ฐ€ ๋‚˜์˜จ๋‹ค.

JMeter๋ฅผ GUI ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด bin ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜์—ฌ, ํ„ฐ๋ฏธ๋„์—์„œ `jmeter.sh` ํŒŒ์ผ์„ ์—ด์–ด์ค˜์•ผ ํ•œ๋‹ค.

(์œˆ๋„์šฐ๋Š” `jmeter.bat`์„ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.)

 

 

./jmeter.sh

 

 

 

 

ํ…Œ์ŠคํŠธ ์ƒ์„ฑํ•˜๊ธฐ


์Šค๋ ˆ๋“œ ๊ทธ๋ฃน์€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ ๋‹จ์œ„๋กœ ๋ฌถ์€ ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ทธ๋ฃน์ด๋‹ค.

 

  • ์Šค๋ ˆ๋“œ ๊ทธ๋ฃน ์ถ”๊ฐ€ : ํ…Œ์ŠคํŠธ ๊ณ„ํš > ์ถ”๊ฐ€ > ์“ฐ๋ ˆ๋“œ๋“ค(์‚ฌ์šฉ์ž๋“ค) > ์Šค๋ ˆ๋“œ ๊ทธ๋ฃน

 

 

 

 

 

 

์Šค๋ ˆ๋“œ ์†์„ฑ ์„ค์ •

  • ์“ฐ๋ ˆ๋“œ๋“ค์˜ ์ˆ˜(์‚ฌ์šฉ์ž ์ˆ˜) : ๋™์‹œ์— ๋ช‡ ๋ช…์˜ ์‚ฌ์šฉ์ž ๋“ค์–ด์˜ฌ ๊ฒƒ์ธ์ง€๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  • Ramp-up ์‹œ๊ฐ„ : ์“ฐ๋ ˆ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ(๋žจํ”„์—…)ํ•˜๋Š” ๋ฐ ๋ช‡ ์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋Š”์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, 10๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ์— ๋žจํ”„์—… ๊ธฐ๊ฐ„์ด 100์ดˆ๋ฉด, 10๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ 100์ดˆ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ ์“ฐ๋ ˆ๋“œ๋Š” 10์ดˆ(100/10) ๋งˆ๋‹ค ์‹คํ–‰๋œ๋‹ค.
  • ๋ฃจํ”„ ์นด์šดํŠธ : ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ํšŸ์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค. 

 

 

 

๋‚˜๋Š” ๋™์‹œ์— 100๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์ƒํ™ฉ์„ ์—ฐ์ถœํ•˜๊ณ  ์‹ถ์–ด์„œ, ์“ฐ๋ ˆ๋“œ ์ˆ˜๋ฅผ 100์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค.

 

 

 

 

์ƒ˜ํ”Œ๋Ÿฌ ์ถ”๊ฐ€

์ƒ˜ํ”Œ๋Ÿฌ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋„๋ก ์ง€์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

HTTP ์š”์ฒญ, FTP ์š”์ฒญ, JDBC ์š”์ฒญ, TCP ์š”์ฒญ ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋‚˜๋Š” REST API ๋กœ ํ†ต์‹ ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์–ด์„œ HTTP ์š”์ฒญ์„ ์ƒ˜ํ”Œ๋Ÿฌ๋กœ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

 

 

  • ์“ฐ๋ ˆ๋“œ ๊ทธ๋ฃน > ์ถ”๊ฐ€ > ํ‘œ๋ณธ์ถ”์ถœ๊ธฐ > HTTP ์š”์ฒญ

 

 

 

 

 

  • ํ”„๋กœํ† ์ฝœ : http or https ๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค.
  • ์„œ๋ฒ„ ์ด๋ฆ„ ๋˜๋Š” IP : ํ…Œ์ŠคํŠธํ•  ์„œ๋ฒ„๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค.
  • ํฌํŠธ ๋ฒˆํ˜ธ : ํฌํŠธ ๋ฒˆํ˜ธ ์ž…๋ ฅํ•ด์ค€๋‹ค. (443, 80, 8080...)
  • HTTP ์š”์ฒญ
    • GET / POST / UPDATE / DELETE
    • ๊ฒฝ๋กœ : ํ…Œ์ŠคํŠธํ•  API์˜ ๊ฒฝ๋กœ
    • ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค : '์ถ”๊ฐ€' ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ด๋ฆ„๊ณผ ๊ฐ’์— ํŒŒ๋ผ๋ฏธํ„ฐ์˜ key, value๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

 

๋‚˜๋Š” GET ์š”์ฒญ์œผ๋กœ "http://localhost:8080/ranking/view1?sports=๋†๊ตฌ&gameType=3vs3&sort=rating"๋กœ ๋ณด๋‚ด๊ณ ์ž ํ•œ๋‹ค. 

 

 

 

 

๋ฆฌ์Šค๋„ˆ ์ถ”๊ฐ€

๋ฆฌ์Šค๋„ˆ๋Š” ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์š”์•ฝ ๋ณด๊ณ ์„œ, ๊ทธ๋ž˜ํ”„ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

  • ์“ฐ๋ ˆ๋“œ ๊ทธ๋ฃน > ์ถ”๊ฐ€ > ๋ฆฌ์Šค๋„ˆ > ์š”์•ฝ ๋ณด๊ณ ์„œ

 

๋‚˜๋Š” API๊ฐ€ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋Œ€๋กœ ์‹คํ–‰๋˜๋Š” ๋ฐ ํ‰๊ท  ๋ช‡ ms์ดˆ๊ฐ€ ๊ฑธ๋ ธ๋Š”์ง€ ์•Œ๊ณ ์‹ถ์œผ๋ฏ€๋กœ, ์š”์•ฝ ๋ณด๊ณ ์„œ๋ฅผ ์„ ํƒํ–ˆ๋‹ค.

 

 

 

 

 

 

 

ํ…Œ์ŠคํŠธ ์‹คํ–‰ํ•˜๊ธฐ


  • ์ดˆ๋ก์ƒ‰ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์‹œ์ž‘ํ•œ๋‹ค.

 

 

 

 

์š”์•ฝ ๋ณด๊ณ ์„œ

 

 

ํ‘œ๋ณธ์ˆ˜(์“ฐ๋ ˆ๋“œ ์ˆ˜ * ํ…Œ์ŠคํŠธ ํšŸ์ˆ˜)์™€ ํ•จ๊ป˜ ํ‰๊ท , ์ตœ์†Œ, ์ตœ๋Œ€ ์†Œ์š” ์‹œ๊ฐ„(ms)๊ฐ€ ๋‚˜์˜จ๋‹ค!

 

 

 

 

 

๐Ÿ“š ์ฐธ๊ณ 

Comparing k6 and JMeter for load testing : https://grafana.com/blog/2021/01/27/k6-vs-jmeter-comparison/

JMeter ๊ณต์‹ ๋ฌธ์„œ : https://jmeter.apache.org/usermanual/test_plan.html

Apache JMeter๋ฅผ ์ด์šฉํ•œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฆฌํฌํŠธ ์ƒ์„ฑ : https://creampuffy.tistory.com/209