SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexiรณn
๏ผ‘
Performance Test using jMeter
๏ผ’
Table of Contents
1. jMeter ์„ค์น˜ ................................................................................................................... ๏ผ•
1.1. jMeter ๊ฐœ์š” ๋ฐ ํ™œ์šฉ ๋ฐฉ์•ˆ.............................................................................................. ๏ผ•
๊ธฐ๋Šฅ ์ ๊ฒ€ ...................................................................................................................... ๏ผ•
์ˆ˜์šฉ๋Ÿ‰ ์ธก์ •.................................................................................................................... ๏ผ•
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ.................................................................................................................... ๏ผ•
1.2. jMeter ์„ค์น˜ .............................................................................................................. ๏ผ•
jMeter ์„ค์น˜ ๋ฐ ์‹คํ–‰.......................................................................................................... ๏ผ–
1.3. jMeter ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ .................................................................................................. ๏ผ–
2. jMeter TestPlan ์ž‘์„ฑ ์ ˆ์ฐจ ................................................................................................. ๏ผ—
2.1. jMeter UI ................................................................................................................. ๏ผ—
2.2. TestPlan ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์šฉ์–ด ........................................................................................... ๏ผ˜
Thread Groups (Users)....................................................................................................... ๏ผ™
Sampler (Unit Test) .......................................................................................................... ๏ผ™
Config Element ............................................................................................................... ๏ผ™
Listener (Report) ............................................................................................................. ๏ผ™
2.3. TestPlan ์ž‘์„ฑ ์ ˆ์ฐจ ..................................................................................................... ๏ผ™
TestPlan ๊ธฐ๋ณธ์ •๋ณด ์ž…๋ ฅ ..................................................................................................... ๏ผ™
Config Element ์ถ”๊ฐ€ .......................................................................................................๏ผ‘๏ผ
HTTP Request Defaults ............................................................................................. ๏ผ‘๏ผ
HTTP Header Manager .............................................................................................. ๏ผ‘๏ผ
HTTP Cookie Manager............................................................................................... ๏ผ‘๏ผ‘
Thread Group ์ถ”๊ฐ€ .........................................................................................................๏ผ‘๏ผ‘
Listener ์ถ”๊ฐ€ ................................................................................................................๏ผ‘๏ผ’
View Results Tree.................................................................................................... ๏ผ‘๏ผ’
Summary Report ..................................................................................................... ๏ผ‘๏ผ“
View Results in Table ............................................................................................... ๏ผ‘๏ผ”
Sampler ์ถ”๊ฐ€ ................................................................................................................๏ผ‘๏ผ”
3. OpenAPI ํ…Œ์ŠคํŠธ ๊ณ„ํš......................................................................................................๏ผ‘๏ผ–
ํ…Œ์ŠคํŠธ ๋ชฉ์  ....................................................................................................................๏ผ‘๏ผ–
ํ…Œ์ŠคํŠธ ๊ฐœ์š” ....................................................................................................................๏ผ‘๏ผ–
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณ„ํš (Functional Test Plan)..................................................................................๏ผ‘๏ผ–
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ ...........................................................................................................๏ผ‘๏ผ–
User Defined Variables ....................................................................................................๏ผ‘๏ผ–
Thread Group ...............................................................................................................๏ผ‘๏ผ˜
Config Element .............................................................................................................๏ผ‘๏ผ˜
HTTP Request Sampler ....................................................................................................๏ผ’๏ผ
์‚ฌ์šฉ์ž ๋“ฑ๋ก ........................................................................................................... ๏ผ’๏ผ
์‚ฌ์šฉ์ž ์ธ์ฆ ........................................................................................................... ๏ผ’๏ผ‘
JSON Assertion..............................................................................................................๏ผ’๏ผ’
JSON Path Assertion................................................................................................. ๏ผ’๏ผ’
JSON Path Extractor................................................................................................. ๏ผ’๏ผ“
BeanShell Assertion.................................................................................................. ๏ผ’๏ผ“
Listener (View Results Tree) .............................................................................................๏ผ’๏ผ”
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ณ„ํš (Load Test Plan) .........................................................................................๏ผ’๏ผ•
ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ............................................................................................................๏ผ’๏ผ•
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ ...........................................................................................................๏ผ’๏ผ•
CSV Data ์ƒ์„ฑ...............................................................................................................๏ผ’๏ผ–
CSV Data Set Config........................................................................................................๏ผ’๏ผ–
Thread Group ...............................................................................................................๏ผ’๏ผ—
Timer (Constant & Uniform Random)...................................................................................๏ผ’๏ผ˜
Listener (Report) ...........................................................................................................๏ผ’๏ผ™
๏ผ“
Aggregate Graph (or Aggregate Report) ......................................................................... ๏ผ’๏ผ™
Response Time over Time .......................................................................................... ๏ผ“๏ผ
Transactions per Seconds .......................................................................................... ๏ผ“๏ผ‘
4. ๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰.................................................................................................๏ผ“๏ผ’
์ค€๋น„ ์‚ฌํ•ญ .......................................................................................................................๏ผ“๏ผ’
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ........................................................................................................๏ผ“๏ผ’
jMeter ์‹คํ–‰..................................................................................................................๏ผ“๏ผ’
Test Plan ์‹คํ–‰ (๊ธฐ๋Šฅ) ......................................................................................................๏ผ“๏ผ“
์‹คํ–‰ ๊ฒฐ๊ณผ ๊ฒ€ํ†  ..............................................................................................................๏ผ“๏ผ“
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ........................................................................................................๏ผ“๏ผ“
CSV generator ์‹คํ–‰ ........................................................................................................๏ผ“๏ผ”
Test Plan ์‹คํ–‰ ..............................................................................................................๏ผ“๏ผ”
jMeter GUI ๋ชจ๋“œ ์‹คํ–‰ ......................................................................................................๏ผ“๏ผ–
์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ์ž‘์„ฑ ...........................................................................................................๏ผ“๏ผ–
๏ผ”
Document Overview
๏ฎ Purpose
๋ณธ๋ฌธ์„œ๋Š” ์„œ๋ฒ„ Open API ์„ฑ๋Šฅ ํ‰๊ฐ€ ์ ˆ์ฐจ๋ฅผ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค.
๏ฎ Scope
Fron-End Server ์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด jMeter ๋ฅผ ์ด์šฉํ•ด stress test ๋ฅผ ์‹ค์‹œํ•œ๋‹ค.
๏ผ•
1. jMeter ์„ค์น˜
jMeter ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ถ”๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ(plugin)์„ ์„ค์น˜ํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์š”์•ฝํ•˜์˜€๋‹ค.
1.1. jMeter ๊ฐœ์š” ๋ฐ ํ™œ์šฉ ๋ฐฉ์•ˆ
jMeter ๋Š” ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(load test) ๋ฐ ์„ฑ๋Šฅ ํ‰๊ฐ€ (measure performance)๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค
๋ฐ์Šคํฌํ†ฑ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค. jMeter ๋ฅผ ์ด์šฉํ•ด ์ •์ /๋™์  ์›น ์ปจํ…์ธ , FTP, mail, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, NoSQL ๋“ฑ์˜ ์„ฑ๋Šฅ
๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. Open API ์„œ๋ฒ„์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์ ๊ฒ€ (๋‹จ์œ„ ํ…Œ์ŠคํŠธ), ์ˆ˜์šฉ๋Ÿ‰ ์ธก์ • ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์— ์ ์šฉํ•œ๋‹ค.
๊ธฐ๋Šฅ ์ ๊ฒ€
Open API ์˜ ์‚ฌ์šฉ์ž ์ •๋ณด, ๊ฒŒ์ž„ ์ •๋ณด, ์ฑ„๋„ ์ •๋ณด ๋ฐ ์ปจํ…์ธ  ์ •๋ณด ์„œ๋น„์Šค์— ํฌํ•จ๋œ ๊ฐ๊ฐ์˜ API ์— ๋Œ€ํ•œ ์ •์ƒ ๋™์ž‘
์œ ๋ฌด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์˜ ๋ชฉ์ ์€ โ€˜์ง€์†์ ์ธ ํ’ˆ์งˆ ํ™•๋ณดโ€™์ด๋‹ค.
๏ฌ Open API ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ๊ฐœ์„ , ๋ฒ„๊ทธ ์ˆ˜์ •์— ๋”ฐ๋ฅธ ๋ณ€๊ฒฝ ์‹œ, ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ์‹ค์‹œ
๏ฌ Development, Stage, Product ํ™˜๊ฒฝ์œผ๋กœ ์ดํ–‰(transfer) ์‹œ ์ •์ƒ ๋ฐฐํฌ ์—ฌ๋ถ€ ํŒ์ •
์ˆ˜์šฉ๋Ÿ‰ ์ธก์ •
์‚ฌ์šฉ์ž์˜ ์„œ๋น„์Šค ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์˜ˆ์ธกํ•˜์—ฌ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ธฐ๋ฐ˜์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(ํ˜น์€ ๊ณ„ํš)์„ ์ž‘์„ฑํ•˜๊ณ , ์ด๋ฅผ ์ด์šฉํ•ด
์„œ๋น„์Šค ํ™˜๊ฒฝ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜(simulation) ํ•œ๋‹ค. ๋‹ค์ˆ˜์˜ ๊ฐ€์ƒ ์‚ฌ์šฉ์ž(virtual user)๊ฐ€ ์ ‘์†ํ•˜์—ฌ, ์†Œ๊ทœ๋ชจ ์„œ๋ฒ„์—์„œ ์ˆ˜์šฉ
๊ฐ€๋Šฅํ•œ ๋™์‹œ ์‚ฌ์šฉ์ž ์ˆ˜(ํ˜น์€ ์ ์ • ์‚ฌ์šฉ์ž ์ˆ˜)๋ฅผ ์‚ฐ์ถœํ•œ๋‹ค. ์ˆ˜์šฉ๋Ÿ‰ ์ธก์ •์˜ ๋ชฉ์ ์€ โ€˜์‹œ์Šคํ…œ ํ™•์žฅ ๋ฐ ์šด์˜ ๊ณ„ํšโ€™ ์ˆ˜๋ฆฝ์„
์œ„ํ•œ ๊ธฐ์ดˆ ์ž๋ฃŒ ํ™•๋ณด์ด๋‹ค.
๏ฌ ์‚ฌ์šฉ์ž์˜ ์„œ๋น„์Šค ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค ์˜ˆ์ธก
๏ฌ ์˜ˆ์ƒ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ธฐ๋ฐ˜์˜ ํ…Œ์ŠคํŠธ ๊ณ„ํš ์ž‘์„ฑ
๏ฌ ๊ฐœ๋ฐœ ๋ฐ stage ์„œ๋ฒ„ ๋Œ€์ƒ์˜ ๋™์‹œ ์ ‘์† ๋ฐ ์„œ๋น„์Šค ์šด์˜ ํ…Œ์ŠคํŠธ ์‹ค์‹œ
๏ฌ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์ด์šฉํ•ด ์ˆ˜์šฉ ๊ฐ€๋Šฅ๋Ÿ‰, ์ž์› ์†Œ๋ชจ๋Ÿ‰ (CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ)์„ ์ธก์ •ํ•œ๋‹ค.
๏ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ–ฅํ›„ ์„œ๋ฒ„ ํ™•์žฅ ๋ฐ ์Šค์ผ€์ผ ์ž๋™ํ™” (auto-scale) ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค.
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ๋ชฉ์ ์€ ํ•˜๋“œ์›จ์–ด, ์†Œํ”„ํŠธ์›จ์–ด, ๋„คํŠธ์›Œํฌ ๋“ฑ ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜ ์ „๋ฐ˜์— ๊ฑธ์นœ ์•ˆ์ •์„ฑ ์ ๊ฒ€, ์ทจ์•ฝ์  ๋ถ„์„ ๋ฐ
์Šค์ผ€์ผ ์ž๋™ํ™”์˜ ๋ชจ์˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์ด๋‹ค. jMeter ๋ฅผ ๋‹ค์ˆ˜์˜ ์—์ด์ „ํŠธ ์„œ๋ฒ„์— ์„ค์น˜ํ•œ ํ›„, ๋™์‹œ์— ์ˆ˜๋ฐฑ/์ˆ˜์ฒœ์— ์ด๋ฅด๋Š”
์‚ฌ์šฉ์ž ์ ‘์†์„ ์‹œ๋„ํ•˜์—ฌ, ์‹œ์Šคํ…œ ์‘๋‹ต ์„ฑ๋Šฅ๊ณผ ์„œ๋ฒ„ ์ž์›์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ์ˆ˜ํ–‰ ๋ฐฉ์‹์€
์ˆ˜์šฉ๋Ÿ‰ ์ธก์ •๊ณผ ๋™์ผํ•˜๋‚˜, ์˜๋„์ ์œผ๋กœ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ๋ฅผ ์œ ๋„ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ฅธ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.
๋˜ํ•œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ์—๋Š” ์‘๋‹ต ์†๋„ ๋“ฑ ์„ฑ๋Šฅ ์ธก์ • ๋ณด๋‹ค๋Š” ์ทจ์•ฝ์ (๊ฐœ์„ ์ )์„ ์ฐพ๋Š”๋ฐ ์ฃผ๋ ฅํ•œ๋‹ค.
1.2. jMeter ์„ค์น˜
jMeter ๋Š” ์˜คํ”ˆ ์†Œ์Šค์ด๋ฉฐ, ์•„ํŒŒ์น˜ ํ™ˆํŽ˜์ด์ง€์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. Open API ๊ฐ€ RESTful ๋ฐฉ์‹์ด๊ณ  ์‘๋‹ต
๋ฐ์ดํ„ฐ ํ˜•์‹์ด JSON ์ด๋ฏ€๋กœ, JSON ๋ฐ์ดํ„ฐ ํ•ด์„(parsing)์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.
๏ผ–
jMeter ์„ค์น˜ ๋ฐ ์‹คํ–‰
jMeter ๋Š” GUI ๋ฐ CLI ๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋ฉฐ, jMeter ํ…Œ์ŠคํŠธ ๊ณ„ํš(test plan)์„ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜, ์ˆ˜๋™์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ
์œ„ํ•ด์„œ ๊ฐœ๋ฐœ PC ์— jMeter ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์‹œํ•  ๊ฒฝ์šฐ์—๋Š” ์„œ๋ฒ„
์ƒ์—์„œ jMeter ๋ฅผ ์„ค์น˜ํ•œ๋‹ค.
jMeter ๋ฅผ ๊ฐœ๋ฐœ PC ์— ์„ค์น˜ํ•˜๊ธฐ ์ด์ „์— JDK 1.6 ์ด์ƒ์˜ ๋ฒ„์ „์„ PC ์— ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.
๏ฌ http://jmeter.apache.org/download_jmeter.cgi ์—์„œ jMeter ์••์ถ• ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค.
๏ฌ ์ ์ ˆํ•œ ํด๋” ์œ„์น˜์— ์••์ถ• ํŒŒ์ผ์„ ํ•ด์ œํ•œ๋‹ค.
๏ฌ ${JMETER_HOME}/bin/jMeter.bat ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด jMeter GUI ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
Report /
Graph
DBMS
Amazon Cloud
Web / WAS
Remote Client
jMeter #1
jMeter #2
jMeter #n
Run Stress Tess
HTTP Requests
HTTP Responses
1.3. jMeter ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜
Open API ์˜ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑ(parsing)ํ•˜๊ณ , ์„œ๋น„์Šค์˜ ์ •์ƒ ์ˆ˜ํ–‰ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด JSON Path Assertion
ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. jMeter ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” jMeter version 2.8 ์ด์ƒ์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.
๏ฌ http://jmeter-plugins.org/#/ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ๋‹ค.
๏ฌ โ€˜Extras with Libs Setโ€™ ์„ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค.
๏ฌ ์••์ถ• ํŒŒ์ผ์„ ํ•ด์ œํ•˜๋ฉด, lib ํด๋” ์•ˆ์— jar ํŒŒ์ผ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ jar ํŒŒ์ผ๋“ค์„ jMeter ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ
์•„๋ž˜์— ์œ„์น˜ํ•œ lib ํด๋”์— ๋„ฃ๋Š”๋‹ค.
๏ผ—
2. jMeter TestPlan ์ž‘์„ฑ ์ ˆ์ฐจ
jMeter ๋‚ด์—์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(test case)๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ์™€ jMeter ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ
์ ˆ์ฐจ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ jMeter ์šฉ์–ด๋ฅผ ์ •๋ฆฌํ•˜์˜€๋‹ค.
2.1. jMeter UI
jMeter ๊ธฐ๋ณธ UI ๋‚ด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•  ํ•ญ๋ชฉ๋“ค์„ ์š”์•ฝํ•˜์˜€๋‹ค.
โ‘  Start TestPlan
TestPlan ์„ ์‹คํ–‰ํ•œ๋‹ค. TestPlan ๋‚ด์— ํฌํ•จ๋œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ, ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ํ…Œ์ŠคํŠธ
์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑ ์™„๋ฃŒํ•œ ํ›„ ์‹œํ—˜ํ•˜๊ฑฐ๋‚˜, ์ด์ „์— ์ž‘์„ฑ๋œ TestPlan ์„ ๋กœ๋“œ(load)ํ•œ ํ›„ ์žฌ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
โ‘ก Clear output
TestPlan ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง€์šด๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ TestPlan ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ, ์ด์ „ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ
์ง€์šฐ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
โ‘ข Error / Warning count
์ง์ „ TestPlan ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด logViewer
โ‘  Start TestPlan โ‘ก Clear output โ‘ข Error/Warning count
๏ผ˜
ํŒจ๋„์ด ํ‘œ์‹œ๋œ๋‹ค.
jMeter UI ์ขŒ์ธก ํŒจ๋„์—๋Š” โ€˜TestPlanโ€™๊ณผ โ€˜WorkBenchโ€™๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.
โ‘  TestPlan
jMeter ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(ํ˜น์€ ์‹œ๋‚˜๋ฆฌ์˜ค)์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์„ค์ •์„ ํฌํ•จํ•˜๋Š” ์˜์—ญ์ด๋‹ค.
โ‘ก WorkBench
์›Œํฌ๋ฒค์น˜๋Š” ๊ณ„์† ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ž„์‹œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ—˜ํ•˜๊ธฐ ์œ„ํ•œ ์˜์—ญ์ด๋‹ค.
TestPlan ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์ž…๋ ฅํ•œ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
2.2. TestPlan ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์šฉ์–ด
ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ „๋ฐ˜์ ์ธ ์„ค์ • ๋ฐ ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” TestPlan ์— ์„ค์ • ํ˜น์€ ์ถ”๊ฐ€ํ•œ๋‹ค.
ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ํ•„์ˆ˜(๊ธฐ๋ณธ) ๊ตฌ์„ฑ ์š”์†Œ๋“ค์€ โ€˜Thead Groups (Users)โ€™, โ€˜Config Elementsโ€™,
โ€˜Samplerโ€™ ๋ฐ โ€˜Listenerโ€™ ์ด๋‹ค. ๋‚˜๋จธ์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ์ข€ ๋” ์ •๊ตํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•œ๋‹ค.
๏ผ™
Thread Groups (Users)
Thead Groups ๋ฅผ ๋‹ฌ๋ฆฌ ํ‘œํ˜„ํ•˜์ž๋ฉด, ๊ฐ€์ƒ ์‚ฌ์šฉ์ž(virtual user)์ด๋‹ค. ์‹ค์ œ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค(ํ˜น์€ ์„œ๋ฒ„)๋ฅผ ํ˜ธ์ถœํ•˜๋Š”
ํ–‰์œ„๋ฅผ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ชจ์˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํšŸ์ˆ˜, ์ฃผ๊ธฐ, ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜ ๋“ฑ์„ ์„ค์ •ํ• 
์ˆ˜ ์žˆ๋‹ค. TestPlan ์ž‘์„ฑ ์‹œ ๋จผ์ € ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์Šค๋ ˆ๋“œ ์•„๋ž˜์— sampler ๋“ค์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค.
Sampler (Unit Test)
์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ–‰์œ„๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด์ ์œผ๋กœ ๋ชจ๋ฐฉํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ํ˜น์€
์•ก์…˜(action)์ด๋ผ๊ณ  ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. HTTP ์š”์ฒญ, TCP ํ†ต์‹ , JDBC ์ฟผ๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜
์žˆ๋Š” sampler ๋“ค์ด ์ œ๊ณต๋œ๋‹ค.
Config Element
ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ข… ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ๊ธฐ๋ณธ ๊ฐ’ ๋“ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ๋“ค์€ ์„œ๋ฒ„ ์ฃผ์†Œ ๋ฐ ํฌํŠธ,
์ฟ ํ‚ค ๊ฐ’, HTTP ํ—ค๋” ๊ธฐ๋ณธ ๊ฐ’ ๋“ฑ์ด ์žˆ๋‹ค.
Listener (Report)
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค. ๊ทธ๋ž˜ํ”„, ํ…Œ์ด๋ธ”, ์š”์•ฝ ๋“ฑ ๋‹ค์–‘ํ•œ
๋ฆฌ์Šค๋„ˆ(listener)๊ฐ€ ์ œ๊ณต๋œ๋‹ค.
2.3. TestPlan ์ž‘์„ฑ ์ ˆ์ฐจ
TestPlan ์„ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์š”์•ฝํ•˜์˜€๋‹ค. ํ•„์ˆ˜ ์š”์†Œ๋“ค๋งŒ์œผ๋กœ ๊ตฌ์„ฑํ•œ ์ ˆ์ฐจ์ด๋ฏ€๋กœ, ์ถ”๊ฐ€์ ์ธ ์š”์†Œ๋“ค์„ ๋ฐ˜์˜ํ•ด์•ผ ์ •๋ฐ€ํ•œ
ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
TestPlan ๊ธฐ๋ณธ์ •๋ณด ์ž…๋ ฅ
์ขŒ์ธก ํŒจ๋„์—์„œ TestPlan ์„ ์„ ํƒํ•œ ํ›„, ๋ช…์นญ ๋ฐ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ์ž…๋ ฅํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋“ค์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
๏ผ‘๏ผ
Config Element ์ถ”๊ฐ€
ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ โ€˜๊ณตํ†ต ์„ค์ •(Common configurations)โ€™์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ์—์„œ๋Š” โ€˜HTTP Request Defaultsโ€™,
โ€˜HTTP Header Managerโ€™, โ€˜HTTP Cookie Managerโ€™ ๋“ฑ 3 ๊ฐ€์ง€๋ฅผ ์„ค์ •ํ•œ๋‹ค.
HTTP Request Defaults
์„œ๋ฒ„ ์ฃผ์†Œ ๋ฐ ํฌํŠธ ๋ฒˆํ˜ธ, ์š”์ฒญ ๋ฐ ์‘๋‹ต ์‹œ๊ฐ„ ์ œํ•œ ๊ฐ’ ๋“ฑ์˜ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐ’(default value)๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
HTTP Request Defaults ์—์„œ ์„ค์ •ํ•œ ๊ฐ’์„ ๊ฐœ๋ณ„ sampler ์—์„œ ๋ฎ์–ด ์“ธ(override) ์ˆ˜ ์žˆ๋‹ค.
HTTP Header Manager
HTTP ํ†ต์‹  ํ—ค๋”์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์„ค์ •ํ•œ๋‹ค. Open API ๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด โ€˜Content-Typeโ€™์„ โ€˜application/x-
www-form-urlencodedโ€™ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
๏ผ‘๏ผ‘
HTTP Cookie Manager
์„ธ์…˜(session)์„ ํ•„์š”๋กœ ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์œ„ํ•ด ์ฟ ํ‚ค(cookie)๋ฅผ ์„ค์ •ํ•œ๋‹ค.
Thread Group ์ถ”๊ฐ€
ํ…Œ์ŠคํŠธ ๋ฐ˜๋ณต ํšŸ์ˆ˜, ๋™์‹œ ์ ‘์† ์ˆ˜ ๋“ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด Thread Groups ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
๏ผ‘๏ผ’
Listener ์ถ”๊ฐ€
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Listener ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
View Results Tree
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํŠธ๋ฆฌ(tree) ํ˜•ํƒœ๋กœ ์ƒ์„ธํ•˜๊ฒŒ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ…Œ์ŠคํŠธ ์œ ํ˜•์— ์ƒ๊ด€์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š”
๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ๋‹จ์ ์€ ๋Œ€๊ทœ๋ชจ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ, ๋กœ๊ทธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„ ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์„ ์ฐพ์•„๋ณด๊ธฐ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ๋‹ค.
๏ผ‘๏ผ“
Summary Report
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ์š”์•ฝ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ฐ ์„ฑ๋Šฅ ์ธก์ • ์‹œ์— ์œ ์šฉํ•˜๋‹ค.
๏ผ‘๏ผ”
View Results in Table
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ๋ฐœ์ƒํ•œ ๊ฐœ๋ณ„ ์š”์ฒญ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์—‘์…€ ๋“ฑ์œผ๋กœ ๋‚ด๋ณด๋‚ธ ํ›„ ํ†ต๊ณ„
๋“ฑ ํ›„๋ฐ˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ ํ•ฉํ•˜๋‹ค.
Sampler ์ถ”๊ฐ€
๋งˆ์ง€๋ง‰์œผ๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ฐœ๋ณ„ sampler ํ˜น์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ˜ธ์ถœํ•˜๋Š” API ๊ฒฝ๋กœ(path), ์š”์ฒญ
์ธ์ž(request parameters), ๋ฉ”์†Œ๋“œ(POST, GET, PUT ๋“ฑ) ๋“ฑ์„ ์ž…๋ ฅํ•œ๋‹ค. POST ๋ฐ GET ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” ์š”์ฒญ
์ธ์ž๋ฅผ โ€˜Paramtersโ€™ ํƒญ์— ์ž…๋ ฅํ•˜๊ณ , PUT ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” Body Data ์— ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.
POST ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
๏ผ‘๏ผ•
PUT ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ๋‹ค.
๏ผ‘๏ผ–
3. OpenAPI ํ…Œ์ŠคํŠธ ๊ณ„ํš
ํ…Œ์ŠคํŠธ ๋ชฉ์ 
Open API ํ…Œ์ŠคํŠธ์˜ ๋ชฉ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
๏ฌ ๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘ Open API ๊ธฐ๋Šฅ์˜ ์ ๊ฒ€ ๋ฐ ์˜ค๋™์ž‘ ์œ ๋ฌด ํŒŒ์•…
๏ฌ ์œ ์ง€๋ณด์ˆ˜ ๋‹จ๊ณ„์—์„œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€/๋ณ€๊ฒฝ ๋ฐœ์ƒ ์‹œ ์ „์ฒด API ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์ ๊ฒ€ ์ž๋™ํ™”
๏ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(load test)๋ฅผ ํ†ตํ•œ ์˜จ๋ผ์ธ ์„œ๋น„์Šค ์„ฑ๋Šฅ ์ธก์ • ๋ฐ ์ž์›(resource) ๊ณ„ํš ์ˆ˜๋ฆฝ
ํ…Œ์ŠคํŠธ ๊ฐœ์š”
๏ฌ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๋„๊ตฌ๋Š” ์˜คํ”ˆ ์†Œ์Šค ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ์ธ jMeter ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
๏ฌ โ€˜๊ธฐ๋Šฅโ€™ ๋ฐ โ€˜๋ถ€ํ•˜โ€™ ํ…Œ์ŠคํŠธ ๊ณ„ํš์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ณ„๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•œ๋‹ค.
๏ฌ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” โ€˜Open API specificationโ€™์„ ์ฐธ์กฐํ•˜์—ฌ ๋ชจ๋“  ์˜จ๋ผ์ธ ์„œ๋น„์Šค API ๊ธฐ๋Šฅ์„ ์ ๊ฒ€ํ•œ๋‹ค.
๏ฌ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณ„ํš์—๋Š” ๊ฐœ๋ณ„ ์š”์ฒญ์— ๋Œ€ํ•œ ์š”์ฒญ/์‘๋‹ต ๋ฐ์ดํ„ฐ ๋ฐ ์ •์ƒ ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•˜๋Š” Assertion ์„ ํฌํ•จํ•œ๋‹ค.
๏ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์šฉ์ž์˜ ์ปจํ…์ธ  ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์˜ˆ์ธกํ•˜์—ฌ, ์‹œ๋‚˜๋ฆฌ์˜ค ๊ธฐ๋ฐ˜์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
๏ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด TPS (Transaction per Second), ์‘๋‹ต ์‹œ๊ฐ„ ํ†ต๊ณ„ ๋“ฑ์„ ์ƒ์„ฑํ•œ๋‹ค.
๏ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ํ•˜๋‚˜์˜ ๋งˆ์Šคํ„ฐ(master)์™€ ๋ณต์ˆ˜์˜ (slave)๋กœ ๊ตฌ์„ฑ๋œ ๋ถ„์‚ฐ ํ…Œ์ŠคํŠธ(Distributed Test)๋ฅผ ์‹ค์‹œํ•œ๋‹ค.
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณ„ํš (Functional Test Plan)
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณ„ํš์€ Open API (ํ˜น์€ ์˜จ๋ผ์ธ ์„œ๋น„์Šค)์˜ ์ •์ƒ ๋™์ž‘ ์œ ๋ฌด๋ฅผ ์ž๋™ํ™”๋œ ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•œ๋‹ค.
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณ„ํš์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” User Defined Variables, Thread Group, Config Element, Sampler, Assertion,
Listener ๋“ฑ์ด๋‹ค. Thread Group ํ˜น์€ ๊ฐ€์ƒ ์‚ฌ์šฉ์ž(virtual user)๋Š” 1 ํšŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. Config
Element ๋Š” ์„œ๋ฒ„ ์ฃผ์†Œ, HTTP ํ—ค๋” ๋ฐ ์ฟ ํ‚ค ์„ค์ •์„ ํฌํ•จํ•œ๋‹ค. Sampler ๋Š” Open API ๊ฐœ์ˆ˜๋งŒํผ ์ƒ์„ฑํ•˜๋ฉฐ, ๊ฐ๊ฐ์˜ API
์ •์ƒ ๋™์ž‘ ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด Assertion ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. Listener ๋Š” ๋ชจ๋“  ์š”์ฒญ/์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ ๊ฒ€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ,
โ€˜View Results in Tableโ€™์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
User Defined Variables
Test Plan ์˜ ์†์„ฑ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋Š” Sampler, Thread Group, Listener,
Timer ๋“ฑ Test Plan ํ•˜์œ„์— ๋“ฑ๋ก๋œ ๊ฐ์ข… ์š”์†Œ(element)์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜์˜ ์žฅ์ ์€ ๋ฐ˜๋ณต์ ์œผ๋กœ
๊ฐ™์€ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ์ˆ˜๊ณ ๋ฅผ ์ค„์—ฌ์ฃผ๊ณ , ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์ด ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜, ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ์‹œ์Šคํ…œ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์†์‰ฝ๊ฒŒ ๋Œ€์‘ํ• 
์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜์—๋Š” ์„œ๋ฒ„ ์ฃผ์†Œ, ๊ฒŒ์ž„ ์ˆœ๋ฒˆ, ์ฑ„๋„ ์ˆœ๋ฒˆ, ์ปจํ…ํŠธ ID ๋“ฑ์˜ ํ•ญ๋ชฉ์„ ์„ ์–ธํ•œ๋‹ค.
๏ผ‘๏ผ—
Name Value Description
server_addr p.ap-northeast-1.elb.amazonaws.com URL ์ƒ์„ฑ์„ ์œ„ํ•œ ์„œ๋ฒ„ ์ฃผ์†Œ์ด๋ฉฐ, ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ์„œ๋ฒ„ IP
์ฃผ์†Œ ํ˜น์€ ๋„๋ฉ”์ธ ๋ช…์นญ
context_root /gcapi URL ์ƒ์„ฑ์„ ์œ„ํ•œ API ์ตœ์ƒ์œ„ ๊ฒฝ๋กœ์ด๋ฉฐ, Open API root
path or context root
game_seq GMGW1404081503010001GMGW14040815
03010001
์ปจํ…์ธ  ์กฐํšŒ ๋ฐ ๋“ฑ๋ก ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๊ฒŒ์ž„ ์ •๋ณด. ํ…Œ์ŠคํŠธ
๋Œ€์ƒ DB ์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ž„์˜์˜ ๊ฒŒ์ž„ ์ˆœ๋ฒˆ (40 bytes)
ch_seq NIGW1404201230500000NIGW1404201230
500000
์ฑ„๋„ ๋ฐ ์ปจํ…์ธ  ์กฐํšŒ ๋ฐ ๋“ฑ๋ก ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ฑ„๋„ ์ •๋ณด.
ํ…Œ์ŠคํŠธ ๋Œ€์ƒ DB ์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ž„์˜์˜ ์ฑ„๋„ ์ˆœ๋ฒˆ (40
bytes)
cid CDA01404250715330000CDA01404250715
330000
์ปจํ…์ธ  ๋ฐ ๋ง๊ธ€ ์กฐํšŒ๋ฅผ ์œ„ํ•œ ์ปจํ…์ธ  ์ •๋ณด. ํ…Œ์ŠคํŠธ ๋Œ€์ƒ DB
์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ž„์˜์˜ ์ปจํ„ด์ธ  ID (40 bytes)
auth_key 12345678901234567890123456${__time(yy
yyMMddHHmmss)}
๋ชจ๋ฐ”์ผ ์žฅ์น˜ ์ธ์ฆ(mobile device authentication key).
์‚ฌ์šฉ์ž ์‹ ๊ทœ ๋“ฑ๋ก์„ ์œ„ํ•œ ์ธ์ฆ ํ‚ค. ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ์ž
๋“ฑ๋ก ์‹œ โ€˜๊ธฐ์กด ์‚ฌ์šฉ์ž ์˜ค๋ฅ˜(already exist error)โ€™๊ฐ€
๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ์„ ์ด์šฉํ•ด
๋งค๋ฒˆ ์ธ์ฆ ํ‚ค๋ฅผ ์‹ ๊ทœ ๋ฐœํ–‰ํ•œ๋‹ค.
nick_name test_user_${__time(yyyyMMddHHmmss)} ์‚ฌ์šฉ์ž ์‹ ๊ทœ ๋“ฑ๋ก์— ํ•„์š”ํ•œ ๋‹‰๋„ค์ž„(nickname).
๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ์ž ๋“ฑ๋ก ์‹œ, โ€˜๋‹‰๋„ค์ž„ ์ค‘๋ณตโ€™ ์˜ค๋ฅ˜๊ฐ€
๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ์„ ์ด์šฉํ•ด
๋งค๋ฒˆ ๋‹‰๋„ค์ž„์„ ์‹ ๊ทœ ๋ฐœํ–‰ํ•œ๋‹ค.
device_id 15bf269cbffecf55b904648bb1304a376cd308
01
์ปจํ…์ธ  ๋“ฑ๋ก ๋ฐ ์กฐํšŒ๋ฅผ ์œ„ํ•œ ๋””๋ฐ”์ด์Šค ID
์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜ ์ค‘์—์„œ game_seq, ch_seq, cid ๋“ฑ์€ ๋Œ€์ƒ ์„œ๋ฒ„๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ,
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ํ…Œ์ŠคํŠธ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ˜ํ”Œ๋ง(sampling)ํ•œ ํ›„ jMeter ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜ ๊ฐ’์„ ์žฌ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.
โ€˜auth_keyโ€™ ๋ฐ โ€˜nick_nameโ€™ ๋ณ€์ˆ˜๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์ด ์ž…๋ ฅ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— jMeter โ€˜__timeโ€™ ํ•จ์ˆ˜๋ฅผ
์ด์šฉํ•ด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋งค๋ฒˆ ๋‹ค๋ฅธ ๊ฐ’์ด ์ƒ์„ฑ๋˜๋„๋ก ํ•œ๋‹ค.
๏ผ‘๏ผ˜
Thread Group
Number of Threads (users) ๋Š” 1, Ramp-up Period ๋ฐ Loop Count ๋Š” 1 ๋กœ ์„ค์ •ํ•œ๋‹ค. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๋ชจ๋“  ์š”์ฒญ๋“ค์ด
์ •์ƒ ๋™์ž‘ํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋งŒ์„ ํ™•์ธํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
Config Element
โ€˜HTTP Request Defaultsโ€™, โ€˜HTTP Header Managerโ€™, โ€˜HTTP Cookie Managerโ€™ ๋“ฑ 3 ๊ฐ€์ง€ Config Element ๋ฅผ
์„ค์ •ํ•œ๋‹ค.
Type Description
HTTP Request Defaults HTTP ์š”์ฒญ(request) ์‹œ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๊ฐ’๋“ค์„ ์„ค์ •ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ฒ„ ์ฃผ์†Œ, ํฌํŠธ ๋ฒˆํ˜ธ,
ํƒ€์ž„์•„์›ƒ(timeout) ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
HTTP Header Manager HTTP ์š”์ฒญ(request) ์‹œ, HTTP header ์— ์„ค์ •ํ•  ๊ธฐ๋ณธ ํ•ญ๋ชฉ๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ปจํ…์ธ  ํƒ€์ž…,
์—์ด์ „ํŠธ ์ •๋ณด, ์ธ์ฝ”๋”ฉ ํƒ€์ž…(encoding type) ๋“ฑ์„ ์„ค์ •ํ•œ๋‹ค.
HTTP Cookie Manager HTTP ์š”์ฒญ /์‘๋‹ต์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ฟ ํ‚ค(cookie)๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ค‘ ์„œ๋ฒ„์—์„œ ์ „์†ก๋ฐ›์€
์ฟ ํ‚ค๋ฅผ ๋ณด๊ด€ํ•˜๊ณ , ์ดํ›„ ์š”์ฒญ ์ˆ˜ํ–‰ ์‹œ ๋ณด๊ด€๋œ ์ฟ ํ‚ค๋ฅผ ์š”์ฒญ ํŒจํ‚ท(packat)์— ์ž๋™์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๋Š”
๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ํ•„์š”ํ•˜๋ฉด, ์ฟ ํ‚ค ๋ณ€์ˆ˜์™€ ๊ฐ’์„ ๊ธฐ๋ณธ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
๏ผ‘๏ผ™
HTTP Request Defaults ์—๋Š” โ€˜์„œ๋ฒ„ ์ฃผ์†Œโ€™ (Server Name or IP)๋ฅผ ์„ค์ •ํ•œ๋‹ค.
HTTP Header Manager ์—๋Š” โ€˜Content-Typeโ€™ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค. โ€˜Content-Typeโ€™ ๋ณ€์ˆ˜๋Š” RESTful API ์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ
ํ˜•์‹์„ ์ •ํ™•ํžˆ ์ง€์ •ํ•ด ์„œ๋ฒ„์—์„œ ์š”์ฒญ ์ธ์ž ํŒŒ์‹ฑ(request parameter parsing) ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ
๊ฒƒ์ด๋‹ค.
HTTP Cookie Manager ์—๋Š” โ€˜Clear cookies each iteration?โ€™ ์„ ์ฒดํฌํ•œ๋‹ค. ๋ฐ˜๋ณต(iteration) ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค
์ฟ ํ‚ค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๏ผ’๏ผ
HTTP Request Sampler
Open API ๊ฐœ์ˆ˜๋งŒํผ Sampler ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ํ•„์ˆ˜ ํ•ญ๋ชฉ์€ โ€˜Nameโ€™, โ€˜Methodโ€™, โ€˜Pathโ€™ ์ด๋ฉฐ, ์š”์ฒญ ์ž…๋ ฅ ๊ฐ’์ด ์กด์žฌํ•  ๊ฒฝ์šฐ,
โ€˜Parametersโ€™๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋‹จ, โ€˜Methodโ€™ ์œ ํ˜•์ด โ€˜PUTโ€™ ์ธ ๊ฒฝ์šฐ์—๋Š” โ€˜Body dataโ€™์— ์š”์ฒญ ์ธ์ž ๊ฐ’์„ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.
Sampler ๋“ฑ๋ก์„ ์œ„ํ•œ API ์ •๋ณด๋Š” โ€˜Open API ์—ฐ๋™ ๊ทœ๊ฒฉ์„œโ€™๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ Sampler ๋“ค์€ โ€˜์‚ฌ์šฉ์ž ๋“ฑ๋กโ€™, โ€˜์‚ฌ์šฉ์ž ์ธ์ฆโ€™ ๋ฐ ๊ธฐํƒ€ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์ˆœ์œผ๋กœ ๋“ฑ๋กํ•ด์•ผ ํ•œ๋‹ค. โ€˜์‚ฌ์šฉ์ž
๋“ฑ๋กโ€™์€ ์ž„์˜์˜ ์ธ์ฆ ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•ด ์‹ ๊ทœ ์‚ฌ์šฉ์ž๋กœ ๊ฐ€์ž…ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, โ€˜์‚ฌ์šฉ์ž ์ธ์ฆโ€™์€ ์‹ ๊ทœ ์ƒ์„ฑํ•œ ์‚ฌ์šฉ์ž๋กœ
์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ(login) ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‚˜๋จธ์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์ธ์ฆ ์ดํ›„์— ๋“ฑ๋กํ•˜๋Š” ์ด์œ ๋Š” ๋Œ€๋ถ€๋ถ„์˜
๊ธฐ๋Šฅ๋“ค์ด ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉด ์ •์ƒ ์‘๋‹ตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์‚ฌ์šฉ์ž ๋“ฑ๋ก
์‚ฌ์šฉ์ž ๋“ฑ๋ก sampler ์—์„œ๋Š” 4 ๊ฐœ์˜ ํ•„์ˆ˜ ์ธ์ž(parameter)๋ฅผ ๋“ฑ๋กํ•œ๋‹ค. ๋งŒ์ผ, API spec ์ด ๋ณ€๊ฒฝ๋˜์–ด ํ•„์ˆ˜ ์ธ์ž๊ฐ€
์ถ”๊ฐ€/์‚ญ์ œ๋  ๊ฒฝ์šฐ, ์ธ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค.
Name Value Description
auth_key ${auth_key} ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ๋งˆ๋‹ค, ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
auth_code IMEI ์ธ์ฆ ๋ฐฉ์‹์€ ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
device_id 15bf269cbffecf55b904648bb1304a376cd30801 ๋””๋ฐ”์ด์Šค ID ๋Š” ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
nick_name ${nick_name} ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ค‘๋ณต ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๋งค๋ฒˆ
์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
๏ผ’๏ผ‘
์‚ฌ์šฉ์ž ์ธ์ฆ
์‚ฌ์šฉ์ž ์ธ์ฆ sampler ์—์„œ๋Š” โ€˜auth_keyโ€™ โ€˜auth_codeโ€™, โ€˜device_idโ€™ ๋“ฑ 3 ๊ฐœ์˜ ์ธ์ž๋ฅผ ์„ค์ •ํ•œ๋‹ค.
Name Value Description
auth_key ${auth_key} ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ๋งˆ๋‹ค, ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ’์„
์‚ฌ์šฉํ•œ๋‹ค.
auth_code IMEI ์ธ์ฆ ๋ฐฉ์‹์€ ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
device_id 15bf269cbffecf55b904648bb1304a376cd30801 ๋””๋ฐ”์ด์Šค ID ๋Š” ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
๏ผ’๏ผ’
์‚ฌ์šฉ์ž ์ธ์ฆ ํ›„์—, JSON Path Extractor ๋ฅผ ์ด์šฉํ•ด ์‘๋‹ต JSON ๋ฐ์ดํ„ฐ ๋‚ด์—์„œ โ€˜user_keyโ€™ ํ•„๋“œ ๊ฐ’์„ ์ถ”์ถœํ•œ๋‹ค.
์ถ”์ถœ๋œ ๊ฐ’์€ โ€˜user_keyโ€™ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ณ  ์ดํ›„ โ€˜์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒโ€™ ๋“ฑ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
JSON Assertion
Assertion ์€ JSON ํ˜•์‹์˜ ์‘๋‹ต ๋ฐ์ดํ„ฐ(response data)๋ฅผ ํŒŒ์‹ฑ(parsing) ํ•œ ํ›„, ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ์ฒดํฌํ•˜์—ฌ ์ •์ƒ ์œ ๋ฌด๋ฅผ
ํŒ๋‹จํ•œ๋‹ค. ์ •์ƒ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‹จ์ผ ๊ฐ’์ผ ๊ฒฝ์šฐ์—๋Š” โ€˜JSON Path Assertionโ€™์„ ์ด์šฉํ•˜๊ณ , ์ •์ƒ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‘ ๊ฐ€์ง€
์ด์ƒ์ธ ๊ฒฝ์šฐ์—๋Š” โ€˜JSON Path extractorโ€™๋ฅผ ์ด์šฉํ•ด ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ๋ณ€์ˆ˜์— ๋‹ด๊ณ  โ€˜BeanShell Assertionโ€™๋กœ ์—๋Ÿฌ๋ฅผ
๊ฒ€์ถœํ•œ๋‹ค.
JSON Path Assertion
์ •์ƒ ์ƒํƒœ์ธ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‹จ์ผ ๊ฐ’์ผ ๊ฒฝ์šฐ์—๋Š” โ€˜JSON Path Assertionโ€™์„ ์ด์šฉํ•ด ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ํŒ๋‹จํ•  ์ˆ˜
์žˆ์œผ๋ฉฐ, JSON ์‘๋‹ต ๋ฐ์ดํ„ฐ์—์„œ ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š” ์ž‘์—…๊ณผ ์ถ”์ถœ ๊ฐ’์„ ์˜ˆ์ƒ ๊ฐ’(expected value)๊ณผ ๋น„๊ตํ•˜๋Š” ์ž‘์—…์„
ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ โ€˜000โ€™ ์ธ ๊ฒฝ์šฐ ์ •์ƒ์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค.
๏ผ’๏ผ“
JSON Path Extractor
์ •์ƒ์ ์ธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ๋ฐ˜ํ™˜๋  ๊ฒฝ์šฐ, ๋จผ์ € โ€˜JSON Path extractorโ€™๋ฅผ ์ด์šฉํ•ด JSON ์‘๋‹ต
๋ฐ์ดํ„ฐ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ jMeter ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” JSON ๋ฐ์ดํ„ฐ์˜ โ€˜result_codeโ€™ ํ•„๋“œ ๊ฐ’์„ ์ถ”์ถœํ•œ
ํ›„, jMeter โ€˜result_codeโ€™ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ๋‹ค.
BeanShell Assertion
โ€˜JSON Path Extractorโ€™์— ์˜ํ•ด ์ถ”์ถœ๋œ ๋ณ€์ˆ˜๋ฅผ โ€˜BeanShell Assertionโ€™์„ ์ด์šฉํ•ด ๊ฒ€์‚ฌํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” โ€˜result_codeโ€™
๋ณ€์ˆ˜์˜ ๊ฐ’์ด โ€˜000โ€™ ์ด๊ฑฐ๋‚˜, โ€˜000โ€™ ์ธ ๊ฒฝ์šฐ ์ •์ƒ์œผ๋กœ ํŒ์ •ํ•˜๊ณ , ์•„๋‹Œ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
๏ผ’๏ผ”
Listener (View Results Tree)
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ Listener ๋Š” ๊ฐœ๋ณ„ ์š”์ฒญ ๊ฑด์˜ ์ •์ƒ ์œ ๋ฌด์™€ ์š”์ฒญ/์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ ๊ฒ€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ˆ˜ํ–‰
์„ฑ๋Šฅ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์€ ์ œ์™ธํ•œ๋‹ค. ํ•„์ˆ˜์ ์œผ๋กœ ํฌํ•จํ•ด์•ผ ํ•˜๋Š” Listener ๋Š” โ€˜View Results Treeโ€™ ์ด๋‹ค.
๏ผ’๏ผ•
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ณ„ํš (Load Test Plan)
ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ฐ๊ฐ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ๊ณ„ํš(jMeter TestPlan script)๋ฅผ ์ž‘์„ฑํ•œ ํ›„, BMT ์„œ๋ฒ„
์ƒ์—์„œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์‹œํ•œ๋‹ค. ๋งค ๋ฒˆ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„, ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ํ™˜๊ฒฝ, ์ˆ˜ํ–‰ ์ธ์ž(execution parameter),
๊ฒฐ๊ณผ๋ฅผ ํฌํ•จํ•œ ๋ณด๊ณ ์„œ ๋“ฑ์„ ์ž‘์„ฑํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ์ผํšŒ์„ฑ์— ๊ทธ์ณ์„œ๋Š” ์•ˆ๋˜๋ฉฐ, ๊ธฐ๋Šฅ ํ™•์žฅ ๋ฐ ๋ณ€๊ฒฝ, ์„œ๋ฒ„ ํ™•์žฅ์— ๋”ฐ๋ผ
์ง€์†์ ์œผ๋กœ ๋ณด๊ณ ์„œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณ€ํ™”์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ํ‰๊ฐ€, ์žฅ๊ธฐ ์˜ˆ์ธก์„ ์œ„ํ•œ ๊ธฐ์ดˆ ์ž๋ฃŒ ์ˆ˜์ง‘ ๋ฐ ๋ถ€ํ•˜
๊ด€๋ฆฌ ๋…ธํ•˜์šฐ ์ถ•์ ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์™€ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์˜ ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
๏ฌ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๊ฐ€์ƒ ์‚ฌ์šฉ์ž(virtual user) ์ˆ˜๋ฅผ ํ•œ ๋ช…์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ๋ฐ˜๋ณต ํšŸ์ˆ˜ ๋˜ํ•œ 1 ํšŒ๋กœ ์ œํ•œํ•œ๋‹ค. ๋ฐ˜๋ฉด์—
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ๋ณต์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
๏ฌ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ๋Š” Assertion ์„ ์ด์šฉํ•ด ์‘๋‹ต ๋ฐ์ดํ„ฐ์˜ ์ •์ƒ ์œ ๋ฌด๋ฅผ ๊ฒ€์‚ฌํ•˜์ง€๋งŒ, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ฐ€๊ธ‰์ 
Assertion ์„ ํฌํ•จ์‹œํ‚ค๊ธฐ ์•Š๋Š”๋‹ค. (Assertion ์„ ๋งŽ์ด ์‚ฌ์šฉํ• ์ˆ˜๋ก, Assertion ์ˆ˜ํ–‰์œผ๋กœ ์ธํ•œ ์ง€์—ฐ ๋ฐ ์ž์› ์†Œ๋ชจ
๋“ฑ์œผ๋กœ ์ธํ•ด ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ์ธก์ • ๊ฒฐ๊ณผ๊ฐ€ ๋ถ€์ •ํ™•ํ•ด์ง„๋‹ค.)
๏ฌ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ์˜ ๋ฉด๋ฐ€ํ•œ ๋ถ„์„์„ ์œ„ํ•ด โ€˜Results in Treeโ€™ ๋“ฑ ์ƒ์„ธํ•œ ๋กœ๊ทธ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š”
Listener ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ฐ€๊ธ‰์  ์ง‘๊ณ„์„ฑ(aggregate) Listener ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ถ€ํ•˜
ํ…Œ์ŠคํŠธ์—์„œ ์ •๋ฐ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‚ฐ์ถœํ•˜๋Š” Listener ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, Listener ์˜ ์ข…๋ฅ˜๋ฅผ ๋งŽ์ด ์ ์šฉํ• ์ˆ˜๋ก ๋ถ€์ •ํ™•ํ•œ
๊ฒฐ๊ณผ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.
๏ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ์—๋Š” ๋ณต์ˆ˜์˜ ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•œ ์›๊ฒฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, CLI(Command Line Interface)๋ฅผ ์ด์šฉํ•œ
๋ฐฐ์น˜ ์ฒ˜๋ฆฌ(batch processing) ๋ฐฉ์‹์ด ์ ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ๋ถ„์„ ์‹œ์—๋Š” ์›๊ฒฉ ํ…Œ์ŠคํŠธ๊ฐ€
ํ•„์ˆ˜์ด๋‹ค.
ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค
์‚ฌ์šฉ์ž๋“ค์˜ ์ด์šฉ ํŒจํ„ด์„ ์˜ˆ์ธกํ•˜์—ฌ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์„ธ๋ถ„ํ™” ํ•œ๋‹ค. ์‚ฌ์šฉ์ž๋“ค์„ ์„œ๋น„์Šค ๋ฏธ์‚ฌ์šฉ์ž, ์ปจํ…์ธ  ์†Œ๋น„์ž ๋ฐ ์ปจํ…์ธ 
์ƒ์‚ฐ์ž ๊ทธ๋ฃน์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ, ๊ทธ์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ๊ณ„ํš์„ ์ž‘์„ฑํ•œ๋‹ค.
์‚ฌ์šฉ์ž ๊ทธ๋ฃน ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ์š”์•ฝ
์„œ๋น„์Šค ๋ฏธ์‚ฌ์šฉ์ž ์‹ ๊ทœ ๊ฐ€์ž… ํšŒ์› ์ •๋ณด๋ฅผ ์ž…๋ ฅ ํ•˜๊ณ , ๋‹‰๋„ค์ž„(nickname) ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•œ ํ›„,
๋กœ๊ทธ์ธํ•˜์—ฌ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ๋‹ค.
์ปจํ…์ธ  ์†Œ๋น„์ž ๋กœ๊ทธ์ธ ๋ฐ ๋ธŒ๋ผ์šฐ์ง• ์ด๋ฏธ ๊ฐ€์ž…ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค์— ๋กœ๊ทธ์ธ ํ•œ ํ›„, ์ž์‹ ์ด ์ฆ๊ฒจ๋ณด๋Š”
์ปจํ…์ธ ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ , ์ปจํ…์ธ ์— ๋Œ€ํ•œ ๋ฆฌ์•ก์…˜(reaction) โ€“ ์ข‹์•„์š”,
์ฆ๊ฒจ์ฐพ๊ธฐ, ๋Œ“๊ธ€ ์“ฐ๊ธฐ - ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
์ปจํ…์ธ  ์ƒ์‚ฐ์ž ์ปจํ…์ธ  ์—…๋กœ๋“œ ์ปจํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๋Š” BJ ๋“ค์ด ๋…นํ™”ํ•œ ๋™์˜์ƒ๊ณผ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ๋“ฑ๋ก ๋ฐ
ํŽธ์ง‘ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.
๊ฐœ๋ณ„ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ํ–‰์œ„ ์ฃผ์ฒด(action behavior)์™€ ๋ฐœ์ƒ ๋นˆ๋„๊ฐ€ ์ƒ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๊ณ„ํš์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ ,
๋ถ€ํ•˜๋ฅผ ์ธก์ •ํ•ด์•ผ ํ•œ๋‹ค.
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์™€ โ€˜Thread Groupโ€™, โ€˜Assertionโ€™ ๋ฐ โ€˜Listenerโ€™ ๊ตฌ์„ฑ(์„ค์ •)์ด ๋‹ค๋ฅด๋‹ค. ์ž„์˜์˜ ์‚ฌ์šฉ์ž๋ฅผ
๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•ด โ€˜CSV Data Set Configโ€™, ์‚ฌ์šฉ์ž์˜ ์‹ค์ œ ์„œ๋น„์Šค ์‚ฌ์šฉ์„ ๋ชจ๋ฐฉ(simulation)ํ•˜๊ธฐ ์œ„ํ•ด โ€˜Timerโ€™๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ์—๋Š” Open API ์˜ ์ •์ƒ ๋™์ž‘ ์œ ๋ฌด๊ฐ€ ํ…Œ์ŠคํŠธ ๊ด€์‹ฌ์‚ฌ๊ฐ€ ์•„๋‹ˆ๋ฉฐ, jMeter ์ž์› ์†Œ๋ชจ๋ฅผ ์ค„์ด๊ณ  ์ธก์ •
์ •ํ™•๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด โ€˜Assertionโ€™์€ ์ œ๊ฑฐํ•œ๋‹ค. Listener ๋Š” ์ˆ˜ํ–‰ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•ด ํ†ต๊ณ„ ๋ฐ ๊ทธ๋ž˜ํ”„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋“ค์„
์‚ฌ์šฉํ•œ๋‹ค.
๏ผ’๏ผ–
CSV Data ์ƒ์„ฑ
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ ˆ์ฐจ๋Š” โ€˜5. CSV ๋ฐ์ดํ„ฐ ์ƒ์„ฑโ€™ ์„ ์ฐธ์กฐํ•˜๋ฉด ๋œ๋‹ค.
CSV Data Set Config
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ์ž„์˜์˜ ์‚ฌ์šฉ์ž๋“ค์„ ์‹ ๊ทœ ๋“ฑ๋กํ•˜๊ณ  ๋กœ๊ทธ์ธ ํ•˜๊ธฐ ์œ„ํ•ด, ์ธ์ฆ ํ‚ค (auth_key)์™€ ๋‹‰๋„ค์ž„
(nickname)์„ ์ผ๊ด„ ์ƒ์„ฑํ•œ CSV ํŒŒ์ผ์„ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
CSV ํŒŒ์ผ ๋ฐ์ดํ„ฐ ์ƒ˜ํ”Œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ธ์ฆ ํ‚ค ๋ฐ์ดํ„ฐ๋Š” 40 bytes ์ด๋ฉฐ, ๋‹‰๋„ค์ž„์˜ ์ตœ์†Œ ๊ธธ์ด๋Š” 2 byte ์ด๋‚˜,
์ผ๋ฅ ์ ์œผ๋กœ 32 bytes ๊ธธ์ด๋กœ ์ƒ์„ฑํ•œ๋‹ค.
-------------------------- CSV data sample (start) ---------------------------
userkey_12345678901_20140510141925000001,nickname_00_20140510141925000001
userkey_12345678901_20140510141925000002,nickname_00_20140510141925000002
userkey_12345678901_20140510141925000003,nickname_00_20140510141925000003
userkey_12345678901_20140510141925000004,nickname_00_20140510141925000004
userkey_12345678901_20140510141925000005,nickname_00_20140510141925000005
userkey_12345678901_20140510141925000006,nickname_00_20140510141925000006
userkey_12345678901_20140510141925000007,nickname_00_20140510141925000007
-------------------------- CSV data sample (end) ---------------------------
โ€˜CSV Data Set Configโ€™ ์— ์„ค์ •ํ•˜๋Š” ๊ฐ’๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
Column Description
Filename ์ธ์ฆ ํ‚ค(auth_key)์™€ ๋‹‰๋„ค์ž„ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ CSV ํŒŒ์ผ ๊ฒฝ๋กœ
Variable Names CSV ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•œ ํ›„, ๋Œ€์ž…ํ•  ๋ณ€์ˆ˜ ๋ช…์นญ๋“ค
Recycle on EOF ํŒŒ์ผ ๋์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ, ์ฒ˜์Œ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ฝ์–ด ๋“ค์ด๋Š”์ง€ ์—ฌ๋ถ€
Stop thread on EOF ํŒŒ์ผ ๋์— ๋„๋‹ฌํ•ด ๋” ์ด์ƒ ์ฝ์„ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ์Šค๋ ˆ๋“œ(thread)๋ฅผ ์ค‘์ง€ํ•˜๋Š”์ง€ ์—ฌ๋ถ€
Sharing mode โ€˜All threadsโ€™๋กœ ์„ค์ •ํ•œ๋‹ค.
๏ผ’๏ผ—
Thread Group
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” โ€˜Thread Groupโ€™ ์„ค์ •์˜ ์‚ฌ์šฉ์ž ์ˆ˜ (Number of Threads), ๋žจํ”„ ์—… ์‹œ๊ฐ„ (Ramp-up
Period), ๋ฐ˜๋ณต ํšŸ์ˆ˜ (Loop count)๋ฅผ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ์— ๋งž๋„๋ก ์กฐ์ •ํ•œ๋‹ค. (๋Œ€์ƒ ์„œ๋ฒ„ ์œ ํ˜•, ์„œ๋ฒ„ ์„ฑ๋Šฅ, ํ…Œ์ŠคํŠธ
๋ชฉ์ ์— ๋”ฐ๋ผ ๋งค๋ฒˆ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•œ๋‹ค.)
์ฐธ๊ณ ๋กœ ๋žจํ”„ ์—…(Ramp-up)์ด๋ž€ ๊ณต์žฅ ๋“ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์‚ฐ์—… ์šฉ์–ด์ด๋ฉฐ, ์žฅ๋น„ ์„ค์น˜ ์ดํ›„ ๋Œ€๋Ÿ‰ ์–‘์‚ฐ์— ๋“ค์–ด๊ฐ€๊ธฐ๊นŒ์ง€
์ƒ์‚ฐ ๋Šฅ๋ ฅ์˜ ์ฆ๊ฐ€๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋ง์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž ์ˆ˜๋ฅผ 10 ๋ช…์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ๋žจํ”„ ์—… ์‹œ๊ฐ„์„ 30 ์ดˆ๋กœ ์„ค์ •ํ•œ
๊ฒฝ์šฐ, 30 ์ดˆ ๊ตฌ๊ฐ„ ๋‚ด์— ์‚ฌ์šฉ์ž(์Šค๋ ˆ๋“œ)๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค. ๋žจํ”„ ์—… ์‹œ๊ฐ„์„ ์‚ฌ์šฉ์ž ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด ๊ฐ
์‚ฌ์šฉ์ž ๊ฐ„ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์ด ๋œ๋‹ค. (3 ์ดˆ ๋งˆ๋‹ค ํ•œ ๋ช…์”ฉ ์‹œ์ž‘ ํ˜น์€ ์ถœ๋ฐœํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.)
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ jMeter GUI ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด โ€˜Number of Threadsโ€™, โ€œRamp-up Periodโ€™,
โ€˜Loop Countโ€™ ๊ฐ’์„ ์ƒ์ˆ˜๋กœ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.
๋ฐ˜๋ฉด์— ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ non-GUI ๋ชจ๋“œ์—์„œ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, ์›๊ฒฉ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์‹œํ•  ๊ฒฝ์šฐ์—๋Š” jMeter property ๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ
ํ•˜๊ณ , property ๊ฐ’๋“ค์„ jMeter ์‹คํ–‰ ์ธ์ž๋กœ ์ง€์ •ํ•œ๋‹ค. (์ƒ์ˆ˜๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด, ๋ถ€ํ•˜ ์ˆ˜์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•  ๋•Œ ๋งˆ๋‹ค
Test Plan ์„ ์ˆ˜์ •ํ•œ ํ›„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
๏ผ’๏ผ˜
Timer (Constant & Uniform Random)
์‚ฌ์šฉ์ž์˜ ์„œ๋น„์Šค ์‚ฌ์šฉ ํŒจํ„ด์„ ๋ชจ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€˜์‹ค์ œโ€™ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” ํ–‰์œ„ ์‚ฌ์ด์— ์‹œ๊ฐ„ ์ฐจ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„
๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž๋Š” ์•„์ฃผ ์งง์€ ๊ฐ„๊ฒฉ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋‹ฌ๋ฆฌ ๋งํ•ด์„œ ์ˆœ๊ฐ„์ ์œผ๋กœ ๋Œ€๋Ÿ‰์˜ ์š”์ฒญ์„
์ „์†กํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๊ณ„๋งŒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.) jMeter ๋Š” ์„œ๋น„์Šค ์š”์ฒญ ๊ฐ„์— ์ผ์ •ํ•œ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก
ํƒ€์ด๋จธ(timer)๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ํƒ€์ด๋จธ ์œ ํ˜•์ด ์กด์žฌํ•˜๋‚˜, ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณ ์ • ์‹œ๊ฐ„ ํƒ€์ด๋จธ(Constant Timer)์™€ ๊ท ์ผ
๋žœ๋ค ํƒ€์ด๋จธ(Uniform Random Timer)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค.
๊ณ ์ • ์‹œ๊ฐ„ ํƒ€์ด๋จธ ์„ค์ • ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ํƒ€์ด๋จธ๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ(request)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— 0.3 ์ดˆ๋ฅผ ๋Œ€๊ธฐํ•˜๋Š”
์„ค์ •์ด๋‹ค.
๏ผ’๏ผ™
๊ท ์ผ ๋žœ๋ค ํƒ€์ด๋จธ(Uniform Random Timer) ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ํƒ€์ด๋จธ๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์ตœ์†Œ 3 ์ดˆ,
์ตœ๋Œ€ 5 ์ดˆ์˜ ๋žœ๋ค ์‹œ๊ฐ„์„ ๋Œ€๊ธฐํ•˜๋Š” ์„ค์ •์ด๋‹ค.
Listener (Report)
์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์‹œ ์ ์šฉํ•˜๋Š” Listener ๋Š” โ€˜Aggregate Graphโ€™, โ€˜Response Time Over Timeโ€™, โ€˜Transactions Per Secondโ€™
๋“ฑ 3 ๊ฐ€์ง€ ์ด๋‹ค. Aggregate Graph ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ 2 ๊ฐ€์ง€ Listener ๋Š” ํ™•์žฅ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ๋งŒ์ผ,
๋ณ„๋„์˜ ์ง‘๊ณ„ ํˆด์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ ค๊ณ  ํ•  ๊ฒฝ์šฐ์—๋Š” ๊ฐœ๋ณ„ ์š”์ฒญ์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ๋กœ ๋‚จ๊ธธ ์ˆ˜
์žˆ๋Š” โ€˜Sample Data Writerโ€™๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ๋œ๋‹ค.
Aggregate Graph (or Aggregate Report)
์ง‘๊ณ„ ๋ณด๊ณ (ํ˜น์€ ์ง‘๊ณ„ ๋ฆฌํฌํŠธ)๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ช…์นญ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์š”์•ฝ ํ–‰(row)๋“ค์„ ํฌํ•จํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.
๊ฐ๊ฐ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ •๋ณด ํ•ฉ๊ณ„์™€ ์š”์ฒญ ํšŸ์ˆ˜, ์ตœ์†Œ, ์ตœ๋Œ€, ํ‰๊ท , ์˜ค๋ฅ˜ ๋นˆ๋„, ์ฒ˜๋ฆฌ๋Ÿ‰ ๊ทผ์‚ฌ๊ฐ’(approximate
throughput), ์ดˆ๋‹น Kilobyte ๋‹จ์œ„ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค.
์ง‘๊ณ„ ๋ณด๊ณ ์— ํฌํ•จ๋˜๋Š” ํ•ญ๋ชฉ๋“ค์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
Column Description
Label ์ƒ˜ํ”Œ ๋ช…์นญ (API ํ˜น์€ URL ๋ช…์นญ)
#Samples ํŠน์ • ์ƒ˜ํ”Œ์˜ ์š”์ฒญ(์‹คํ–‰) ํšŸ์ˆ˜
Average ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„
Median ์‘๋‹ต ์ค‘๊ฐ„ ์ง‘ํ•ฉ์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„, 50%์˜ ์ƒ˜ํ”Œ์€ Median ๋ณด๋‹ค ์‘๋‹ต์‹œ๊ฐ„์ด ์ž‘์œผ๋ฉฐ, ๋‚˜๋จธ์ง€๋Š” ์‘๋‹ต ์‹œ๊ฐ„์ด ๋”
๊ธธ๋‹ค.
90% line 90%์˜ ์ƒ˜ํ”Œ์€ โ€™90 % lineโ€™ ๋ณด๋‹ค ์ ์€ ์‹œ๊ฐ„ ๋‚ด์— ์‹คํ–‰๋œ๋‹ค. ๋‚˜๋จธ์ง€ 10%๋Š” ๋ณด๋‹ค ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๊ธธ๋‹ค.
Min ์ตœ์†Œ ์‘๋‹ต ์‹œ๊ฐ„
Max ์ตœ๋Œ€ ์‘๋‹ต ์‹œ๊ฐ„
Error % ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๋น„์œจ
Throughput ์ดˆ/๋ถ„/์‹œ๊ฐ„ ๋‹น ์ˆ˜ํ–‰๋œ ์š”์ฒญ ์ˆ˜
Kb/sec ์ดˆ๋‹น Kilobytes ๋‹จ์œ„๋กœ ๊ณ„์‚ฐ๋œ ์ฒ˜๋ฆฌ๋Ÿ‰
๏ผ“๏ผ
์ง‘๊ณ„ ๋ณด๊ณ ๋Š” ํŠน์ • ์‹œ์ ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜์น˜ํ™”๋œ ํ˜•ํƒœ๋กœ ๊ธฐ๋กํ•˜์—ฌ, ์ฃผ๊ธฐ์ /๋ฐ˜๋ณต์  ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ
์ด๋ ฅ์„ ํ†ตํ•ด ๊ฐœ์„ /๋ณ€ํ™” ์ถ”์ด๋ฅผ ๋ถ„์„ํ•˜๊ณ , ๊ฐ๊ด€์  ์„ฑ๋Šฅ ํ‰๊ฐ€ ์ž๋ฃŒ๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
์ผ๋ฐ˜์ ์ธ ํ™œ์šฉ ๋ฐฉ์‹์€ Benchmark Test ์ˆ˜ํ–‰ ์ „์— Median, Max ์‘๋‹ต ์‹œ๊ฐ„์˜ ๋ชฉํ‘œ ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ , ์ง‘๊ณ„ ๋ณด๊ณ ๋ฅผ ํ†ตํ•ด
๋ชฉํ‘œ ๋‹ฌ์„ฑ ์—ฌ๋ถ€๋ฅผ ํŒ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ชฉํ‘œ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋“œ์›จ์–ด ํ™•์žฅ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ํŠœ๋‹,
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ ๊ฒ€ ๋“ฑ์„ ํ†ตํ•ด ํŠœ๋‹์„ ์ˆ˜ํ–‰ํ•œ ๋ชฉํ‘œ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์„ฑ๋Šฅ ์ธก์ •์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
Response Time over Time
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ตฌ๊ฐ„ ๋‚ด์—์„œ ๊ฐ ์š”์ฒญ์˜ ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„์„ ๊ทธ๋ž˜ํ”„๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ถ€ํ•˜๋ฅผ ๊ธด ์‹œ๊ฐ„(long
term)๋ฅผ ๋ฐœ์ƒ์‹œ์ผฐ์„ ๋•Œ, ์„œ๋น„์Šค ์‘๋‹ต ์‹œ๊ฐ„์ด ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ผ ์ฆ๊ฐ€ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜๋Š”
์ ์ง„์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์„œ๋ฒ„์˜ ์‘๋‹ต ์„ฑ๋Šฅ ์ถ”์ด๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. BMT ์‹ค์‹œ ๊ฒฐ๊ณผ Response
Time ์ด ์•ˆ์ •์ ์ด์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์„œ๋ฒ„ ์ž์›์˜ ์œ ์ถœ ํ˜น์€ ๊ฐ์†Œ(memory leak, I/O wait, database overload, application
error ๋“ฑ), ๊ฐ์ข… ์žฅ์•  ์œ ๋ฌด ๋“ฑ์— ๋Œ€ํ•œ ์ ๊ฒ€์„ ์‹ค์‹œํ•œ๋‹ค. Response Timer over Time ๋ฆฌํฌํŠธ๋ฅผ ์ด์šฉํ•ด ์‹œ์Šคํ…œ์˜
์‹ ๋ขฐ์„ฑ ๋ฐ ์•ˆ์ •์„ฑ์„ ๋ณด์ฆํ•œ๋‹ค.
๏ผ“๏ผ‘
Transactions per Seconds
ํ†ต์ƒ์ ์œผ๋กœ TPS ๋ผ๋Š” ์•ฝ์–ด๋กœ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, ์„œ๋น„์Šค(ํ˜น์€ ์‹œ์Šคํ…œ)์ด ๋™์‹œ์— ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ˆ˜ ํ˜น์€
์ˆ˜์šฉ๋Ÿ‰์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ณดํŽธ์ ์ธ ํ‰๊ฐ€ ์ง€ํ‘œ์ด๋‹ค. TPS ๋ฅผ ์ด์šฉํ•ด ์‹œ์Šคํ…œ์˜ ์ตœ๋Œ€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ์šฉ๋Ÿ‰์„ ์ธก์ •ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ,
โ€˜ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€์น˜โ€™์ด๋ฉฐ, โ€˜์ ์ • ์ฒ˜๋ฆฌ๋Ÿ‰โ€™์€ ์•„๋‹ˆ๋‹ค. ์ ์ • ์ฒ˜๋ฆฌ๋Ÿ‰์€ ํ•˜๋“œ์›จ์–ด/๋„คํŠธ์›Œํฌ/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์› ๋“ฑ์—
์—ฌ์œ ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด ์‚ฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
๏ผ“๏ผ’
4. ๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰
์ค€๋น„ ์‚ฌํ•ญ
๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์ „ ์ค€๋น„๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
๏ฌ jMeter ์„ค์น˜ : ๋กœ์ปฌ PC ํ˜น์€ ๊ฐœ๋ฐœ ์žฅ๋น„์— jMeter ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๏ฌ jMeter Test Plan : ๊ธฐ๋Šฅ ํ˜น์€ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์„ ์œ„ํ•ด jMeter ํ…Œ์ŠคํŠธ ํ”Œ๋žœ ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
(ํŒŒ์ผ ํ™•์žฅ์ž : jmx)
๏ฌ CSV ๋ฐ์ดํ„ฐ ํŒŒ์ผ : ์„ฑ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CSV ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ์ค€๋น„๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ
jMeter ์‹คํ–‰ Test Plan ์‹คํ–‰ (๊ธฐ๋Šฅ) ์‹คํ–‰ ๊ฒฐ๊ณผ ๊ฒ€ํ† 
jMeter ์‹คํ–‰
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์œผ๋ฏ€๋กœ, Local PC ์—์„œ jMeter ๋ฅผ GUI ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค. jMeter ์‹คํ–‰ ํŒŒ์ผ์€
jMeter ์„ค์น˜ ํด๋” ์•„๋ž˜์— ์กด์žฌํ•˜๋Š” bin ํด๋” ๋‚ด์˜ โ€˜jmeter.batโ€™ ํŒŒ์ผ์ด๋‹ค.
jMeter ๋ฅผ ์‹คํ–‰ํ•œ ํ›„, โ€˜API_unit_test.jmxโ€™ ํŒŒ์ผ์„ ๋กœ๋“œ(load)ํ•œ๋‹ค.
๏ผ“๏ผ“
Test Plan ์‹คํ–‰ (๊ธฐ๋Šฅ)
ํ…Œ์ŠคํŠธ ํ”Œ๋žœ(Test Plan)์„ ๋กœ๋“œํ•œ ํ›„, control-R ๋‹จ์ถ• ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ๋ฉ”๋‰ด ๋ฐ”์—์„œ ๋…น์ƒ‰ ํ™”์‚ดํ‘œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด
ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
์‹คํ–‰ ๊ฒฐ๊ณผ ๊ฒ€ํ† 
โ€˜Summary Reportโ€™, โ€˜View Results in Treeโ€™, โ€˜View Result Tableโ€™์„ ์„ ํƒํ•œ ํ›„, ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€ํ† ํ•œ๋‹ค. ์ •์ƒ์ ์œผ๋กœ
์‘๋‹ตํ•˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ๋“ค์€ ๋ถ‰์€์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜๋ฉฐ, Request ๋ฐ Response data ๋“ฑ์„ ๊ฒ€ํ† ํ•˜์—ฌ ์žฅ์•  ์›์ธ์„ ๋ถ„์„ํ•œ๋‹ค.
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ
CSV generator ์‹คํ–‰ Test Plan ์‹คํ–‰ (๋ถ€ํ•˜) jMeter GUI ๋ชจ๋“œ ์‹คํ–‰
CSV input
Data file
์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ์ž‘์„ฑ
Stress Test
์ˆ˜ํ–‰ ๊ฒฐ๊ณผ (jtl)
Performance
Graph / Report
๏ผ“๏ผ”
CSV generator ์‹คํ–‰
๋ช…๋ น์ค„(command line)์—์„œ CVS ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
๏ƒ˜ java -jar RandomUserCsvGenerator_fat.jar
์œ„์™€ ๊ฐ™์ด CSV Generator ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ๋™์ผ ํด๋” ๋‚ด์— โ€˜TestUsers.csvโ€™ ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.
(CSV generator ์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค๋ช…์€ โ€˜5. CSV ๋ฐ์ดํ„ฐ ์ƒ์„ฑโ€™ ์ ˆ์„ ์ฐธ์กฐํ•œ๋‹ค.)
Test Plan ์‹คํ–‰
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ์—๋Š” jMeter ๋ฅผ non-GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•œ๋‹ค. non-GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ ์˜ˆ์‹œ๋Š”
๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ์— ํฌํ•จ๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜(environment variables)๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
Variable Description
JMETER_HOME jMeter ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ ๊ฒฝ๋กœ (์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ ๊ฒฝ๋กœ)
TEST_PLAN jMeter test plan ํŒŒ์ผ ๋ช…์นญ (์ž…๋ ฅ ํŒŒ์ผ ๊ฒฝ๋กœ)
RESULT_FILE jMter test ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ ํŒŒ์ผ ๋ช…์นญ (์ถœ๋ ฅ ํŒŒ์ผ ๊ฒฝ๋กœ)
jMeter ์‹คํ–‰ ์ธ์ž(parameter)์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
-n : jMeter ๋ฅผ non-GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•œ๋‹ค.
-t : jMeter test plan ์ž…๋ ฅ ํŒŒ์ผ์ด๋ฆ„์„ ์„ค์ •ํ•œ๋‹ค.
-l : jMeter ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰๊ฒฐ๊ณผ ์ถœ๋ ฅ ํŒŒ์ผ ์ด๋ฆ„์„ ์„ค์ •ํ•œ๋‹ค.
-J : jMeter ์†์„ฑ(property)๋ฅผ ์„ค์ •ํ•œ๋‹ค. name=value ํ˜•์‹์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
์œ„ ์˜ˆ์‹œ์—์„œ๋Š” โ€˜loopsโ€™, โ€˜ramp_upโ€™, โ€˜threadsโ€™ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์˜€์œผ๋ฉฐ, 3 ๊ฐ€์ง€ ๋ณ€์ˆ˜๋Š” thread group ์—์„œ ์ฐธ์กฐํ•œ๋‹ค.
rem jMeter run batch script for Windows
rem set jMeter installation directory
set JMETER_HOME=D:apache-jmeter-2.11
rem set jMeter "test plan" script file name
set TEST_PLAN= API_load_test__2_login_browse.jmx
rem set jMeter stress test result file name
set RESULT_FILE= Stress_Resuts.jtl
%JMETER_HOME%binjmeter -n -t %TEST_PLAN% -l %RESULT_FILE% -Jloops=1 -Jramp_up=30 -
Jthreads=30
๏ผ“๏ผ•
๋ฐฐ์น˜ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ๋ช…์นญ์ด โ€˜run_jmeter.batโ€™์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ์œ ์‚ฌํ•œ
๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
C:run>run_jmeter
C:run>rem set jMeter installation directory
C:run>set JMETER_HOME=D:apache-jmeter-2.11
C:run>rem set jMeter "test plan" script file name
C:run>set TEST_PLAN= API_load_test__2_login_browse.jmx
C:run>rem set jMeter stress test result file name
C:run>set RESULT_FILE=_Stress_Resuts.jtl
C:run>D: apache-jmeter-2.11binjmeter -n -t API_load_test__
2_login_browse.jmx -l Stress_Resuts.jtl -Jloops=1
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=64m; support
was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; sup
port was removed in 8.0
Creating summariser <summary>
Created the tree successfully using API_load_test__2_login_browse.jmx
Starting the test @ Mon May 12 15:04:10 KST 2014 (1399874650593)
Waiting for possible shutdown message on port 4445
summary + 94 in 19.1s = 4.9/s Avg: 223 Min: 134 Max: 587 Err: 19 (20.21%) Active: 20 Started: 20 Finished: 0
summary + 183 in 30.2s = 6.1/s Avg: 247 Min: 90 Max: 499 Err: 18 (9.84%) Active: 30 Started: 30 Finished: 0
summary = 277 in 49.1s = 5.6/s Avg: 239 Min: 90 Max: 587 Err: 37 (13.36%)
summary + 81 in 30.4s = 2.7/s Avg: 157 Min: 79 Max: 400 Err: 51 (62.96%) Active: 3 Started: 30 Finished: 27
๏ผ“๏ผ–
summary = 358 in 80s = 4.5/s Avg: 220 Min: 79 Max: 587 Err: 88 (24.58%)
summary + 2 in 1.1s = 1.8/s Avg: 173 Min: 164 Max: 183 Err:
2 (100.00%) Active: 0 Started: 30 Finished: 30
summary = 360 in 82.3s = 4.4/s Avg: 220 Min: 79 Max: 587 Err: 90 (25.00%)
Tidying up ... @ Mon May 12 15:05:33 KST 2014 (1399874733227)
... end of run
jMeter GUI ๋ชจ๋“œ ์‹คํ–‰
jMeter ๋ฅผ non-GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ–ˆ์„ ๊ฒฝ์šฐ, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ํ™•์žฅ์ž๊ฐ€ โ€˜jtlโ€™์ธ ํŒŒ์ผ์— ์ €์žฅ๋œ๋‹ค. ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š”
jMeter ๋ฅผ GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๊ณ , ๊ฒฐ๊ณผ ํŒŒ์ผ์„ ๋กœ๋“œ(load)ํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
jMeter ๋ฅผ ์‹คํ–‰ํ•œ ํ›„, ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•  listener ๋ฅผ ์„ ํƒํ•œ๋‹ค. Listener ๋‚ด์—์„œ โ€˜Write results to file / Read from fileโ€™
๊ทธ๋ฃน์˜ โ€˜Filenameโ€™ ํ•ญ๋ชฉ์˜ โ€˜Browse โ€ฆโ€™ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค. ๋ฐฐ์น˜ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ jtl ํŒŒ์ผ์„ ์„ ํƒํ•˜๋ฉด ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ chart /
report ํ˜•์‹์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ์ž‘์„ฑ
โ€˜Reponse Times Over Timeโ€™, โ€˜Transactions per Secondsโ€™ ๋“ฑ์˜ listener ์—์„œ ์ƒ์„ฑ๋œ chart / graph ์ด๋ฏธ์ง€๋ฅผ
ํด๋ฆฝ๋ณด๋“œ๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜, CSV ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ(export)ํ•œ ํ›„ ์—‘์…€์—์„œ ํŽธ์ง‘ํ•˜๋Š” ๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ๋ฅผ
์ž‘์„ฑํ•œ๋‹ค. Listener ์˜ ๊ทธ๋ž˜ํ”„ ํ™”๋ฉด์„ ๋งˆ์šฐ์Šค๋กœ ์šฐํด๋ฆญํ•˜๋ฉด, ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆฝ๋ณด๋“œ๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜, CSV ๋กœ ์ถœ๋ ฅํ•˜๋Š”
์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด(context menu)๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.
๏ผ“๏ผ—

Mรกs contenido relacionado

La actualidad mรกs candente

[IMQA] performance consulting
[IMQA] performance consulting[IMQA] performance consulting
[IMQA] performance consultingIMQA
ย 
Jmeter para Aplicaciones Web
Jmeter para Aplicaciones WebJmeter para Aplicaciones Web
Jmeter para Aplicaciones Webred.es
ย 
How to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL serversHow to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL serversSimon J Mudd
ย 
Introduction to jmeter
Introduction to jmeterIntroduction to jmeter
Introduction to jmetertest test
ย 
Performance testing with Jmeter
Performance testing with JmeterPerformance testing with Jmeter
Performance testing with JmeterPrashanth Kumar
ย 
Using JMeter and Google Analytics for Software Performance Testing
Using JMeter and Google Analytics for Software Performance TestingUsing JMeter and Google Analytics for Software Performance Testing
Using JMeter and Google Analytics for Software Performance TestingXBOSoft
ย 
Performance testing and reporting with JMeter
Performance testing and reporting with JMeterPerformance testing and reporting with JMeter
Performance testing and reporting with JMeterjvSlideshare
ย 
Presentation on Apache Jmeter
Presentation on Apache JmeterPresentation on Apache Jmeter
Presentation on Apache JmeterSabitri Gaire
ย 
Load testing with J meter
Load testing with J meterLoad testing with J meter
Load testing with J meterManoj Shankaramanchi
ย 
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.IZabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.IAรฉcio Pires
ย 
Introduction to blazemeter and jmeter
Introduction to blazemeter and jmeterIntroduction to blazemeter and jmeter
Introduction to blazemeter and jmeterb4usolution .
ย 
Automation - Apache JMeter
Automation - Apache JMeterAutomation - Apache JMeter
Automation - Apache JMeterWira Santos
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Java Performance Tuning
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Java Performance Tuning[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Java Performance Tuning
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Java Performance TuningJi-Woong Choi
ย 
Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring SANG WON PARK
ย 
Apache kafka ํ™•์žฅ๊ณผ ์‘์šฉ
Apache kafka ํ™•์žฅ๊ณผ ์‘์šฉApache kafka ํ™•์žฅ๊ณผ ์‘์šฉ
Apache kafka ํ™•์žฅ๊ณผ ์‘์šฉJANGWONSEO4
ย 
Performance Testing using Jmeter and Capacity Testing
Performance Testing using Jmeter and Capacity TestingPerformance Testing using Jmeter and Capacity Testing
Performance Testing using Jmeter and Capacity TestingAkshay Patole
ย 

La actualidad mรกs candente (20)

[IMQA] performance consulting
[IMQA] performance consulting[IMQA] performance consulting
[IMQA] performance consulting
ย 
Jmeter para Aplicaciones Web
Jmeter para Aplicaciones WebJmeter para Aplicaciones Web
Jmeter para Aplicaciones Web
ย 
How to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL serversHow to set up orchestrator to manage thousands of MySQL servers
How to set up orchestrator to manage thousands of MySQL servers
ย 
Apache jMeter
Apache jMeterApache jMeter
Apache jMeter
ย 
JMeter
JMeterJMeter
JMeter
ย 
Introduction to jmeter
Introduction to jmeterIntroduction to jmeter
Introduction to jmeter
ย 
QSpiders - Introduction to JMeter
QSpiders - Introduction to JMeterQSpiders - Introduction to JMeter
QSpiders - Introduction to JMeter
ย 
Performance testing with Jmeter
Performance testing with JmeterPerformance testing with Jmeter
Performance testing with Jmeter
ย 
Using JMeter and Google Analytics for Software Performance Testing
Using JMeter and Google Analytics for Software Performance TestingUsing JMeter and Google Analytics for Software Performance Testing
Using JMeter and Google Analytics for Software Performance Testing
ย 
Performance testing and reporting with JMeter
Performance testing and reporting with JMeterPerformance testing and reporting with JMeter
Performance testing and reporting with JMeter
ย 
Presentation on Apache Jmeter
Presentation on Apache JmeterPresentation on Apache Jmeter
Presentation on Apache Jmeter
ย 
JMeter Intro
JMeter IntroJMeter Intro
JMeter Intro
ย 
Load testing with J meter
Load testing with J meterLoad testing with J meter
Load testing with J meter
ย 
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.IZabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
ย 
Introduction to blazemeter and jmeter
Introduction to blazemeter and jmeterIntroduction to blazemeter and jmeter
Introduction to blazemeter and jmeter
ย 
Automation - Apache JMeter
Automation - Apache JMeterAutomation - Apache JMeter
Automation - Apache JMeter
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Java Performance Tuning
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Java Performance Tuning[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Java Performance Tuning
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Java Performance Tuning
ย 
Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring
ย 
Apache kafka ํ™•์žฅ๊ณผ ์‘์šฉ
Apache kafka ํ™•์žฅ๊ณผ ์‘์šฉApache kafka ํ™•์žฅ๊ณผ ์‘์šฉ
Apache kafka ํ™•์žฅ๊ณผ ์‘์šฉ
ย 
Performance Testing using Jmeter and Capacity Testing
Performance Testing using Jmeter and Capacity TestingPerformance Testing using Jmeter and Capacity Testing
Performance Testing using Jmeter and Capacity Testing
ย 

Destacado

แ„ƒแ…ขแ„‹แ…ญแ†ผแ„…แ…ฃแ†ผแ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅแ„‹แ…ชแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„แ…ฒแ„‚แ…ตแ†ผ 8์žฅแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„‹แ…ฆแ†ซแ„Œแ…ตแ„‚แ…ตแ„‹แ…ฅแ„…แ…ตแ†ผแ„Œแ…ฅแ†ผแ„‹แ…ดแ„‹แ…ชแ„‡แ…ฅแ†ทแ„‹แ…ฑ
แ„ƒแ…ขแ„‹แ…ญแ†ผแ„…แ…ฃแ†ผแ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅแ„‹แ…ชแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„แ…ฒแ„‚แ…ตแ†ผ 8์žฅแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„‹แ…ฆแ†ซแ„Œแ…ตแ„‚แ…ตแ„‹แ…ฅแ„…แ…ตแ†ผแ„Œแ…ฅแ†ผแ„‹แ…ดแ„‹แ…ชแ„‡แ…ฅแ†ทแ„‹แ…ฑแ„ƒแ…ขแ„‹แ…ญแ†ผแ„…แ…ฃแ†ผแ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅแ„‹แ…ชแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„แ…ฒแ„‚แ…ตแ†ผ 8์žฅแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„‹แ…ฆแ†ซแ„Œแ…ตแ„‚แ…ตแ„‹แ…ฅแ„…แ…ตแ†ผแ„Œแ…ฅแ†ผแ„‹แ…ดแ„‹แ…ชแ„‡แ…ฅแ†ทแ„‹แ…ฑ
แ„ƒแ…ขแ„‹แ…ญแ†ผแ„…แ…ฃแ†ผแ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅแ„‹แ…ชแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„แ…ฒแ„‚แ…ตแ†ผ 8์žฅแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„‹แ…ฆแ†ซแ„Œแ…ตแ„‚แ…ตแ„‹แ…ฅแ„…แ…ตแ†ผแ„Œแ…ฅแ†ผแ„‹แ…ดแ„‹แ…ชแ„‡แ…ฅแ†ทแ„‹แ…ฑHyeonSeok Choi
ย 
Performance test
Performance testPerformance test
Performance testJaehong Park
ย 
[JCO 13th] ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์‹ค์Šต V1.3
[JCO 13th] ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์‹ค์Šต V1.3[JCO 13th] ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์‹ค์Šต V1.3
[JCO 13th] ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์‹ค์Šต V1.3Kenu, GwangNam Heo
ย 
Multi mechanize
Multi mechanizeMulti mechanize
Multi mechanizeSungMin OH
ย 
Server
ServerServer
ServerJuSangHa
ย 

Destacado (6)

แ„ƒแ…ขแ„‹แ…ญแ†ผแ„…แ…ฃแ†ผแ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅแ„‹แ…ชแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„แ…ฒแ„‚แ…ตแ†ผ 8์žฅแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„‹แ…ฆแ†ซแ„Œแ…ตแ„‚แ…ตแ„‹แ…ฅแ„…แ…ตแ†ผแ„Œแ…ฅแ†ผแ„‹แ…ดแ„‹แ…ชแ„‡แ…ฅแ†ทแ„‹แ…ฑ
แ„ƒแ…ขแ„‹แ…ญแ†ผแ„…แ…ฃแ†ผแ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅแ„‹แ…ชแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„แ…ฒแ„‚แ…ตแ†ผ 8์žฅแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„‹แ…ฆแ†ซแ„Œแ…ตแ„‚แ…ตแ„‹แ…ฅแ„…แ…ตแ†ผแ„Œแ…ฅแ†ผแ„‹แ…ดแ„‹แ…ชแ„‡แ…ฅแ†ทแ„‹แ…ฑแ„ƒแ…ขแ„‹แ…ญแ†ผแ„…แ…ฃแ†ผแ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅแ„‹แ…ชแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„แ…ฒแ„‚แ…ตแ†ผ 8์žฅแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„‹แ…ฆแ†ซแ„Œแ…ตแ„‚แ…ตแ„‹แ…ฅแ„…แ…ตแ†ผแ„Œแ…ฅแ†ผแ„‹แ…ดแ„‹แ…ชแ„‡แ…ฅแ†ทแ„‹แ…ฑ
แ„ƒแ…ขแ„‹แ…ญแ†ผแ„…แ…ฃแ†ผแ„‹แ…กแ„แ…ตแ„แ…ฆแ†จแ„Žแ…ฅแ„‹แ…ชแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„แ…ฒแ„‚แ…ตแ†ผ 8์žฅแ„‰แ…ฅแ†ผแ„‚แ…ณแ†ผแ„‹แ…ฆแ†ซแ„Œแ…ตแ„‚แ…ตแ„‹แ…ฅแ„…แ…ตแ†ผแ„Œแ…ฅแ†ผแ„‹แ…ดแ„‹แ…ชแ„‡แ…ฅแ†ทแ„‹แ…ฑ
ย 
Performance test
Performance testPerformance test
Performance test
ย 
Jmeter
JmeterJmeter
Jmeter
ย 
[JCO 13th] ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์‹ค์Šต V1.3
[JCO 13th] ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์‹ค์Šต V1.3[JCO 13th] ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์‹ค์Šต V1.3
[JCO 13th] ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ์‹ค์Šต V1.3
ย 
Multi mechanize
Multi mechanizeMulti mechanize
Multi mechanize
ย 
Server
ServerServer
Server
ย 

Similar a Performance test using_j_meter_ver1.2

Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2์ค‘์„  ๊ณฝ
ย 
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4uEngine Solutions
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Scouter ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๊ฐ€์ด๋“œ(JBoss)
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Scouter ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๊ฐ€์ด๋“œ(JBoss)[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Scouter ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๊ฐ€์ด๋“œ(JBoss)
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Scouter ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๊ฐ€์ด๋“œ(JBoss)Ji-Woong Choi
ย 
000001871277_1425351249536_0.35266743797617006
000001871277_1425351249536_0.35266743797617006000001871277_1425351249536_0.35266743797617006
000001871277_1425351249536_0.35266743797617006GeniNetworks
ย 
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆOnline service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ์ค‘์„  ๊ณฝ
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผHION IT
ย 
Oracle History #14
Oracle History #14Oracle History #14
Oracle History #14Kyung Sang Jang
ย 
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ Opennaru, inc.
ย 
์šฐ๋ฆฌ ์ œํ’ˆ์˜ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค ์†Œ๊ฐœ ์ž๋ฃŒ
์šฐ๋ฆฌ ์ œํ’ˆ์˜ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค ์†Œ๊ฐœ ์ž๋ฃŒ ์šฐ๋ฆฌ ์ œํ’ˆ์˜ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค ์†Œ๊ฐœ ์ž๋ฃŒ
์šฐ๋ฆฌ ์ œํ’ˆ์˜ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค ์†Œ๊ฐœ ์ž๋ฃŒ SangIn Choung
ย 
Performance consulting
Performance consultingPerformance consulting
Performance consultingIMQA
ย 
ํˆฌ๋น„์›จ์–ด AgitarOne Junit ๋‹จ์œ„ํ…Œ์ŠคํŠธ์ž๋™ํ™” ์†”๋ฃจ์…˜์†Œ๊ฐœ_201608_v1.2
ํˆฌ๋น„์›จ์–ด AgitarOne Junit ๋‹จ์œ„ํ…Œ์ŠคํŠธ์ž๋™ํ™” ์†”๋ฃจ์…˜์†Œ๊ฐœ_201608_v1.2ํˆฌ๋น„์›จ์–ด AgitarOne Junit ๋‹จ์œ„ํ…Œ์ŠคํŠธ์ž๋™ํ™” ์†”๋ฃจ์…˜์†Œ๊ฐœ_201608_v1.2
ํˆฌ๋น„์›จ์–ด AgitarOne Junit ๋‹จ์œ„ํ…Œ์ŠคํŠธ์ž๋™ํ™” ์†”๋ฃจ์…˜์†Œ๊ฐœ_201608_v1.2tobeware
ย 
mathworks_installation_help_ko_KR.pdf
mathworks_installation_help_ko_KR.pdfmathworks_installation_help_ko_KR.pdf
mathworks_installation_help_ko_KR.pdfalex401360
ย 
แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‘แ…ณแ„…แ…ฉแ„‰แ…ฆแ„‰แ…ณแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ แ„Œแ…ตแ„‰แ…ฉแ†จแ„Œแ…ฅแ†จ แ„แ…ฉแ†ผแ„’แ…กแ†ธ
แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‘แ…ณแ„…แ…ฉแ„‰แ…ฆแ„‰แ…ณแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ แ„Œแ…ตแ„‰แ…ฉแ†จแ„Œแ…ฅแ†จ แ„แ…ฉแ†ผแ„’แ…กแ†ธแ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‘แ…ณแ„…แ…ฉแ„‰แ…ฆแ„‰แ…ณแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ แ„Œแ…ตแ„‰แ…ฉแ†จแ„Œแ…ฅแ†จ แ„แ…ฉแ†ผแ„’แ…กแ†ธ
แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‘แ…ณแ„…แ…ฉแ„‰แ…ฆแ„‰แ…ณแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ แ„Œแ…ตแ„‰แ…ฉแ†จแ„Œแ…ฅแ†จ แ„แ…ฉแ†ผแ„’แ…กแ†ธํ™๋ ฌ ์ž„
ย 
(์• ์ž์ผ) ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ ์ƒ˜ํ”Œ
(์• ์ž์ผ) ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ ์ƒ˜ํ”Œ(์• ์ž์ผ) ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ ์ƒ˜ํ”Œ
(์• ์ž์ผ) ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ ์ƒ˜ํ”ŒSangIn Choung
ย 
SW ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค& ๋ฉ”๋‰ด์–ผ_V ๋ชจ๋ธ
SW ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค& ๋ฉ”๋‰ด์–ผ_V ๋ชจ๋ธSW ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค& ๋ฉ”๋‰ด์–ผ_V ๋ชจ๋ธ
SW ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค& ๋ฉ”๋‰ด์–ผ_V ๋ชจ๋ธKU HUISEONG
ย 
2015 SINVAS USER CONFERENCE - SINVAS ํ”Œ๋žซํผ์„ ํ™œ์šฉํ•œ ์ •๋ณด์‹œ์Šคํ…œ ์œ ์ง€๋ณด์ˆ˜ ๋ฐฉ์•ˆ
2015 SINVAS USER CONFERENCE - SINVAS ํ”Œ๋žซํผ์„ ํ™œ์šฉํ•œ ์ •๋ณด์‹œ์Šคํ…œ ์œ ์ง€๋ณด์ˆ˜ ๋ฐฉ์•ˆ2015 SINVAS USER CONFERENCE - SINVAS ํ”Œ๋žซํผ์„ ํ™œ์šฉํ•œ ์ •๋ณด์‹œ์Šคํ…œ ์œ ์ง€๋ณด์ˆ˜ ๋ฐฉ์•ˆ
2015 SINVAS USER CONFERENCE - SINVAS ํ”Œ๋žซํผ์„ ํ™œ์šฉํ•œ ์ •๋ณด์‹œ์Šคํ…œ ์œ ์ง€๋ณด์ˆ˜ ๋ฐฉ์•ˆSuji Lee
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผHION IT
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผHION IT
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410 ZT420 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410 ZT420 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410 ZT420 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410 ZT420 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผHION IT
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410RFID ZT420RFID ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410RFID ZT420RFID ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410RFID ZT420RFID ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410RFID ZT420RFID ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผHION IT
ย 

Similar a Performance test using_j_meter_ver1.2 (20)

Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2
ย 
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4
ย 
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Scouter ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๊ฐ€์ด๋“œ(JBoss)
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Scouter ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๊ฐ€์ด๋“œ(JBoss)[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Scouter ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๊ฐ€์ด๋“œ(JBoss)
[์˜คํ”ˆ์†Œ์Šค์ปจ์„คํŒ…]Scouter ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๊ฐ€์ด๋“œ(JBoss)
ย 
000001871277_1425351249536_0.35266743797617006
000001871277_1425351249536_0.35266743797617006000001871277_1425351249536_0.35266743797617006
000001871277_1425351249536_0.35266743797617006
ย 
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆOnline service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ
ย 
Oracle History #14
Oracle History #14Oracle History #14
Oracle History #14
ย 
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ
ย 
์šฐ๋ฆฌ ์ œํ’ˆ์˜ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค ์†Œ๊ฐœ ์ž๋ฃŒ
์šฐ๋ฆฌ ์ œํ’ˆ์˜ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค ์†Œ๊ฐœ ์ž๋ฃŒ ์šฐ๋ฆฌ ์ œํ’ˆ์˜ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค ์†Œ๊ฐœ ์ž๋ฃŒ
์šฐ๋ฆฌ ์ œํ’ˆ์˜ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค ์†Œ๊ฐœ ์ž๋ฃŒ
ย 
Performance consulting
Performance consultingPerformance consulting
Performance consulting
ย 
ํˆฌ๋น„์›จ์–ด AgitarOne Junit ๋‹จ์œ„ํ…Œ์ŠคํŠธ์ž๋™ํ™” ์†”๋ฃจ์…˜์†Œ๊ฐœ_201608_v1.2
ํˆฌ๋น„์›จ์–ด AgitarOne Junit ๋‹จ์œ„ํ…Œ์ŠคํŠธ์ž๋™ํ™” ์†”๋ฃจ์…˜์†Œ๊ฐœ_201608_v1.2ํˆฌ๋น„์›จ์–ด AgitarOne Junit ๋‹จ์œ„ํ…Œ์ŠคํŠธ์ž๋™ํ™” ์†”๋ฃจ์…˜์†Œ๊ฐœ_201608_v1.2
ํˆฌ๋น„์›จ์–ด AgitarOne Junit ๋‹จ์œ„ํ…Œ์ŠคํŠธ์ž๋™ํ™” ์†”๋ฃจ์…˜์†Œ๊ฐœ_201608_v1.2
ย 
mathworks_installation_help_ko_KR.pdf
mathworks_installation_help_ko_KR.pdfmathworks_installation_help_ko_KR.pdf
mathworks_installation_help_ko_KR.pdf
ย 
แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‘แ…ณแ„…แ…ฉแ„‰แ…ฆแ„‰แ…ณแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ แ„Œแ…ตแ„‰แ…ฉแ†จแ„Œแ…ฅแ†จ แ„แ…ฉแ†ผแ„’แ…กแ†ธ
แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‘แ…ณแ„…แ…ฉแ„‰แ…ฆแ„‰แ…ณแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ แ„Œแ…ตแ„‰แ…ฉแ†จแ„Œแ…ฅแ†จ แ„แ…ฉแ†ผแ„’แ…กแ†ธแ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‘แ…ณแ„…แ…ฉแ„‰แ…ฆแ„‰แ…ณแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ แ„Œแ…ตแ„‰แ…ฉแ†จแ„Œแ…ฅแ†จ แ„แ…ฉแ†ผแ„’แ…กแ†ธ
แ„’แ…ญแ„‹แ…ฒแ†ฏแ„Œแ…ฅแ†จแ„‹แ…ตแ†ซ แ„€แ…ขแ„‡แ…กแ†ฏ แ„‘แ…ณแ„…แ…ฉแ„‰แ…ฆแ„‰แ…ณแ„…แ…ณแ†ฏ แ„‹แ…ฑแ„’แ…กแ†ซ แ„Œแ…ตแ„‰แ…ฉแ†จแ„Œแ…ฅแ†จ แ„แ…ฉแ†ผแ„’แ…กแ†ธ
ย 
(์• ์ž์ผ) ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ ์ƒ˜ํ”Œ
(์• ์ž์ผ) ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ ์ƒ˜ํ”Œ(์• ์ž์ผ) ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ ์ƒ˜ํ”Œ
(์• ์ž์ผ) ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ ์ƒ˜ํ”Œ
ย 
SW ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค& ๋ฉ”๋‰ด์–ผ_V ๋ชจ๋ธ
SW ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค& ๋ฉ”๋‰ด์–ผ_V ๋ชจ๋ธSW ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค& ๋ฉ”๋‰ด์–ผ_V ๋ชจ๋ธ
SW ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค& ๋ฉ”๋‰ด์–ผ_V ๋ชจ๋ธ
ย 
2015 SINVAS USER CONFERENCE - SINVAS ํ”Œ๋žซํผ์„ ํ™œ์šฉํ•œ ์ •๋ณด์‹œ์Šคํ…œ ์œ ์ง€๋ณด์ˆ˜ ๋ฐฉ์•ˆ
2015 SINVAS USER CONFERENCE - SINVAS ํ”Œ๋žซํผ์„ ํ™œ์šฉํ•œ ์ •๋ณด์‹œ์Šคํ…œ ์œ ์ง€๋ณด์ˆ˜ ๋ฐฉ์•ˆ2015 SINVAS USER CONFERENCE - SINVAS ํ”Œ๋žซํผ์„ ํ™œ์šฉํ•œ ์ •๋ณด์‹œ์Šคํ…œ ์œ ์ง€๋ณด์ˆ˜ ๋ฐฉ์•ˆ
2015 SINVAS USER CONFERENCE - SINVAS ํ”Œ๋žซํผ์„ ํ™œ์šฉํ•œ ์ •๋ณด์‹œ์Šคํ…œ ์œ ์ง€๋ณด์ˆ˜ ๋ฐฉ์•ˆ
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410 ZT420 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410 ZT420 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410 ZT420 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410 ZT420 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410RFID ZT420RFID ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410RFID ZT420RFID ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410RFID ZT420RFID ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT410RFID ZT420RFID ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
ย 

Mรกs de Tommy Lee

์ƒˆํ•˜๋Š˜๊ณผ ์ƒˆ๋•…-๋ฆฌ์ฐจ๋“œ ๋ฏธ๋“คํ„ด
์ƒˆํ•˜๋Š˜๊ณผ ์ƒˆ๋•…-๋ฆฌ์ฐจ๋“œ ๋ฏธ๋“คํ„ด์ƒˆํ•˜๋Š˜๊ณผ ์ƒˆ๋•…-๋ฆฌ์ฐจ๋“œ ๋ฏธ๋“คํ„ด
์ƒˆํ•˜๋Š˜๊ณผ ์ƒˆ๋•…-๋ฆฌ์ฐจ๋“œ ๋ฏธ๋“คํ„ดTommy Lee
ย 
ํ•˜๋‚˜๋‹˜์˜ ์•„ํ””์˜์‹ ํ•™ 20180131
ํ•˜๋‚˜๋‹˜์˜ ์•„ํ””์˜์‹ ํ•™ 20180131ํ•˜๋‚˜๋‹˜์˜ ์•„ํ””์˜์‹ ํ•™ 20180131
ํ•˜๋‚˜๋‹˜์˜ ์•„ํ””์˜์‹ ํ•™ 20180131Tommy Lee
ย 
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• ํ†ตํ•ฉ
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• ํ†ตํ•ฉ๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• ํ†ตํ•ฉ
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• ํ†ตํ•ฉTommy Lee
ย 
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• 1์žฅ-4์žฅ
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• 1์žฅ-4์žฅ๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• 1์žฅ-4์žฅ
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• 1์žฅ-4์žฅTommy Lee
ย 
์˜ˆ์ˆ˜์™•์˜๋ณต์Œ
์˜ˆ์ˆ˜์™•์˜๋ณต์Œ์˜ˆ์ˆ˜์™•์˜๋ณต์Œ
์˜ˆ์ˆ˜์™•์˜๋ณต์ŒTommy Lee
ย 
Grub2 and troubleshooting_ol7_boot_problems
Grub2 and troubleshooting_ol7_boot_problemsGrub2 and troubleshooting_ol7_boot_problems
Grub2 and troubleshooting_ol7_boot_problemsTommy Lee
ย 
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-CRUI
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-CRUI์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-CRUI
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-CRUITommy Lee
ย 
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜- IBM Bluemix
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜- IBM Bluemix์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜- IBM Bluemix
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜- IBM BluemixTommy Lee
ย 
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Ranchers
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Ranchers์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Ranchers
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-RanchersTommy Lee
ย 
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-AI
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-AI์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-AI
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-AITommy Lee
ย 
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Asible
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Asible์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Asible
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-AsibleTommy Lee
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - lustre
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - lustre์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - lustre
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - lustreTommy Lee
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Nagios
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Nagios์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Nagios
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - NagiosTommy Lee
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL Performance
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL Performance์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL Performance
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL PerformanceTommy Lee
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQLTommy Lee
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - JuJu
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - JuJu์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - JuJu
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - JuJuTommy Lee
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Pacemaker
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Pacemaker์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Pacemaker
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - PacemakerTommy Lee
ย 
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-3๋ถ€-์šฐ์ฃผ์ ํšŒ๋ณต์—๋Œ€ํ•œ์‹ ์•ฝ์˜๋น„์ „
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-3๋ถ€-์šฐ์ฃผ์ ํšŒ๋ณต์—๋Œ€ํ•œ์‹ ์•ฝ์˜๋น„์ „์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-3๋ถ€-์šฐ์ฃผ์ ํšŒ๋ณต์—๋Œ€ํ•œ์‹ ์•ฝ์˜๋น„์ „
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-3๋ถ€-์šฐ์ฃผ์ ํšŒ๋ณต์—๋Œ€ํ•œ์‹ ์•ฝ์˜๋น„์ „Tommy Lee
ย 
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-2๋ถ€-๊ตฌ์•ฝ์—์„œ์˜์ด์ฒด์ ๊ตฌ์›
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-2๋ถ€-๊ตฌ์•ฝ์—์„œ์˜์ด์ฒด์ ๊ตฌ์›์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-2๋ถ€-๊ตฌ์•ฝ์—์„œ์˜์ด์ฒด์ ๊ตฌ์›
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-2๋ถ€-๊ตฌ์•ฝ์—์„œ์˜์ด์ฒด์ ๊ตฌ์›Tommy Lee
ย 
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… Part1
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… Part1์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… Part1
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… Part1Tommy Lee
ย 

Mรกs de Tommy Lee (20)

์ƒˆํ•˜๋Š˜๊ณผ ์ƒˆ๋•…-๋ฆฌ์ฐจ๋“œ ๋ฏธ๋“คํ„ด
์ƒˆํ•˜๋Š˜๊ณผ ์ƒˆ๋•…-๋ฆฌ์ฐจ๋“œ ๋ฏธ๋“คํ„ด์ƒˆํ•˜๋Š˜๊ณผ ์ƒˆ๋•…-๋ฆฌ์ฐจ๋“œ ๋ฏธ๋“คํ„ด
์ƒˆํ•˜๋Š˜๊ณผ ์ƒˆ๋•…-๋ฆฌ์ฐจ๋“œ ๋ฏธ๋“คํ„ด
ย 
ํ•˜๋‚˜๋‹˜์˜ ์•„ํ””์˜์‹ ํ•™ 20180131
ํ•˜๋‚˜๋‹˜์˜ ์•„ํ””์˜์‹ ํ•™ 20180131ํ•˜๋‚˜๋‹˜์˜ ์•„ํ””์˜์‹ ํ•™ 20180131
ํ•˜๋‚˜๋‹˜์˜ ์•„ํ””์˜์‹ ํ•™ 20180131
ย 
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• ํ†ตํ•ฉ
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• ํ†ตํ•ฉ๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• ํ†ตํ•ฉ
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• ํ†ตํ•ฉ
ย 
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• 1์žฅ-4์žฅ
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• 1์žฅ-4์žฅ๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• 1์žฅ-4์žฅ
๊ทธ๋ฆฌ์Šค๋„์ธ์˜๋ฏธ๋• 1์žฅ-4์žฅ
ย 
์˜ˆ์ˆ˜์™•์˜๋ณต์Œ
์˜ˆ์ˆ˜์™•์˜๋ณต์Œ์˜ˆ์ˆ˜์™•์˜๋ณต์Œ
์˜ˆ์ˆ˜์™•์˜๋ณต์Œ
ย 
Grub2 and troubleshooting_ol7_boot_problems
Grub2 and troubleshooting_ol7_boot_problemsGrub2 and troubleshooting_ol7_boot_problems
Grub2 and troubleshooting_ol7_boot_problems
ย 
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-CRUI
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-CRUI์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-CRUI
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-CRUI
ย 
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜- IBM Bluemix
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜- IBM Bluemix์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜- IBM Bluemix
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜- IBM Bluemix
ย 
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Ranchers
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Ranchers์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Ranchers
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Ranchers
ย 
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-AI
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-AI์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-AI
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-AI
ย 
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Asible
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Asible์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Asible
์ œ4ํšŒ ํ•œ๊ตญIBM๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ ์„ธ๋ฏธ๋‚˜-Asible
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - lustre
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - lustre์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - lustre
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - lustre
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Nagios
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Nagios์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Nagios
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Nagios
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL Performance
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL Performance์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL Performance
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL Performance
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - MySQL
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - JuJu
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - JuJu์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - JuJu
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - JuJu
ย 
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Pacemaker
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Pacemaker์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Pacemaker
์ œ3ํšŒ๋‚œ๊ณต๋ถˆ๋ฝ ์˜คํ”ˆ์†Œ์Šค ์ธํ”„๋ผ์„ธ๋ฏธ๋‚˜ - Pacemaker
ย 
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-3๋ถ€-์šฐ์ฃผ์ ํšŒ๋ณต์—๋Œ€ํ•œ์‹ ์•ฝ์˜๋น„์ „
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-3๋ถ€-์šฐ์ฃผ์ ํšŒ๋ณต์—๋Œ€ํ•œ์‹ ์•ฝ์˜๋น„์ „์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-3๋ถ€-์šฐ์ฃผ์ ํšŒ๋ณต์—๋Œ€ํ•œ์‹ ์•ฝ์˜๋น„์ „
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-3๋ถ€-์šฐ์ฃผ์ ํšŒ๋ณต์—๋Œ€ํ•œ์‹ ์•ฝ์˜๋น„์ „
ย 
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-2๋ถ€-๊ตฌ์•ฝ์—์„œ์˜์ด์ฒด์ ๊ตฌ์›
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-2๋ถ€-๊ตฌ์•ฝ์—์„œ์˜์ด์ฒด์ ๊ตฌ์›์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-2๋ถ€-๊ตฌ์•ฝ์—์„œ์˜์ด์ฒด์ ๊ตฌ์›
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… ๋ถํ†ก-2๋ถ€-๊ตฌ์•ฝ์—์„œ์˜์ด์ฒด์ ๊ตฌ์›
ย 
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… Part1
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… Part1์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… Part1
์ƒˆํ•˜๋Š˜๊ณผ์ƒˆ๋•… Part1
ย 

Performance test using_j_meter_ver1.2

  • 2. ๏ผ’ Table of Contents 1. jMeter ์„ค์น˜ ................................................................................................................... ๏ผ• 1.1. jMeter ๊ฐœ์š” ๋ฐ ํ™œ์šฉ ๋ฐฉ์•ˆ.............................................................................................. ๏ผ• ๊ธฐ๋Šฅ ์ ๊ฒ€ ...................................................................................................................... ๏ผ• ์ˆ˜์šฉ๋Ÿ‰ ์ธก์ •.................................................................................................................... ๏ผ• ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ.................................................................................................................... ๏ผ• 1.2. jMeter ์„ค์น˜ .............................................................................................................. ๏ผ• jMeter ์„ค์น˜ ๋ฐ ์‹คํ–‰.......................................................................................................... ๏ผ– 1.3. jMeter ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ .................................................................................................. ๏ผ– 2. jMeter TestPlan ์ž‘์„ฑ ์ ˆ์ฐจ ................................................................................................. ๏ผ— 2.1. jMeter UI ................................................................................................................. ๏ผ— 2.2. TestPlan ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์šฉ์–ด ........................................................................................... ๏ผ˜ Thread Groups (Users)....................................................................................................... ๏ผ™ Sampler (Unit Test) .......................................................................................................... ๏ผ™ Config Element ............................................................................................................... ๏ผ™ Listener (Report) ............................................................................................................. ๏ผ™ 2.3. TestPlan ์ž‘์„ฑ ์ ˆ์ฐจ ..................................................................................................... ๏ผ™ TestPlan ๊ธฐ๋ณธ์ •๋ณด ์ž…๋ ฅ ..................................................................................................... ๏ผ™ Config Element ์ถ”๊ฐ€ .......................................................................................................๏ผ‘๏ผ HTTP Request Defaults ............................................................................................. ๏ผ‘๏ผ HTTP Header Manager .............................................................................................. ๏ผ‘๏ผ HTTP Cookie Manager............................................................................................... ๏ผ‘๏ผ‘ Thread Group ์ถ”๊ฐ€ .........................................................................................................๏ผ‘๏ผ‘ Listener ์ถ”๊ฐ€ ................................................................................................................๏ผ‘๏ผ’ View Results Tree.................................................................................................... ๏ผ‘๏ผ’ Summary Report ..................................................................................................... ๏ผ‘๏ผ“ View Results in Table ............................................................................................... ๏ผ‘๏ผ” Sampler ์ถ”๊ฐ€ ................................................................................................................๏ผ‘๏ผ” 3. OpenAPI ํ…Œ์ŠคํŠธ ๊ณ„ํš......................................................................................................๏ผ‘๏ผ– ํ…Œ์ŠคํŠธ ๋ชฉ์  ....................................................................................................................๏ผ‘๏ผ– ํ…Œ์ŠคํŠธ ๊ฐœ์š” ....................................................................................................................๏ผ‘๏ผ– ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณ„ํš (Functional Test Plan)..................................................................................๏ผ‘๏ผ– ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ ...........................................................................................................๏ผ‘๏ผ– User Defined Variables ....................................................................................................๏ผ‘๏ผ– Thread Group ...............................................................................................................๏ผ‘๏ผ˜ Config Element .............................................................................................................๏ผ‘๏ผ˜ HTTP Request Sampler ....................................................................................................๏ผ’๏ผ ์‚ฌ์šฉ์ž ๋“ฑ๋ก ........................................................................................................... ๏ผ’๏ผ ์‚ฌ์šฉ์ž ์ธ์ฆ ........................................................................................................... ๏ผ’๏ผ‘ JSON Assertion..............................................................................................................๏ผ’๏ผ’ JSON Path Assertion................................................................................................. ๏ผ’๏ผ’ JSON Path Extractor................................................................................................. ๏ผ’๏ผ“ BeanShell Assertion.................................................................................................. ๏ผ’๏ผ“ Listener (View Results Tree) .............................................................................................๏ผ’๏ผ” ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ณ„ํš (Load Test Plan) .........................................................................................๏ผ’๏ผ• ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ............................................................................................................๏ผ’๏ผ• ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ ...........................................................................................................๏ผ’๏ผ• CSV Data ์ƒ์„ฑ...............................................................................................................๏ผ’๏ผ– CSV Data Set Config........................................................................................................๏ผ’๏ผ– Thread Group ...............................................................................................................๏ผ’๏ผ— Timer (Constant & Uniform Random)...................................................................................๏ผ’๏ผ˜ Listener (Report) ...........................................................................................................๏ผ’๏ผ™
  • 3. ๏ผ“ Aggregate Graph (or Aggregate Report) ......................................................................... ๏ผ’๏ผ™ Response Time over Time .......................................................................................... ๏ผ“๏ผ Transactions per Seconds .......................................................................................... ๏ผ“๏ผ‘ 4. ๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰.................................................................................................๏ผ“๏ผ’ ์ค€๋น„ ์‚ฌํ•ญ .......................................................................................................................๏ผ“๏ผ’ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ........................................................................................................๏ผ“๏ผ’ jMeter ์‹คํ–‰..................................................................................................................๏ผ“๏ผ’ Test Plan ์‹คํ–‰ (๊ธฐ๋Šฅ) ......................................................................................................๏ผ“๏ผ“ ์‹คํ–‰ ๊ฒฐ๊ณผ ๊ฒ€ํ†  ..............................................................................................................๏ผ“๏ผ“ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ........................................................................................................๏ผ“๏ผ“ CSV generator ์‹คํ–‰ ........................................................................................................๏ผ“๏ผ” Test Plan ์‹คํ–‰ ..............................................................................................................๏ผ“๏ผ” jMeter GUI ๋ชจ๋“œ ์‹คํ–‰ ......................................................................................................๏ผ“๏ผ– ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ์ž‘์„ฑ ...........................................................................................................๏ผ“๏ผ–
  • 4. ๏ผ” Document Overview ๏ฎ Purpose ๋ณธ๋ฌธ์„œ๋Š” ์„œ๋ฒ„ Open API ์„ฑ๋Šฅ ํ‰๊ฐ€ ์ ˆ์ฐจ๋ฅผ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค. ๏ฎ Scope Fron-End Server ์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด jMeter ๋ฅผ ์ด์šฉํ•ด stress test ๋ฅผ ์‹ค์‹œํ•œ๋‹ค.
  • 5. ๏ผ• 1. jMeter ์„ค์น˜ jMeter ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ถ”๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ(plugin)์„ ์„ค์น˜ํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์š”์•ฝํ•˜์˜€๋‹ค. 1.1. jMeter ๊ฐœ์š” ๋ฐ ํ™œ์šฉ ๋ฐฉ์•ˆ jMeter ๋Š” ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(load test) ๋ฐ ์„ฑ๋Šฅ ํ‰๊ฐ€ (measure performance)๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ๋ฐ์Šคํฌํ†ฑ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค. jMeter ๋ฅผ ์ด์šฉํ•ด ์ •์ /๋™์  ์›น ์ปจํ…์ธ , FTP, mail, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, NoSQL ๋“ฑ์˜ ์„ฑ๋Šฅ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. Open API ์„œ๋ฒ„์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์ ๊ฒ€ (๋‹จ์œ„ ํ…Œ์ŠคํŠธ), ์ˆ˜์šฉ๋Ÿ‰ ์ธก์ • ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์— ์ ์šฉํ•œ๋‹ค. ๊ธฐ๋Šฅ ์ ๊ฒ€ Open API ์˜ ์‚ฌ์šฉ์ž ์ •๋ณด, ๊ฒŒ์ž„ ์ •๋ณด, ์ฑ„๋„ ์ •๋ณด ๋ฐ ์ปจํ…์ธ  ์ •๋ณด ์„œ๋น„์Šค์— ํฌํ•จ๋œ ๊ฐ๊ฐ์˜ API ์— ๋Œ€ํ•œ ์ •์ƒ ๋™์ž‘ ์œ ๋ฌด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์˜ ๋ชฉ์ ์€ โ€˜์ง€์†์ ์ธ ํ’ˆ์งˆ ํ™•๋ณดโ€™์ด๋‹ค. ๏ฌ Open API ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ๊ฐœ์„ , ๋ฒ„๊ทธ ์ˆ˜์ •์— ๋”ฐ๋ฅธ ๋ณ€๊ฒฝ ์‹œ, ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ์‹ค์‹œ ๏ฌ Development, Stage, Product ํ™˜๊ฒฝ์œผ๋กœ ์ดํ–‰(transfer) ์‹œ ์ •์ƒ ๋ฐฐํฌ ์—ฌ๋ถ€ ํŒ์ • ์ˆ˜์šฉ๋Ÿ‰ ์ธก์ • ์‚ฌ์šฉ์ž์˜ ์„œ๋น„์Šค ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์˜ˆ์ธกํ•˜์—ฌ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ธฐ๋ฐ˜์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(ํ˜น์€ ๊ณ„ํš)์„ ์ž‘์„ฑํ•˜๊ณ , ์ด๋ฅผ ์ด์šฉํ•ด ์„œ๋น„์Šค ํ™˜๊ฒฝ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜(simulation) ํ•œ๋‹ค. ๋‹ค์ˆ˜์˜ ๊ฐ€์ƒ ์‚ฌ์šฉ์ž(virtual user)๊ฐ€ ์ ‘์†ํ•˜์—ฌ, ์†Œ๊ทœ๋ชจ ์„œ๋ฒ„์—์„œ ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ ๋™์‹œ ์‚ฌ์šฉ์ž ์ˆ˜(ํ˜น์€ ์ ์ • ์‚ฌ์šฉ์ž ์ˆ˜)๋ฅผ ์‚ฐ์ถœํ•œ๋‹ค. ์ˆ˜์šฉ๋Ÿ‰ ์ธก์ •์˜ ๋ชฉ์ ์€ โ€˜์‹œ์Šคํ…œ ํ™•์žฅ ๋ฐ ์šด์˜ ๊ณ„ํšโ€™ ์ˆ˜๋ฆฝ์„ ์œ„ํ•œ ๊ธฐ์ดˆ ์ž๋ฃŒ ํ™•๋ณด์ด๋‹ค. ๏ฌ ์‚ฌ์šฉ์ž์˜ ์„œ๋น„์Šค ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค ์˜ˆ์ธก ๏ฌ ์˜ˆ์ƒ ์‹œ๋‚˜๋ฆฌ์˜ค ๊ธฐ๋ฐ˜์˜ ํ…Œ์ŠคํŠธ ๊ณ„ํš ์ž‘์„ฑ ๏ฌ ๊ฐœ๋ฐœ ๋ฐ stage ์„œ๋ฒ„ ๋Œ€์ƒ์˜ ๋™์‹œ ์ ‘์† ๋ฐ ์„œ๋น„์Šค ์šด์˜ ํ…Œ์ŠคํŠธ ์‹ค์‹œ ๏ฌ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์ด์šฉํ•ด ์ˆ˜์šฉ ๊ฐ€๋Šฅ๋Ÿ‰, ์ž์› ์†Œ๋ชจ๋Ÿ‰ (CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ)์„ ์ธก์ •ํ•œ๋‹ค. ๏ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ–ฅํ›„ ์„œ๋ฒ„ ํ™•์žฅ ๋ฐ ์Šค์ผ€์ผ ์ž๋™ํ™” (auto-scale) ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ๋ชฉ์ ์€ ํ•˜๋“œ์›จ์–ด, ์†Œํ”„ํŠธ์›จ์–ด, ๋„คํŠธ์›Œํฌ ๋“ฑ ์„œ๋ฒ„ ์•„ํ‚คํ…์ฒ˜ ์ „๋ฐ˜์— ๊ฑธ์นœ ์•ˆ์ •์„ฑ ์ ๊ฒ€, ์ทจ์•ฝ์  ๋ถ„์„ ๋ฐ ์Šค์ผ€์ผ ์ž๋™ํ™”์˜ ๋ชจ์˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์ด๋‹ค. jMeter ๋ฅผ ๋‹ค์ˆ˜์˜ ์—์ด์ „ํŠธ ์„œ๋ฒ„์— ์„ค์น˜ํ•œ ํ›„, ๋™์‹œ์— ์ˆ˜๋ฐฑ/์ˆ˜์ฒœ์— ์ด๋ฅด๋Š” ์‚ฌ์šฉ์ž ์ ‘์†์„ ์‹œ๋„ํ•˜์—ฌ, ์‹œ์Šคํ…œ ์‘๋‹ต ์„ฑ๋Šฅ๊ณผ ์„œ๋ฒ„ ์ž์›์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ์ˆ˜ํ–‰ ๋ฐฉ์‹์€ ์ˆ˜์šฉ๋Ÿ‰ ์ธก์ •๊ณผ ๋™์ผํ•˜๋‚˜, ์˜๋„์ ์œผ๋กœ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ๋ฅผ ์œ ๋„ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ฅธ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค. ๋˜ํ•œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ์—๋Š” ์‘๋‹ต ์†๋„ ๋“ฑ ์„ฑ๋Šฅ ์ธก์ • ๋ณด๋‹ค๋Š” ์ทจ์•ฝ์ (๊ฐœ์„ ์ )์„ ์ฐพ๋Š”๋ฐ ์ฃผ๋ ฅํ•œ๋‹ค. 1.2. jMeter ์„ค์น˜ jMeter ๋Š” ์˜คํ”ˆ ์†Œ์Šค์ด๋ฉฐ, ์•„ํŒŒ์น˜ ํ™ˆํŽ˜์ด์ง€์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. Open API ๊ฐ€ RESTful ๋ฐฉ์‹์ด๊ณ  ์‘๋‹ต ๋ฐ์ดํ„ฐ ํ˜•์‹์ด JSON ์ด๋ฏ€๋กœ, JSON ๋ฐ์ดํ„ฐ ํ•ด์„(parsing)์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.
  • 6. ๏ผ– jMeter ์„ค์น˜ ๋ฐ ์‹คํ–‰ jMeter ๋Š” GUI ๋ฐ CLI ๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋ฉฐ, jMeter ํ…Œ์ŠคํŠธ ๊ณ„ํš(test plan)์„ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜, ์ˆ˜๋™์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐœ๋ฐœ PC ์— jMeter ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์‹œํ•  ๊ฒฝ์šฐ์—๋Š” ์„œ๋ฒ„ ์ƒ์—์„œ jMeter ๋ฅผ ์„ค์น˜ํ•œ๋‹ค. jMeter ๋ฅผ ๊ฐœ๋ฐœ PC ์— ์„ค์น˜ํ•˜๊ธฐ ์ด์ „์— JDK 1.6 ์ด์ƒ์˜ ๋ฒ„์ „์„ PC ์— ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ๏ฌ http://jmeter.apache.org/download_jmeter.cgi ์—์„œ jMeter ์••์ถ• ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๋‹ค. ๏ฌ ์ ์ ˆํ•œ ํด๋” ์œ„์น˜์— ์••์ถ• ํŒŒ์ผ์„ ํ•ด์ œํ•œ๋‹ค. ๏ฌ ${JMETER_HOME}/bin/jMeter.bat ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด jMeter GUI ๊ฐ€ ์‹คํ–‰๋œ๋‹ค. Report / Graph DBMS Amazon Cloud Web / WAS Remote Client jMeter #1 jMeter #2 jMeter #n Run Stress Tess HTTP Requests HTTP Responses 1.3. jMeter ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ Open API ์˜ ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑ(parsing)ํ•˜๊ณ , ์„œ๋น„์Šค์˜ ์ •์ƒ ์ˆ˜ํ–‰ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด JSON Path Assertion ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. jMeter ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” jMeter version 2.8 ์ด์ƒ์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ๏ฌ http://jmeter-plugins.org/#/ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ๋‹ค. ๏ฌ โ€˜Extras with Libs Setโ€™ ์„ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค. ๏ฌ ์••์ถ• ํŒŒ์ผ์„ ํ•ด์ œํ•˜๋ฉด, lib ํด๋” ์•ˆ์— jar ํŒŒ์ผ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ jar ํŒŒ์ผ๋“ค์„ jMeter ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์— ์œ„์น˜ํ•œ lib ํด๋”์— ๋„ฃ๋Š”๋‹ค.
  • 7. ๏ผ— 2. jMeter TestPlan ์ž‘์„ฑ ์ ˆ์ฐจ jMeter ๋‚ด์—์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(test case)๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ์™€ jMeter ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ ์ ˆ์ฐจ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ jMeter ์šฉ์–ด๋ฅผ ์ •๋ฆฌํ•˜์˜€๋‹ค. 2.1. jMeter UI jMeter ๊ธฐ๋ณธ UI ๋‚ด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•  ํ•ญ๋ชฉ๋“ค์„ ์š”์•ฝํ•˜์˜€๋‹ค. โ‘  Start TestPlan TestPlan ์„ ์‹คํ–‰ํ•œ๋‹ค. TestPlan ๋‚ด์— ํฌํ•จ๋œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ, ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑ ์™„๋ฃŒํ•œ ํ›„ ์‹œํ—˜ํ•˜๊ฑฐ๋‚˜, ์ด์ „์— ์ž‘์„ฑ๋œ TestPlan ์„ ๋กœ๋“œ(load)ํ•œ ํ›„ ์žฌ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. โ‘ก Clear output TestPlan ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง€์šด๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ TestPlan ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ, ์ด์ „ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์ง€์šฐ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. โ‘ข Error / Warning count ์ง์ „ TestPlan ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด logViewer โ‘  Start TestPlan โ‘ก Clear output โ‘ข Error/Warning count
  • 8. ๏ผ˜ ํŒจ๋„์ด ํ‘œ์‹œ๋œ๋‹ค. jMeter UI ์ขŒ์ธก ํŒจ๋„์—๋Š” โ€˜TestPlanโ€™๊ณผ โ€˜WorkBenchโ€™๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค. โ‘  TestPlan jMeter ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(ํ˜น์€ ์‹œ๋‚˜๋ฆฌ์˜ค)์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์„ค์ •์„ ํฌํ•จํ•˜๋Š” ์˜์—ญ์ด๋‹ค. โ‘ก WorkBench ์›Œํฌ๋ฒค์น˜๋Š” ๊ณ„์† ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ž„์‹œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ—˜ํ•˜๊ธฐ ์œ„ํ•œ ์˜์—ญ์ด๋‹ค. TestPlan ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์ž…๋ ฅํ•œ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 2.2. TestPlan ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์šฉ์–ด ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ „๋ฐ˜์ ์ธ ์„ค์ • ๋ฐ ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” TestPlan ์— ์„ค์ • ํ˜น์€ ์ถ”๊ฐ€ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ํ•„์ˆ˜(๊ธฐ๋ณธ) ๊ตฌ์„ฑ ์š”์†Œ๋“ค์€ โ€˜Thead Groups (Users)โ€™, โ€˜Config Elementsโ€™, โ€˜Samplerโ€™ ๋ฐ โ€˜Listenerโ€™ ์ด๋‹ค. ๋‚˜๋จธ์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ์ข€ ๋” ์ •๊ตํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•œ๋‹ค.
  • 9. ๏ผ™ Thread Groups (Users) Thead Groups ๋ฅผ ๋‹ฌ๋ฆฌ ํ‘œํ˜„ํ•˜์ž๋ฉด, ๊ฐ€์ƒ ์‚ฌ์šฉ์ž(virtual user)์ด๋‹ค. ์‹ค์ œ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค(ํ˜น์€ ์„œ๋ฒ„)๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ–‰์œ„๋ฅผ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ชจ์˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํšŸ์ˆ˜, ์ฃผ๊ธฐ, ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜ ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. TestPlan ์ž‘์„ฑ ์‹œ ๋จผ์ € ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์Šค๋ ˆ๋“œ ์•„๋ž˜์— sampler ๋“ค์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค. Sampler (Unit Test) ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ–‰์œ„๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด์ ์œผ๋กœ ๋ชจ๋ฐฉํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ํ˜น์€ ์•ก์…˜(action)์ด๋ผ๊ณ  ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. HTTP ์š”์ฒญ, TCP ํ†ต์‹ , JDBC ์ฟผ๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” sampler ๋“ค์ด ์ œ๊ณต๋œ๋‹ค. Config Element ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ข… ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ๊ธฐ๋ณธ ๊ฐ’ ๋“ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ๋“ค์€ ์„œ๋ฒ„ ์ฃผ์†Œ ๋ฐ ํฌํŠธ, ์ฟ ํ‚ค ๊ฐ’, HTTP ํ—ค๋” ๊ธฐ๋ณธ ๊ฐ’ ๋“ฑ์ด ์žˆ๋‹ค. Listener (Report) ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•˜๊ณ , ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค. ๊ทธ๋ž˜ํ”„, ํ…Œ์ด๋ธ”, ์š”์•ฝ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฆฌ์Šค๋„ˆ(listener)๊ฐ€ ์ œ๊ณต๋œ๋‹ค. 2.3. TestPlan ์ž‘์„ฑ ์ ˆ์ฐจ TestPlan ์„ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์š”์•ฝํ•˜์˜€๋‹ค. ํ•„์ˆ˜ ์š”์†Œ๋“ค๋งŒ์œผ๋กœ ๊ตฌ์„ฑํ•œ ์ ˆ์ฐจ์ด๋ฏ€๋กœ, ์ถ”๊ฐ€์ ์ธ ์š”์†Œ๋“ค์„ ๋ฐ˜์˜ํ•ด์•ผ ์ •๋ฐ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. TestPlan ๊ธฐ๋ณธ์ •๋ณด ์ž…๋ ฅ ์ขŒ์ธก ํŒจ๋„์—์„œ TestPlan ์„ ์„ ํƒํ•œ ํ›„, ๋ช…์นญ ๋ฐ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ์ž…๋ ฅํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋“ค์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 10. ๏ผ‘๏ผ Config Element ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ โ€˜๊ณตํ†ต ์„ค์ •(Common configurations)โ€™์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ์—์„œ๋Š” โ€˜HTTP Request Defaultsโ€™, โ€˜HTTP Header Managerโ€™, โ€˜HTTP Cookie Managerโ€™ ๋“ฑ 3 ๊ฐ€์ง€๋ฅผ ์„ค์ •ํ•œ๋‹ค. HTTP Request Defaults ์„œ๋ฒ„ ์ฃผ์†Œ ๋ฐ ํฌํŠธ ๋ฒˆํ˜ธ, ์š”์ฒญ ๋ฐ ์‘๋‹ต ์‹œ๊ฐ„ ์ œํ•œ ๊ฐ’ ๋“ฑ์˜ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ฐ’(default value)๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. HTTP Request Defaults ์—์„œ ์„ค์ •ํ•œ ๊ฐ’์„ ๊ฐœ๋ณ„ sampler ์—์„œ ๋ฎ์–ด ์“ธ(override) ์ˆ˜ ์žˆ๋‹ค. HTTP Header Manager HTTP ํ†ต์‹  ํ—ค๋”์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์„ค์ •ํ•œ๋‹ค. Open API ๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด โ€˜Content-Typeโ€™์„ โ€˜application/x- www-form-urlencodedโ€™ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
  • 11. ๏ผ‘๏ผ‘ HTTP Cookie Manager ์„ธ์…˜(session)์„ ํ•„์š”๋กœ ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์œ„ํ•ด ์ฟ ํ‚ค(cookie)๋ฅผ ์„ค์ •ํ•œ๋‹ค. Thread Group ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ ๋ฐ˜๋ณต ํšŸ์ˆ˜, ๋™์‹œ ์ ‘์† ์ˆ˜ ๋“ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด Thread Groups ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  • 12. ๏ผ‘๏ผ’ Listener ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Listener ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. View Results Tree ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํŠธ๋ฆฌ(tree) ํ˜•ํƒœ๋กœ ์ƒ์„ธํ•˜๊ฒŒ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ…Œ์ŠคํŠธ ์œ ํ˜•์— ์ƒ๊ด€์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ๋‹จ์ ์€ ๋Œ€๊ทœ๋ชจ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ, ๋กœ๊ทธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„ ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์„ ์ฐพ์•„๋ณด๊ธฐ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 13. ๏ผ‘๏ผ“ Summary Report ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ์š”์•ฝ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ฐ ์„ฑ๋Šฅ ์ธก์ • ์‹œ์— ์œ ์šฉํ•˜๋‹ค.
  • 14. ๏ผ‘๏ผ” View Results in Table ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ๋ฐœ์ƒํ•œ ๊ฐœ๋ณ„ ์š”์ฒญ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์—‘์…€ ๋“ฑ์œผ๋กœ ๋‚ด๋ณด๋‚ธ ํ›„ ํ†ต๊ณ„ ๋“ฑ ํ›„๋ฐ˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ ํ•ฉํ•˜๋‹ค. Sampler ์ถ”๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ฐœ๋ณ„ sampler ํ˜น์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ˜ธ์ถœํ•˜๋Š” API ๊ฒฝ๋กœ(path), ์š”์ฒญ ์ธ์ž(request parameters), ๋ฉ”์†Œ๋“œ(POST, GET, PUT ๋“ฑ) ๋“ฑ์„ ์ž…๋ ฅํ•œ๋‹ค. POST ๋ฐ GET ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” ์š”์ฒญ ์ธ์ž๋ฅผ โ€˜Paramtersโ€™ ํƒญ์— ์ž…๋ ฅํ•˜๊ณ , PUT ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” Body Data ์— ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค. POST ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
  • 15. ๏ผ‘๏ผ• PUT ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ๋‹ค.
  • 16. ๏ผ‘๏ผ– 3. OpenAPI ํ…Œ์ŠคํŠธ ๊ณ„ํš ํ…Œ์ŠคํŠธ ๋ชฉ์  Open API ํ…Œ์ŠคํŠธ์˜ ๋ชฉ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๏ฌ ๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘ Open API ๊ธฐ๋Šฅ์˜ ์ ๊ฒ€ ๋ฐ ์˜ค๋™์ž‘ ์œ ๋ฌด ํŒŒ์•… ๏ฌ ์œ ์ง€๋ณด์ˆ˜ ๋‹จ๊ณ„์—์„œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€/๋ณ€๊ฒฝ ๋ฐœ์ƒ ์‹œ ์ „์ฒด API ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์ ๊ฒ€ ์ž๋™ํ™” ๏ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ(load test)๋ฅผ ํ†ตํ•œ ์˜จ๋ผ์ธ ์„œ๋น„์Šค ์„ฑ๋Šฅ ์ธก์ • ๋ฐ ์ž์›(resource) ๊ณ„ํš ์ˆ˜๋ฆฝ ํ…Œ์ŠคํŠธ ๊ฐœ์š” ๏ฌ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๋„๊ตฌ๋Š” ์˜คํ”ˆ ์†Œ์Šค ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ์ธ jMeter ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๏ฌ โ€˜๊ธฐ๋Šฅโ€™ ๋ฐ โ€˜๋ถ€ํ•˜โ€™ ํ…Œ์ŠคํŠธ ๊ณ„ํš์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ณ„๊ฐœ์˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•œ๋‹ค. ๏ฌ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” โ€˜Open API specificationโ€™์„ ์ฐธ์กฐํ•˜์—ฌ ๋ชจ๋“  ์˜จ๋ผ์ธ ์„œ๋น„์Šค API ๊ธฐ๋Šฅ์„ ์ ๊ฒ€ํ•œ๋‹ค. ๏ฌ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณ„ํš์—๋Š” ๊ฐœ๋ณ„ ์š”์ฒญ์— ๋Œ€ํ•œ ์š”์ฒญ/์‘๋‹ต ๋ฐ์ดํ„ฐ ๋ฐ ์ •์ƒ ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•˜๋Š” Assertion ์„ ํฌํ•จํ•œ๋‹ค. ๏ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ์‚ฌ์šฉ์ž์˜ ์ปจํ…์ธ  ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์˜ˆ์ธกํ•˜์—ฌ, ์‹œ๋‚˜๋ฆฌ์˜ค ๊ธฐ๋ฐ˜์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๏ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด TPS (Transaction per Second), ์‘๋‹ต ์‹œ๊ฐ„ ํ†ต๊ณ„ ๋“ฑ์„ ์ƒ์„ฑํ•œ๋‹ค. ๏ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ํ•˜๋‚˜์˜ ๋งˆ์Šคํ„ฐ(master)์™€ ๋ณต์ˆ˜์˜ (slave)๋กœ ๊ตฌ์„ฑ๋œ ๋ถ„์‚ฐ ํ…Œ์ŠคํŠธ(Distributed Test)๋ฅผ ์‹ค์‹œํ•œ๋‹ค. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณ„ํš (Functional Test Plan) ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณ„ํš์€ Open API (ํ˜น์€ ์˜จ๋ผ์ธ ์„œ๋น„์Šค)์˜ ์ •์ƒ ๋™์ž‘ ์œ ๋ฌด๋ฅผ ์ž๋™ํ™”๋œ ์Šคํฌ๋ฆฝํŠธ๋กœ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•œ๋‹ค. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ณ„ํš์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” User Defined Variables, Thread Group, Config Element, Sampler, Assertion, Listener ๋“ฑ์ด๋‹ค. Thread Group ํ˜น์€ ๊ฐ€์ƒ ์‚ฌ์šฉ์ž(virtual user)๋Š” 1 ํšŒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. Config Element ๋Š” ์„œ๋ฒ„ ์ฃผ์†Œ, HTTP ํ—ค๋” ๋ฐ ์ฟ ํ‚ค ์„ค์ •์„ ํฌํ•จํ•œ๋‹ค. Sampler ๋Š” Open API ๊ฐœ์ˆ˜๋งŒํผ ์ƒ์„ฑํ•˜๋ฉฐ, ๊ฐ๊ฐ์˜ API ์ •์ƒ ๋™์ž‘ ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด Assertion ์„ ์ถ”๊ฐ€ํ•œ๋‹ค. Listener ๋Š” ๋ชจ๋“  ์š”์ฒญ/์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ ๊ฒ€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, โ€˜View Results in Tableโ€™์„ ์ถ”๊ฐ€ํ•œ๋‹ค. User Defined Variables Test Plan ์˜ ์†์„ฑ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋Š” Sampler, Thread Group, Listener, Timer ๋“ฑ Test Plan ํ•˜์œ„์— ๋“ฑ๋ก๋œ ๊ฐ์ข… ์š”์†Œ(element)์—์„œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜์˜ ์žฅ์ ์€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐ™์€ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ์ˆ˜๊ณ ๋ฅผ ์ค„์—ฌ์ฃผ๊ณ , ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์ด ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜, ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ์‹œ์Šคํ…œ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์†์‰ฝ๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜์—๋Š” ์„œ๋ฒ„ ์ฃผ์†Œ, ๊ฒŒ์ž„ ์ˆœ๋ฒˆ, ์ฑ„๋„ ์ˆœ๋ฒˆ, ์ปจํ…ํŠธ ID ๋“ฑ์˜ ํ•ญ๋ชฉ์„ ์„ ์–ธํ•œ๋‹ค.
  • 17. ๏ผ‘๏ผ— Name Value Description server_addr p.ap-northeast-1.elb.amazonaws.com URL ์ƒ์„ฑ์„ ์œ„ํ•œ ์„œ๋ฒ„ ์ฃผ์†Œ์ด๋ฉฐ, ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ์„œ๋ฒ„ IP ์ฃผ์†Œ ํ˜น์€ ๋„๋ฉ”์ธ ๋ช…์นญ context_root /gcapi URL ์ƒ์„ฑ์„ ์œ„ํ•œ API ์ตœ์ƒ์œ„ ๊ฒฝ๋กœ์ด๋ฉฐ, Open API root path or context root game_seq GMGW1404081503010001GMGW14040815 03010001 ์ปจํ…์ธ  ์กฐํšŒ ๋ฐ ๋“ฑ๋ก ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๊ฒŒ์ž„ ์ •๋ณด. ํ…Œ์ŠคํŠธ ๋Œ€์ƒ DB ์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ž„์˜์˜ ๊ฒŒ์ž„ ์ˆœ๋ฒˆ (40 bytes) ch_seq NIGW1404201230500000NIGW1404201230 500000 ์ฑ„๋„ ๋ฐ ์ปจํ…์ธ  ์กฐํšŒ ๋ฐ ๋“ฑ๋ก ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ฑ„๋„ ์ •๋ณด. ํ…Œ์ŠคํŠธ ๋Œ€์ƒ DB ์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ž„์˜์˜ ์ฑ„๋„ ์ˆœ๋ฒˆ (40 bytes) cid CDA01404250715330000CDA01404250715 330000 ์ปจํ…์ธ  ๋ฐ ๋ง๊ธ€ ์กฐํšŒ๋ฅผ ์œ„ํ•œ ์ปจํ…์ธ  ์ •๋ณด. ํ…Œ์ŠคํŠธ ๋Œ€์ƒ DB ์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ž„์˜์˜ ์ปจํ„ด์ธ  ID (40 bytes) auth_key 12345678901234567890123456${__time(yy yyMMddHHmmss)} ๋ชจ๋ฐ”์ผ ์žฅ์น˜ ์ธ์ฆ(mobile device authentication key). ์‚ฌ์šฉ์ž ์‹ ๊ทœ ๋“ฑ๋ก์„ ์œ„ํ•œ ์ธ์ฆ ํ‚ค. ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ์ž ๋“ฑ๋ก ์‹œ โ€˜๊ธฐ์กด ์‚ฌ์šฉ์ž ์˜ค๋ฅ˜(already exist error)โ€™๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ์„ ์ด์šฉํ•ด ๋งค๋ฒˆ ์ธ์ฆ ํ‚ค๋ฅผ ์‹ ๊ทœ ๋ฐœํ–‰ํ•œ๋‹ค. nick_name test_user_${__time(yyyyMMddHHmmss)} ์‚ฌ์šฉ์ž ์‹ ๊ทœ ๋“ฑ๋ก์— ํ•„์š”ํ•œ ๋‹‰๋„ค์ž„(nickname). ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ์ž ๋“ฑ๋ก ์‹œ, โ€˜๋‹‰๋„ค์ž„ ์ค‘๋ณตโ€™ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ์„ ์ด์šฉํ•ด ๋งค๋ฒˆ ๋‹‰๋„ค์ž„์„ ์‹ ๊ทœ ๋ฐœํ–‰ํ•œ๋‹ค. device_id 15bf269cbffecf55b904648bb1304a376cd308 01 ์ปจํ…์ธ  ๋“ฑ๋ก ๋ฐ ์กฐํšŒ๋ฅผ ์œ„ํ•œ ๋””๋ฐ”์ด์Šค ID ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜ ์ค‘์—์„œ game_seq, ch_seq, cid ๋“ฑ์€ ๋Œ€์ƒ ์„œ๋ฒ„๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ํ…Œ์ŠคํŠธ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ˜ํ”Œ๋ง(sampling)ํ•œ ํ›„ jMeter ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜ ๊ฐ’์„ ์žฌ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. โ€˜auth_keyโ€™ ๋ฐ โ€˜nick_nameโ€™ ๋ณ€์ˆ˜๋Š” ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์ด ์ž…๋ ฅ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— jMeter โ€˜__timeโ€™ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋งค๋ฒˆ ๋‹ค๋ฅธ ๊ฐ’์ด ์ƒ์„ฑ๋˜๋„๋ก ํ•œ๋‹ค.
  • 18. ๏ผ‘๏ผ˜ Thread Group Number of Threads (users) ๋Š” 1, Ramp-up Period ๋ฐ Loop Count ๋Š” 1 ๋กœ ์„ค์ •ํ•œ๋‹ค. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๋ชจ๋“  ์š”์ฒญ๋“ค์ด ์ •์ƒ ๋™์ž‘ํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋งŒ์„ ํ™•์ธํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. Config Element โ€˜HTTP Request Defaultsโ€™, โ€˜HTTP Header Managerโ€™, โ€˜HTTP Cookie Managerโ€™ ๋“ฑ 3 ๊ฐ€์ง€ Config Element ๋ฅผ ์„ค์ •ํ•œ๋‹ค. Type Description HTTP Request Defaults HTTP ์š”์ฒญ(request) ์‹œ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๊ฐ’๋“ค์„ ์„ค์ •ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ฒ„ ์ฃผ์†Œ, ํฌํŠธ ๋ฒˆํ˜ธ, ํƒ€์ž„์•„์›ƒ(timeout) ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. HTTP Header Manager HTTP ์š”์ฒญ(request) ์‹œ, HTTP header ์— ์„ค์ •ํ•  ๊ธฐ๋ณธ ํ•ญ๋ชฉ๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ปจํ…์ธ  ํƒ€์ž…, ์—์ด์ „ํŠธ ์ •๋ณด, ์ธ์ฝ”๋”ฉ ํƒ€์ž…(encoding type) ๋“ฑ์„ ์„ค์ •ํ•œ๋‹ค. HTTP Cookie Manager HTTP ์š”์ฒญ /์‘๋‹ต์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ฟ ํ‚ค(cookie)๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ค‘ ์„œ๋ฒ„์—์„œ ์ „์†ก๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ๋ณด๊ด€ํ•˜๊ณ , ์ดํ›„ ์š”์ฒญ ์ˆ˜ํ–‰ ์‹œ ๋ณด๊ด€๋œ ์ฟ ํ‚ค๋ฅผ ์š”์ฒญ ํŒจํ‚ท(packat)์— ์ž๋™์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ํ•„์š”ํ•˜๋ฉด, ์ฟ ํ‚ค ๋ณ€์ˆ˜์™€ ๊ฐ’์„ ๊ธฐ๋ณธ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 19. ๏ผ‘๏ผ™ HTTP Request Defaults ์—๋Š” โ€˜์„œ๋ฒ„ ์ฃผ์†Œโ€™ (Server Name or IP)๋ฅผ ์„ค์ •ํ•œ๋‹ค. HTTP Header Manager ์—๋Š” โ€˜Content-Typeโ€™ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค. โ€˜Content-Typeโ€™ ๋ณ€์ˆ˜๋Š” RESTful API ์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ •ํ™•ํžˆ ์ง€์ •ํ•ด ์„œ๋ฒ„์—์„œ ์š”์ฒญ ์ธ์ž ํŒŒ์‹ฑ(request parameter parsing) ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. HTTP Cookie Manager ์—๋Š” โ€˜Clear cookies each iteration?โ€™ ์„ ์ฒดํฌํ•œ๋‹ค. ๋ฐ˜๋ณต(iteration) ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ฟ ํ‚ค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • 20. ๏ผ’๏ผ HTTP Request Sampler Open API ๊ฐœ์ˆ˜๋งŒํผ Sampler ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ํ•„์ˆ˜ ํ•ญ๋ชฉ์€ โ€˜Nameโ€™, โ€˜Methodโ€™, โ€˜Pathโ€™ ์ด๋ฉฐ, ์š”์ฒญ ์ž…๋ ฅ ๊ฐ’์ด ์กด์žฌํ•  ๊ฒฝ์šฐ, โ€˜Parametersโ€™๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋‹จ, โ€˜Methodโ€™ ์œ ํ˜•์ด โ€˜PUTโ€™ ์ธ ๊ฒฝ์šฐ์—๋Š” โ€˜Body dataโ€™์— ์š”์ฒญ ์ธ์ž ๊ฐ’์„ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค. Sampler ๋“ฑ๋ก์„ ์œ„ํ•œ API ์ •๋ณด๋Š” โ€˜Open API ์—ฐ๋™ ๊ทœ๊ฒฉ์„œโ€™๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ Sampler ๋“ค์€ โ€˜์‚ฌ์šฉ์ž ๋“ฑ๋กโ€™, โ€˜์‚ฌ์šฉ์ž ์ธ์ฆโ€™ ๋ฐ ๊ธฐํƒ€ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์ˆœ์œผ๋กœ ๋“ฑ๋กํ•ด์•ผ ํ•œ๋‹ค. โ€˜์‚ฌ์šฉ์ž ๋“ฑ๋กโ€™์€ ์ž„์˜์˜ ์ธ์ฆ ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•ด ์‹ ๊ทœ ์‚ฌ์šฉ์ž๋กœ ๊ฐ€์ž…ํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ, โ€˜์‚ฌ์šฉ์ž ์ธ์ฆโ€™์€ ์‹ ๊ทœ ์ƒ์„ฑํ•œ ์‚ฌ์šฉ์ž๋กœ ์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ(login) ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‚˜๋จธ์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์ธ์ฆ ์ดํ›„์— ๋“ฑ๋กํ•˜๋Š” ์ด์œ ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ๋“ค์ด ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉด ์ •์ƒ ์‘๋‹ตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‚ฌ์šฉ์ž ๋“ฑ๋ก ์‚ฌ์šฉ์ž ๋“ฑ๋ก sampler ์—์„œ๋Š” 4 ๊ฐœ์˜ ํ•„์ˆ˜ ์ธ์ž(parameter)๋ฅผ ๋“ฑ๋กํ•œ๋‹ค. ๋งŒ์ผ, API spec ์ด ๋ณ€๊ฒฝ๋˜์–ด ํ•„์ˆ˜ ์ธ์ž๊ฐ€ ์ถ”๊ฐ€/์‚ญ์ œ๋  ๊ฒฝ์šฐ, ์ธ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค. Name Value Description auth_key ${auth_key} ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ๋งˆ๋‹ค, ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค. auth_code IMEI ์ธ์ฆ ๋ฐฉ์‹์€ ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค. device_id 15bf269cbffecf55b904648bb1304a376cd30801 ๋””๋ฐ”์ด์Šค ID ๋Š” ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค. nick_name ${nick_name} ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ค‘๋ณต ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • 21. ๏ผ’๏ผ‘ ์‚ฌ์šฉ์ž ์ธ์ฆ ์‚ฌ์šฉ์ž ์ธ์ฆ sampler ์—์„œ๋Š” โ€˜auth_keyโ€™ โ€˜auth_codeโ€™, โ€˜device_idโ€™ ๋“ฑ 3 ๊ฐœ์˜ ์ธ์ž๋ฅผ ์„ค์ •ํ•œ๋‹ค. Name Value Description auth_key ${auth_key} ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ๋งˆ๋‹ค, ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค. auth_code IMEI ์ธ์ฆ ๋ฐฉ์‹์€ ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค. device_id 15bf269cbffecf55b904648bb1304a376cd30801 ๋””๋ฐ”์ด์Šค ID ๋Š” ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • 22. ๏ผ’๏ผ’ ์‚ฌ์šฉ์ž ์ธ์ฆ ํ›„์—, JSON Path Extractor ๋ฅผ ์ด์šฉํ•ด ์‘๋‹ต JSON ๋ฐ์ดํ„ฐ ๋‚ด์—์„œ โ€˜user_keyโ€™ ํ•„๋“œ ๊ฐ’์„ ์ถ”์ถœํ•œ๋‹ค. ์ถ”์ถœ๋œ ๊ฐ’์€ โ€˜user_keyโ€™ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ณ  ์ดํ›„ โ€˜์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒโ€™ ๋“ฑ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. JSON Assertion Assertion ์€ JSON ํ˜•์‹์˜ ์‘๋‹ต ๋ฐ์ดํ„ฐ(response data)๋ฅผ ํŒŒ์‹ฑ(parsing) ํ•œ ํ›„, ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ์ฒดํฌํ•˜์—ฌ ์ •์ƒ ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•œ๋‹ค. ์ •์ƒ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‹จ์ผ ๊ฐ’์ผ ๊ฒฝ์šฐ์—๋Š” โ€˜JSON Path Assertionโ€™์„ ์ด์šฉํ•˜๊ณ , ์ •์ƒ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‘ ๊ฐ€์ง€ ์ด์ƒ์ธ ๊ฒฝ์šฐ์—๋Š” โ€˜JSON Path extractorโ€™๋ฅผ ์ด์šฉํ•ด ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ๋ณ€์ˆ˜์— ๋‹ด๊ณ  โ€˜BeanShell Assertionโ€™๋กœ ์—๋Ÿฌ๋ฅผ ๊ฒ€์ถœํ•œ๋‹ค. JSON Path Assertion ์ •์ƒ ์ƒํƒœ์ธ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‹จ์ผ ๊ฐ’์ผ ๊ฒฝ์šฐ์—๋Š” โ€˜JSON Path Assertionโ€™์„ ์ด์šฉํ•ด ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, JSON ์‘๋‹ต ๋ฐ์ดํ„ฐ์—์„œ ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š” ์ž‘์—…๊ณผ ์ถ”์ถœ ๊ฐ’์„ ์˜ˆ์ƒ ๊ฐ’(expected value)๊ณผ ๋น„๊ตํ•˜๋Š” ์ž‘์—…์„ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ โ€˜000โ€™ ์ธ ๊ฒฝ์šฐ ์ •์ƒ์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค.
  • 23. ๏ผ’๏ผ“ JSON Path Extractor ์ •์ƒ์ ์ธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ๋ฐ˜ํ™˜๋  ๊ฒฝ์šฐ, ๋จผ์ € โ€˜JSON Path extractorโ€™๋ฅผ ์ด์šฉํ•ด JSON ์‘๋‹ต ๋ฐ์ดํ„ฐ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ jMeter ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” JSON ๋ฐ์ดํ„ฐ์˜ โ€˜result_codeโ€™ ํ•„๋“œ ๊ฐ’์„ ์ถ”์ถœํ•œ ํ›„, jMeter โ€˜result_codeโ€™ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ๋‹ค. BeanShell Assertion โ€˜JSON Path Extractorโ€™์— ์˜ํ•ด ์ถ”์ถœ๋œ ๋ณ€์ˆ˜๋ฅผ โ€˜BeanShell Assertionโ€™์„ ์ด์šฉํ•ด ๊ฒ€์‚ฌํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” โ€˜result_codeโ€™ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด โ€˜000โ€™ ์ด๊ฑฐ๋‚˜, โ€˜000โ€™ ์ธ ๊ฒฝ์šฐ ์ •์ƒ์œผ๋กœ ํŒ์ •ํ•˜๊ณ , ์•„๋‹Œ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • 24. ๏ผ’๏ผ” Listener (View Results Tree) ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ Listener ๋Š” ๊ฐœ๋ณ„ ์š”์ฒญ ๊ฑด์˜ ์ •์ƒ ์œ ๋ฌด์™€ ์š”์ฒญ/์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ์ ๊ฒ€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ˆ˜ํ–‰ ์„ฑ๋Šฅ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค์€ ์ œ์™ธํ•œ๋‹ค. ํ•„์ˆ˜์ ์œผ๋กœ ํฌํ•จํ•ด์•ผ ํ•˜๋Š” Listener ๋Š” โ€˜View Results Treeโ€™ ์ด๋‹ค.
  • 25. ๏ผ’๏ผ• ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ณ„ํš (Load Test Plan) ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ฐ๊ฐ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ๊ณ„ํš(jMeter TestPlan script)๋ฅผ ์ž‘์„ฑํ•œ ํ›„, BMT ์„œ๋ฒ„ ์ƒ์—์„œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์‹œํ•œ๋‹ค. ๋งค ๋ฒˆ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„, ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ํ™˜๊ฒฝ, ์ˆ˜ํ–‰ ์ธ์ž(execution parameter), ๊ฒฐ๊ณผ๋ฅผ ํฌํ•จํ•œ ๋ณด๊ณ ์„œ ๋“ฑ์„ ์ž‘์„ฑํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ์ผํšŒ์„ฑ์— ๊ทธ์ณ์„œ๋Š” ์•ˆ๋˜๋ฉฐ, ๊ธฐ๋Šฅ ํ™•์žฅ ๋ฐ ๋ณ€๊ฒฝ, ์„œ๋ฒ„ ํ™•์žฅ์— ๋”ฐ๋ผ ์ง€์†์ ์œผ๋กœ ๋ณด๊ณ ์„œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณ€ํ™”์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ํ‰๊ฐ€, ์žฅ๊ธฐ ์˜ˆ์ธก์„ ์œ„ํ•œ ๊ธฐ์ดˆ ์ž๋ฃŒ ์ˆ˜์ง‘ ๋ฐ ๋ถ€ํ•˜ ๊ด€๋ฆฌ ๋…ธํ•˜์šฐ ์ถ•์ ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์™€ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์˜ ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๏ฌ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๊ฐ€์ƒ ์‚ฌ์šฉ์ž(virtual user) ์ˆ˜๋ฅผ ํ•œ ๋ช…์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ๋ฐ˜๋ณต ํšŸ์ˆ˜ ๋˜ํ•œ 1 ํšŒ๋กœ ์ œํ•œํ•œ๋‹ค. ๋ฐ˜๋ฉด์— ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ๋ณต์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๏ฌ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ๋Š” Assertion ์„ ์ด์šฉํ•ด ์‘๋‹ต ๋ฐ์ดํ„ฐ์˜ ์ •์ƒ ์œ ๋ฌด๋ฅผ ๊ฒ€์‚ฌํ•˜์ง€๋งŒ, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ฐ€๊ธ‰์  Assertion ์„ ํฌํ•จ์‹œํ‚ค๊ธฐ ์•Š๋Š”๋‹ค. (Assertion ์„ ๋งŽ์ด ์‚ฌ์šฉํ• ์ˆ˜๋ก, Assertion ์ˆ˜ํ–‰์œผ๋กœ ์ธํ•œ ์ง€์—ฐ ๋ฐ ์ž์› ์†Œ๋ชจ ๋“ฑ์œผ๋กœ ์ธํ•ด ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์˜ ์ธก์ • ๊ฒฐ๊ณผ๊ฐ€ ๋ถ€์ •ํ™•ํ•ด์ง„๋‹ค.) ๏ฌ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ์˜ ๋ฉด๋ฐ€ํ•œ ๋ถ„์„์„ ์œ„ํ•ด โ€˜Results in Treeโ€™ ๋“ฑ ์ƒ์„ธํ•œ ๋กœ๊ทธ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” Listener ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ฐ€๊ธ‰์  ์ง‘๊ณ„์„ฑ(aggregate) Listener ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์—์„œ ์ •๋ฐ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‚ฐ์ถœํ•˜๋Š” Listener ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, Listener ์˜ ์ข…๋ฅ˜๋ฅผ ๋งŽ์ด ์ ์šฉํ• ์ˆ˜๋ก ๋ถ€์ •ํ™•ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ๏ฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ์—๋Š” ๋ณต์ˆ˜์˜ ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•œ ์›๊ฒฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, CLI(Command Line Interface)๋ฅผ ์ด์šฉํ•œ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ(batch processing) ๋ฐฉ์‹์ด ์ ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ๋ถ„์„ ์‹œ์—๋Š” ์›๊ฒฉ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์ˆ˜์ด๋‹ค. ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ์‚ฌ์šฉ์ž๋“ค์˜ ์ด์šฉ ํŒจํ„ด์„ ์˜ˆ์ธกํ•˜์—ฌ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์„ธ๋ถ„ํ™” ํ•œ๋‹ค. ์‚ฌ์šฉ์ž๋“ค์„ ์„œ๋น„์Šค ๋ฏธ์‚ฌ์šฉ์ž, ์ปจํ…์ธ  ์†Œ๋น„์ž ๋ฐ ์ปจํ…์ธ  ์ƒ์‚ฐ์ž ๊ทธ๋ฃน์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ, ๊ทธ์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ๊ณ„ํš์„ ์ž‘์„ฑํ•œ๋‹ค. ์‚ฌ์šฉ์ž ๊ทธ๋ฃน ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ์š”์•ฝ ์„œ๋น„์Šค ๋ฏธ์‚ฌ์šฉ์ž ์‹ ๊ทœ ๊ฐ€์ž… ํšŒ์› ์ •๋ณด๋ฅผ ์ž…๋ ฅ ํ•˜๊ณ , ๋‹‰๋„ค์ž„(nickname) ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•œ ํ›„, ๋กœ๊ทธ์ธํ•˜์—ฌ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ๋‹ค. ์ปจํ…์ธ  ์†Œ๋น„์ž ๋กœ๊ทธ์ธ ๋ฐ ๋ธŒ๋ผ์šฐ์ง• ์ด๋ฏธ ๊ฐ€์ž…ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค์— ๋กœ๊ทธ์ธ ํ•œ ํ›„, ์ž์‹ ์ด ์ฆ๊ฒจ๋ณด๋Š” ์ปจํ…์ธ ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ , ์ปจํ…์ธ ์— ๋Œ€ํ•œ ๋ฆฌ์•ก์…˜(reaction) โ€“ ์ข‹์•„์š”, ์ฆ๊ฒจ์ฐพ๊ธฐ, ๋Œ“๊ธ€ ์“ฐ๊ธฐ - ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ์ปจํ…์ธ  ์ƒ์‚ฐ์ž ์ปจํ…์ธ  ์—…๋กœ๋“œ ์ปจํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๋Š” BJ ๋“ค์ด ๋…นํ™”ํ•œ ๋™์˜์ƒ๊ณผ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ๋“ฑ๋ก ๋ฐ ํŽธ์ง‘ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ๊ฐœ๋ณ„ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ํ–‰์œ„ ์ฃผ์ฒด(action behavior)์™€ ๋ฐœ์ƒ ๋นˆ๋„๊ฐ€ ์ƒ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๊ณ„ํš์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ , ๋ถ€ํ•˜๋ฅผ ์ธก์ •ํ•ด์•ผ ํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ตฌ์„ฑ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์™€ โ€˜Thread Groupโ€™, โ€˜Assertionโ€™ ๋ฐ โ€˜Listenerโ€™ ๊ตฌ์„ฑ(์„ค์ •)์ด ๋‹ค๋ฅด๋‹ค. ์ž„์˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•ด โ€˜CSV Data Set Configโ€™, ์‚ฌ์šฉ์ž์˜ ์‹ค์ œ ์„œ๋น„์Šค ์‚ฌ์šฉ์„ ๋ชจ๋ฐฉ(simulation)ํ•˜๊ธฐ ์œ„ํ•ด โ€˜Timerโ€™๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ์—๋Š” Open API ์˜ ์ •์ƒ ๋™์ž‘ ์œ ๋ฌด๊ฐ€ ํ…Œ์ŠคํŠธ ๊ด€์‹ฌ์‚ฌ๊ฐ€ ์•„๋‹ˆ๋ฉฐ, jMeter ์ž์› ์†Œ๋ชจ๋ฅผ ์ค„์ด๊ณ  ์ธก์ • ์ •ํ™•๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด โ€˜Assertionโ€™์€ ์ œ๊ฑฐํ•œ๋‹ค. Listener ๋Š” ์ˆ˜ํ–‰ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•ด ํ†ต๊ณ„ ๋ฐ ๊ทธ๋ž˜ํ”„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • 26. ๏ผ’๏ผ– CSV Data ์ƒ์„ฑ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ ˆ์ฐจ๋Š” โ€˜5. CSV ๋ฐ์ดํ„ฐ ์ƒ์„ฑโ€™ ์„ ์ฐธ์กฐํ•˜๋ฉด ๋œ๋‹ค. CSV Data Set Config ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ์ž„์˜์˜ ์‚ฌ์šฉ์ž๋“ค์„ ์‹ ๊ทœ ๋“ฑ๋กํ•˜๊ณ  ๋กœ๊ทธ์ธ ํ•˜๊ธฐ ์œ„ํ•ด, ์ธ์ฆ ํ‚ค (auth_key)์™€ ๋‹‰๋„ค์ž„ (nickname)์„ ์ผ๊ด„ ์ƒ์„ฑํ•œ CSV ํŒŒ์ผ์„ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. CSV ํŒŒ์ผ ๋ฐ์ดํ„ฐ ์ƒ˜ํ”Œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ธ์ฆ ํ‚ค ๋ฐ์ดํ„ฐ๋Š” 40 bytes ์ด๋ฉฐ, ๋‹‰๋„ค์ž„์˜ ์ตœ์†Œ ๊ธธ์ด๋Š” 2 byte ์ด๋‚˜, ์ผ๋ฅ ์ ์œผ๋กœ 32 bytes ๊ธธ์ด๋กœ ์ƒ์„ฑํ•œ๋‹ค. -------------------------- CSV data sample (start) --------------------------- userkey_12345678901_20140510141925000001,nickname_00_20140510141925000001 userkey_12345678901_20140510141925000002,nickname_00_20140510141925000002 userkey_12345678901_20140510141925000003,nickname_00_20140510141925000003 userkey_12345678901_20140510141925000004,nickname_00_20140510141925000004 userkey_12345678901_20140510141925000005,nickname_00_20140510141925000005 userkey_12345678901_20140510141925000006,nickname_00_20140510141925000006 userkey_12345678901_20140510141925000007,nickname_00_20140510141925000007 -------------------------- CSV data sample (end) --------------------------- โ€˜CSV Data Set Configโ€™ ์— ์„ค์ •ํ•˜๋Š” ๊ฐ’๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Column Description Filename ์ธ์ฆ ํ‚ค(auth_key)์™€ ๋‹‰๋„ค์ž„ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ CSV ํŒŒ์ผ ๊ฒฝ๋กœ Variable Names CSV ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•œ ํ›„, ๋Œ€์ž…ํ•  ๋ณ€์ˆ˜ ๋ช…์นญ๋“ค Recycle on EOF ํŒŒ์ผ ๋์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ, ์ฒ˜์Œ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ฝ์–ด ๋“ค์ด๋Š”์ง€ ์—ฌ๋ถ€ Stop thread on EOF ํŒŒ์ผ ๋์— ๋„๋‹ฌํ•ด ๋” ์ด์ƒ ์ฝ์„ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ์Šค๋ ˆ๋“œ(thread)๋ฅผ ์ค‘์ง€ํ•˜๋Š”์ง€ ์—ฌ๋ถ€ Sharing mode โ€˜All threadsโ€™๋กœ ์„ค์ •ํ•œ๋‹ค.
  • 27. ๏ผ’๏ผ— Thread Group ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” โ€˜Thread Groupโ€™ ์„ค์ •์˜ ์‚ฌ์šฉ์ž ์ˆ˜ (Number of Threads), ๋žจํ”„ ์—… ์‹œ๊ฐ„ (Ramp-up Period), ๋ฐ˜๋ณต ํšŸ์ˆ˜ (Loop count)๋ฅผ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ์— ๋งž๋„๋ก ์กฐ์ •ํ•œ๋‹ค. (๋Œ€์ƒ ์„œ๋ฒ„ ์œ ํ˜•, ์„œ๋ฒ„ ์„ฑ๋Šฅ, ํ…Œ์ŠคํŠธ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋งค๋ฒˆ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•œ๋‹ค.) ์ฐธ๊ณ ๋กœ ๋žจํ”„ ์—…(Ramp-up)์ด๋ž€ ๊ณต์žฅ ๋“ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์‚ฐ์—… ์šฉ์–ด์ด๋ฉฐ, ์žฅ๋น„ ์„ค์น˜ ์ดํ›„ ๋Œ€๋Ÿ‰ ์–‘์‚ฐ์— ๋“ค์–ด๊ฐ€๊ธฐ๊นŒ์ง€ ์ƒ์‚ฐ ๋Šฅ๋ ฅ์˜ ์ฆ๊ฐ€๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋ง์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž ์ˆ˜๋ฅผ 10 ๋ช…์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ๋žจํ”„ ์—… ์‹œ๊ฐ„์„ 30 ์ดˆ๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ, 30 ์ดˆ ๊ตฌ๊ฐ„ ๋‚ด์— ์‚ฌ์šฉ์ž(์Šค๋ ˆ๋“œ)๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค. ๋žจํ”„ ์—… ์‹œ๊ฐ„์„ ์‚ฌ์šฉ์ž ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด ๊ฐ ์‚ฌ์šฉ์ž ๊ฐ„ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์ด ๋œ๋‹ค. (3 ์ดˆ ๋งˆ๋‹ค ํ•œ ๋ช…์”ฉ ์‹œ์ž‘ ํ˜น์€ ์ถœ๋ฐœํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.) ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ jMeter GUI ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด โ€˜Number of Threadsโ€™, โ€œRamp-up Periodโ€™, โ€˜Loop Countโ€™ ๊ฐ’์„ ์ƒ์ˆ˜๋กœ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. ๋ฐ˜๋ฉด์— ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ non-GUI ๋ชจ๋“œ์—์„œ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, ์›๊ฒฉ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์‹œํ•  ๊ฒฝ์šฐ์—๋Š” jMeter property ๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ํ•˜๊ณ , property ๊ฐ’๋“ค์„ jMeter ์‹คํ–‰ ์ธ์ž๋กœ ์ง€์ •ํ•œ๋‹ค. (์ƒ์ˆ˜๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด, ๋ถ€ํ•˜ ์ˆ˜์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•  ๋•Œ ๋งˆ๋‹ค Test Plan ์„ ์ˆ˜์ •ํ•œ ํ›„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • 28. ๏ผ’๏ผ˜ Timer (Constant & Uniform Random) ์‚ฌ์šฉ์ž์˜ ์„œ๋น„์Šค ์‚ฌ์šฉ ํŒจํ„ด์„ ๋ชจ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€˜์‹ค์ œโ€™ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” ํ–‰์œ„ ์‚ฌ์ด์— ์‹œ๊ฐ„ ์ฐจ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž๋Š” ์•„์ฃผ ์งง์€ ๊ฐ„๊ฒฉ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋‹ฌ๋ฆฌ ๋งํ•ด์„œ ์ˆœ๊ฐ„์ ์œผ๋กœ ๋Œ€๋Ÿ‰์˜ ์š”์ฒญ์„ ์ „์†กํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๊ณ„๋งŒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.) jMeter ๋Š” ์„œ๋น„์Šค ์š”์ฒญ ๊ฐ„์— ์ผ์ •ํ•œ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํƒ€์ด๋จธ(timer)๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ํƒ€์ด๋จธ ์œ ํ˜•์ด ์กด์žฌํ•˜๋‚˜, ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณ ์ • ์‹œ๊ฐ„ ํƒ€์ด๋จธ(Constant Timer)์™€ ๊ท ์ผ ๋žœ๋ค ํƒ€์ด๋จธ(Uniform Random Timer)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค. ๊ณ ์ • ์‹œ๊ฐ„ ํƒ€์ด๋จธ ์„ค์ • ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ํƒ€์ด๋จธ๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ(request)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— 0.3 ์ดˆ๋ฅผ ๋Œ€๊ธฐํ•˜๋Š” ์„ค์ •์ด๋‹ค.
  • 29. ๏ผ’๏ผ™ ๊ท ์ผ ๋žœ๋ค ํƒ€์ด๋จธ(Uniform Random Timer) ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ํƒ€์ด๋จธ๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์ตœ์†Œ 3 ์ดˆ, ์ตœ๋Œ€ 5 ์ดˆ์˜ ๋žœ๋ค ์‹œ๊ฐ„์„ ๋Œ€๊ธฐํ•˜๋Š” ์„ค์ •์ด๋‹ค. Listener (Report) ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์‹œ ์ ์šฉํ•˜๋Š” Listener ๋Š” โ€˜Aggregate Graphโ€™, โ€˜Response Time Over Timeโ€™, โ€˜Transactions Per Secondโ€™ ๋“ฑ 3 ๊ฐ€์ง€ ์ด๋‹ค. Aggregate Graph ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ 2 ๊ฐ€์ง€ Listener ๋Š” ํ™•์žฅ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ๋งŒ์ผ, ๋ณ„๋„์˜ ์ง‘๊ณ„ ํˆด์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ ค๊ณ  ํ•  ๊ฒฝ์šฐ์—๋Š” ๊ฐœ๋ณ„ ์š”์ฒญ์— ๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ๋กœ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋Š” โ€˜Sample Data Writerโ€™๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ๋œ๋‹ค. Aggregate Graph (or Aggregate Report) ์ง‘๊ณ„ ๋ณด๊ณ (ํ˜น์€ ์ง‘๊ณ„ ๋ฆฌํฌํŠธ)๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ช…์นญ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์š”์•ฝ ํ–‰(row)๋“ค์„ ํฌํ•จํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค. ๊ฐ๊ฐ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ •๋ณด ํ•ฉ๊ณ„์™€ ์š”์ฒญ ํšŸ์ˆ˜, ์ตœ์†Œ, ์ตœ๋Œ€, ํ‰๊ท , ์˜ค๋ฅ˜ ๋นˆ๋„, ์ฒ˜๋ฆฌ๋Ÿ‰ ๊ทผ์‚ฌ๊ฐ’(approximate throughput), ์ดˆ๋‹น Kilobyte ๋‹จ์œ„ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค. ์ง‘๊ณ„ ๋ณด๊ณ ์— ํฌํ•จ๋˜๋Š” ํ•ญ๋ชฉ๋“ค์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Column Description Label ์ƒ˜ํ”Œ ๋ช…์นญ (API ํ˜น์€ URL ๋ช…์นญ) #Samples ํŠน์ • ์ƒ˜ํ”Œ์˜ ์š”์ฒญ(์‹คํ–‰) ํšŸ์ˆ˜ Average ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„ Median ์‘๋‹ต ์ค‘๊ฐ„ ์ง‘ํ•ฉ์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„, 50%์˜ ์ƒ˜ํ”Œ์€ Median ๋ณด๋‹ค ์‘๋‹ต์‹œ๊ฐ„์ด ์ž‘์œผ๋ฉฐ, ๋‚˜๋จธ์ง€๋Š” ์‘๋‹ต ์‹œ๊ฐ„์ด ๋” ๊ธธ๋‹ค. 90% line 90%์˜ ์ƒ˜ํ”Œ์€ โ€™90 % lineโ€™ ๋ณด๋‹ค ์ ์€ ์‹œ๊ฐ„ ๋‚ด์— ์‹คํ–‰๋œ๋‹ค. ๋‚˜๋จธ์ง€ 10%๋Š” ๋ณด๋‹ค ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๊ธธ๋‹ค. Min ์ตœ์†Œ ์‘๋‹ต ์‹œ๊ฐ„ Max ์ตœ๋Œ€ ์‘๋‹ต ์‹œ๊ฐ„ Error % ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๋น„์œจ Throughput ์ดˆ/๋ถ„/์‹œ๊ฐ„ ๋‹น ์ˆ˜ํ–‰๋œ ์š”์ฒญ ์ˆ˜ Kb/sec ์ดˆ๋‹น Kilobytes ๋‹จ์œ„๋กœ ๊ณ„์‚ฐ๋œ ์ฒ˜๋ฆฌ๋Ÿ‰
  • 30. ๏ผ“๏ผ ์ง‘๊ณ„ ๋ณด๊ณ ๋Š” ํŠน์ • ์‹œ์ ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜์น˜ํ™”๋œ ํ˜•ํƒœ๋กœ ๊ธฐ๋กํ•˜์—ฌ, ์ฃผ๊ธฐ์ /๋ฐ˜๋ณต์  ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ์ด๋ ฅ์„ ํ†ตํ•ด ๊ฐœ์„ /๋ณ€ํ™” ์ถ”์ด๋ฅผ ๋ถ„์„ํ•˜๊ณ , ๊ฐ๊ด€์  ์„ฑ๋Šฅ ํ‰๊ฐ€ ์ž๋ฃŒ๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ™œ์šฉ ๋ฐฉ์‹์€ Benchmark Test ์ˆ˜ํ–‰ ์ „์— Median, Max ์‘๋‹ต ์‹œ๊ฐ„์˜ ๋ชฉํ‘œ ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ , ์ง‘๊ณ„ ๋ณด๊ณ ๋ฅผ ํ†ตํ•ด ๋ชฉํ‘œ ๋‹ฌ์„ฑ ์—ฌ๋ถ€๋ฅผ ํŒ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ชฉํ‘œ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋“œ์›จ์–ด ํ™•์žฅ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ํŠœ๋‹, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ ๊ฒ€ ๋“ฑ์„ ํ†ตํ•ด ํŠœ๋‹์„ ์ˆ˜ํ–‰ํ•œ ๋ชฉํ‘œ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์„ฑ๋Šฅ ์ธก์ •์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. Response Time over Time ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ตฌ๊ฐ„ ๋‚ด์—์„œ ๊ฐ ์š”์ฒญ์˜ ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„์„ ๊ทธ๋ž˜ํ”„๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ถ€ํ•˜๋ฅผ ๊ธด ์‹œ๊ฐ„(long term)๋ฅผ ๋ฐœ์ƒ์‹œ์ผฐ์„ ๋•Œ, ์„œ๋น„์Šค ์‘๋‹ต ์‹œ๊ฐ„์ด ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ผ ์ฆ๊ฐ€ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜๋Š” ์ ์ง„์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์„œ๋ฒ„์˜ ์‘๋‹ต ์„ฑ๋Šฅ ์ถ”์ด๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. BMT ์‹ค์‹œ ๊ฒฐ๊ณผ Response Time ์ด ์•ˆ์ •์ ์ด์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์„œ๋ฒ„ ์ž์›์˜ ์œ ์ถœ ํ˜น์€ ๊ฐ์†Œ(memory leak, I/O wait, database overload, application error ๋“ฑ), ๊ฐ์ข… ์žฅ์•  ์œ ๋ฌด ๋“ฑ์— ๋Œ€ํ•œ ์ ๊ฒ€์„ ์‹ค์‹œํ•œ๋‹ค. Response Timer over Time ๋ฆฌํฌํŠธ๋ฅผ ์ด์šฉํ•ด ์‹œ์Šคํ…œ์˜ ์‹ ๋ขฐ์„ฑ ๋ฐ ์•ˆ์ •์„ฑ์„ ๋ณด์ฆํ•œ๋‹ค.
  • 31. ๏ผ“๏ผ‘ Transactions per Seconds ํ†ต์ƒ์ ์œผ๋กœ TPS ๋ผ๋Š” ์•ฝ์–ด๋กœ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, ์„œ๋น„์Šค(ํ˜น์€ ์‹œ์Šคํ…œ)์ด ๋™์‹œ์— ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ˆ˜ ํ˜น์€ ์ˆ˜์šฉ๋Ÿ‰์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ณดํŽธ์ ์ธ ํ‰๊ฐ€ ์ง€ํ‘œ์ด๋‹ค. TPS ๋ฅผ ์ด์šฉํ•ด ์‹œ์Šคํ…œ์˜ ์ตœ๋Œ€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ์šฉ๋Ÿ‰์„ ์ธก์ •ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, โ€˜ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€์น˜โ€™์ด๋ฉฐ, โ€˜์ ์ • ์ฒ˜๋ฆฌ๋Ÿ‰โ€™์€ ์•„๋‹ˆ๋‹ค. ์ ์ • ์ฒ˜๋ฆฌ๋Ÿ‰์€ ํ•˜๋“œ์›จ์–ด/๋„คํŠธ์›Œํฌ/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์› ๋“ฑ์— ์—ฌ์œ ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด ์‚ฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • 32. ๏ผ“๏ผ’ 4. ๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ค€๋น„ ์‚ฌํ•ญ ๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์ „ ์ค€๋น„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๏ฌ jMeter ์„ค์น˜ : ๋กœ์ปฌ PC ํ˜น์€ ๊ฐœ๋ฐœ ์žฅ๋น„์— jMeter ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๏ฌ jMeter Test Plan : ๊ธฐ๋Šฅ ํ˜น์€ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์„ ์œ„ํ•ด jMeter ํ…Œ์ŠคํŠธ ํ”Œ๋žœ ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. (ํŒŒ์ผ ํ™•์žฅ์ž : jmx) ๏ฌ CSV ๋ฐ์ดํ„ฐ ํŒŒ์ผ : ์„ฑ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CSV ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด ์ค€๋น„๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ jMeter ์‹คํ–‰ Test Plan ์‹คํ–‰ (๊ธฐ๋Šฅ) ์‹คํ–‰ ๊ฒฐ๊ณผ ๊ฒ€ํ†  jMeter ์‹คํ–‰ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์œผ๋ฏ€๋กœ, Local PC ์—์„œ jMeter ๋ฅผ GUI ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค. jMeter ์‹คํ–‰ ํŒŒ์ผ์€ jMeter ์„ค์น˜ ํด๋” ์•„๋ž˜์— ์กด์žฌํ•˜๋Š” bin ํด๋” ๋‚ด์˜ โ€˜jmeter.batโ€™ ํŒŒ์ผ์ด๋‹ค. jMeter ๋ฅผ ์‹คํ–‰ํ•œ ํ›„, โ€˜API_unit_test.jmxโ€™ ํŒŒ์ผ์„ ๋กœ๋“œ(load)ํ•œ๋‹ค.
  • 33. ๏ผ“๏ผ“ Test Plan ์‹คํ–‰ (๊ธฐ๋Šฅ) ํ…Œ์ŠคํŠธ ํ”Œ๋žœ(Test Plan)์„ ๋กœ๋“œํ•œ ํ›„, control-R ๋‹จ์ถ• ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ๋ฉ”๋‰ด ๋ฐ”์—์„œ ๋…น์ƒ‰ ํ™”์‚ดํ‘œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์‹คํ–‰ ๊ฒฐ๊ณผ ๊ฒ€ํ†  โ€˜Summary Reportโ€™, โ€˜View Results in Treeโ€™, โ€˜View Result Tableโ€™์„ ์„ ํƒํ•œ ํ›„, ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€ํ† ํ•œ๋‹ค. ์ •์ƒ์ ์œผ๋กœ ์‘๋‹ตํ•˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ๋“ค์€ ๋ถ‰์€์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜๋ฉฐ, Request ๋ฐ Response data ๋“ฑ์„ ๊ฒ€ํ† ํ•˜์—ฌ ์žฅ์•  ์›์ธ์„ ๋ถ„์„ํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ CSV generator ์‹คํ–‰ Test Plan ์‹คํ–‰ (๋ถ€ํ•˜) jMeter GUI ๋ชจ๋“œ ์‹คํ–‰ CSV input Data file ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ์ž‘์„ฑ Stress Test ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ (jtl) Performance Graph / Report
  • 34. ๏ผ“๏ผ” CSV generator ์‹คํ–‰ ๋ช…๋ น์ค„(command line)์—์„œ CVS ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๏ƒ˜ java -jar RandomUserCsvGenerator_fat.jar ์œ„์™€ ๊ฐ™์ด CSV Generator ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ๋™์ผ ํด๋” ๋‚ด์— โ€˜TestUsers.csvโ€™ ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. (CSV generator ์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค๋ช…์€ โ€˜5. CSV ๋ฐ์ดํ„ฐ ์ƒ์„ฑโ€™ ์ ˆ์„ ์ฐธ์กฐํ•œ๋‹ค.) Test Plan ์‹คํ–‰ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹œ์—๋Š” jMeter ๋ฅผ non-GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•œ๋‹ค. non-GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ์— ํฌํ•จ๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜(environment variables)๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. Variable Description JMETER_HOME jMeter ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ ๊ฒฝ๋กœ (์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ ๊ฒฝ๋กœ) TEST_PLAN jMeter test plan ํŒŒ์ผ ๋ช…์นญ (์ž…๋ ฅ ํŒŒ์ผ ๊ฒฝ๋กœ) RESULT_FILE jMter test ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ ํŒŒ์ผ ๋ช…์นญ (์ถœ๋ ฅ ํŒŒ์ผ ๊ฒฝ๋กœ) jMeter ์‹คํ–‰ ์ธ์ž(parameter)์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. -n : jMeter ๋ฅผ non-GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•œ๋‹ค. -t : jMeter test plan ์ž…๋ ฅ ํŒŒ์ผ์ด๋ฆ„์„ ์„ค์ •ํ•œ๋‹ค. -l : jMeter ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰๊ฒฐ๊ณผ ์ถœ๋ ฅ ํŒŒ์ผ ์ด๋ฆ„์„ ์„ค์ •ํ•œ๋‹ค. -J : jMeter ์†์„ฑ(property)๋ฅผ ์„ค์ •ํ•œ๋‹ค. name=value ํ˜•์‹์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. ์œ„ ์˜ˆ์‹œ์—์„œ๋Š” โ€˜loopsโ€™, โ€˜ramp_upโ€™, โ€˜threadsโ€™ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์˜€์œผ๋ฉฐ, 3 ๊ฐ€์ง€ ๋ณ€์ˆ˜๋Š” thread group ์—์„œ ์ฐธ์กฐํ•œ๋‹ค. rem jMeter run batch script for Windows rem set jMeter installation directory set JMETER_HOME=D:apache-jmeter-2.11 rem set jMeter "test plan" script file name set TEST_PLAN= API_load_test__2_login_browse.jmx rem set jMeter stress test result file name set RESULT_FILE= Stress_Resuts.jtl %JMETER_HOME%binjmeter -n -t %TEST_PLAN% -l %RESULT_FILE% -Jloops=1 -Jramp_up=30 - Jthreads=30
  • 35. ๏ผ“๏ผ• ๋ฐฐ์น˜ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ๋ช…์นญ์ด โ€˜run_jmeter.batโ€™์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ์œ ์‚ฌํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. C:run>run_jmeter C:run>rem set jMeter installation directory C:run>set JMETER_HOME=D:apache-jmeter-2.11 C:run>rem set jMeter "test plan" script file name C:run>set TEST_PLAN= API_load_test__2_login_browse.jmx C:run>rem set jMeter stress test result file name C:run>set RESULT_FILE=_Stress_Resuts.jtl C:run>D: apache-jmeter-2.11binjmeter -n -t API_load_test__ 2_login_browse.jmx -l Stress_Resuts.jtl -Jloops=1 Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=64m; support was removed in 8.0 Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; sup port was removed in 8.0 Creating summariser <summary> Created the tree successfully using API_load_test__2_login_browse.jmx Starting the test @ Mon May 12 15:04:10 KST 2014 (1399874650593) Waiting for possible shutdown message on port 4445 summary + 94 in 19.1s = 4.9/s Avg: 223 Min: 134 Max: 587 Err: 19 (20.21%) Active: 20 Started: 20 Finished: 0 summary + 183 in 30.2s = 6.1/s Avg: 247 Min: 90 Max: 499 Err: 18 (9.84%) Active: 30 Started: 30 Finished: 0 summary = 277 in 49.1s = 5.6/s Avg: 239 Min: 90 Max: 587 Err: 37 (13.36%) summary + 81 in 30.4s = 2.7/s Avg: 157 Min: 79 Max: 400 Err: 51 (62.96%) Active: 3 Started: 30 Finished: 27
  • 36. ๏ผ“๏ผ– summary = 358 in 80s = 4.5/s Avg: 220 Min: 79 Max: 587 Err: 88 (24.58%) summary + 2 in 1.1s = 1.8/s Avg: 173 Min: 164 Max: 183 Err: 2 (100.00%) Active: 0 Started: 30 Finished: 30 summary = 360 in 82.3s = 4.4/s Avg: 220 Min: 79 Max: 587 Err: 90 (25.00%) Tidying up ... @ Mon May 12 15:05:33 KST 2014 (1399874733227) ... end of run jMeter GUI ๋ชจ๋“œ ์‹คํ–‰ jMeter ๋ฅผ non-GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ–ˆ์„ ๊ฒฝ์šฐ, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ํ™•์žฅ์ž๊ฐ€ โ€˜jtlโ€™์ธ ํŒŒ์ผ์— ์ €์žฅ๋œ๋‹ค. ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” jMeter ๋ฅผ GUI ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๊ณ , ๊ฒฐ๊ณผ ํŒŒ์ผ์„ ๋กœ๋“œ(load)ํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. jMeter ๋ฅผ ์‹คํ–‰ํ•œ ํ›„, ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•  listener ๋ฅผ ์„ ํƒํ•œ๋‹ค. Listener ๋‚ด์—์„œ โ€˜Write results to file / Read from fileโ€™ ๊ทธ๋ฃน์˜ โ€˜Filenameโ€™ ํ•ญ๋ชฉ์˜ โ€˜Browse โ€ฆโ€™ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค. ๋ฐฐ์น˜ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ jtl ํŒŒ์ผ์„ ์„ ํƒํ•˜๋ฉด ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ chart / report ํ˜•์‹์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ์ž‘์„ฑ โ€˜Reponse Times Over Timeโ€™, โ€˜Transactions per Secondsโ€™ ๋“ฑ์˜ listener ์—์„œ ์ƒ์„ฑ๋œ chart / graph ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆฝ๋ณด๋“œ๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜, CSV ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ(export)ํ•œ ํ›„ ์—‘์…€์—์„œ ํŽธ์ง‘ํ•˜๋Š” ๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. Listener ์˜ ๊ทธ๋ž˜ํ”„ ํ™”๋ฉด์„ ๋งˆ์šฐ์Šค๋กœ ์šฐํด๋ฆญํ•˜๋ฉด, ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆฝ๋ณด๋“œ๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜, CSV ๋กœ ์ถœ๋ ฅํ•˜๋Š” ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด(context menu)๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.