SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘
Performance Test using jMeter
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’
Revision History
Version Description Author Date
1.0.0 ์ดˆ์•ˆ์ž‘์„ฑ ๊ณฝ์ค‘์„  2014-05-01
1.1.0 โ€˜์˜จ๋ผ์ธ ์„œ๋น„์Šค OpenAPI ํ…Œ์ŠคํŠธ ๊ณ„ํšโ€™ ์ถ”๊ฐ€ ๊ณฝ์ค‘์„  2014-05-03
1.1.1 ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ณ„ํš ์ถ”๊ฐ€ ๊ณฝ์ค‘์„  2014-05-06
1.2.0 โ€˜๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰โ€™ ์ถ”๊ฐ€ ๊ณฝ์ค‘์„  2014-05-12
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“
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........................................................................................................๏ผ’๏ผ—
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ”
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 ๋ชจ๋“œ ์‹คํ–‰ ......................................................................................................๏ผ“๏ผ˜
์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ์ž‘์„ฑ ...........................................................................................................๏ผ“๏ผ™
5. CSV ๋ฐ์ดํ„ฐ ์ƒ์„ฑ............................................................................................................๏ผ”๏ผ
CSV Generator ๊ฐœ์š”...........................................................................................................๏ผ”๏ผ
CSV Generator ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ .........................................................................................๏ผ”๏ผ
Fatjar ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ .........................................................................................................๏ผ”๏ผ
Jar ์ƒ์„ฑ ๋ฐ CSV Generator ์‹คํ–‰ ............................................................................................๏ผ”๏ผ’
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ•
Document Overview
๏ฎ Purpose
๋ณธ๋ฌธ์„œ๋Š” jMeter ๊ธฐ๋ฐ˜์˜ ์›น ์„œ๋น„์Šค ์„ฑ๋Šฅ ํ‰๊ฐ€ ์ ˆ์ฐจ๋ฅผ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค.
๏ฎ Scope
์›น ๊ธฐ๋ฐ˜ ์˜จ๋ผ์ธ ์„œ๋น„์Šค์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด jMeter ๋ฅผ ์ด์šฉํ•ด stress test ๋ฅผ ์‹ค์‹œํ•œ๋‹ค.
๏ฎ Assumptions and Dependencies
๏ฎ How to Use
๏‚— Read the document thoroughly and understand the standards before beginning
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ–
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)์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ—
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 ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
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 ํด๋”์— ๋„ฃ๋Š”๋‹ค.
Report /
Graph
DBMS
Amazon Cloud
Web / WAS
Remote Client
jMeter #1
jMeter #2
jMeter #n
Run Stress Tess
HTTP Requests
HTTP Responses
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ˜
2. jMeter TestPlan ์ž‘์„ฑ ์ ˆ์ฐจ
jMeter ๋‚ด์—์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(test case)๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ƒ์ฐจ์™€ jMeter ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•œ ๊ฐ‚๋žตํ•œ ์„ค๋ช…, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ
์ ƒ์ฐจ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ jMeter ์šฉ์–ด๋ฅผ ์ •๋ฆฌํ•˜์˜€๋‹ค.
2.1. jMeter UI
jMeter ๊ธฐ๋ณธ UI ๋‚ด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•  ํ•ญ๋ชฉ๋“ค์„ ์š”์•ฝํ•˜์˜€๋‹ค.
โ‘  Start TestPlan
TestPlan ์„ ์‹คํ–‰ํ•œ๋‹ค. TestPlan ๋‚ด์— ํฌํ•จ๋œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ, ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ํ…Œ์ŠคํŠธ
์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑ ์™„๋ฃŒํ•œ ํ›„ ์‹œํ—˜ํ•˜๊ฑฐ๋‚˜, ์ด์ ‚์— ์ž‘์„ฑ๋œ TestPlan ์„ ๋กœ๋“œ(load)ํ•œ ํ›„ ์žฌ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
โ‘ก Clear output
TestPlan ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง€์šด๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ TestPlan ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ, ์ด์ ‚ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ
์ง€์šฐ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
โ‘  Start TestPlan โ‘ก Clear output โ‘ข Error/Warning count
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ™
โ‘ข Error / Warning count
์ง์ ‚ TestPlan ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด logViewer
ํŒจ๋„์ด ํ‘œ์‹œ๋œ๋‹ค.
jMeter UI ์ขŒ์ธก ํŒจ๋„์—๋Š” โ€˜TestPlanโ€™๊ณผ โ€˜WorkBenchโ€™๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.
โ‘  TestPlan
jMeter ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(ํ˜น์€ ์‹œ๋‚˜๋ฆฌ์˜ค)์— ๋Œ€ํ•œ ์ ‚๋ฐ˜์ ์ถ ์„ค์ •์„ ํฌํ•จํ•˜๋Š” ์˜์—ญ์ด๋‹ค.
โ‘ก WorkBench
์›Œํฌ๋ฒค์น˜๋Š” ๊ณ„์† ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ž„์‹œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ—˜ํ•˜๊ธฐ ์œ„ํ•œ ์˜์—ญ์ด๋‹ค.
TestPlan ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์ž…๋ ฅํ•œ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
2.2. TestPlan ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์šฉ์–ด
ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ ‚๋ฐ˜์ ์ถ ์„ค์ • ๋ฐ ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” TestPlan ์— ์„ค์ • ํ˜น์€ ์ถ”๊ฐ€ํ•œ๋‹ค.
ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ํ•„์ˆ˜(๊ธฐ๋ณธ) ๊ตฌ์„ฑ ์š”์†Œ๋“ค์€ โ€˜Thead Groups (Users)โ€™, โ€˜Config Elementsโ€™,
โ€˜Samplerโ€™ ๋ฐ โ€˜Listenerโ€™ ์ด๋‹ค. ๋‚˜๋จธ์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ์ข€ ๋” ์ •๊ตํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘๏ผ
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 ์„ ์„ ํƒํ•œ ํ›„, ๋ช…์นญ ๋ฐ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ์ž…๋ ฅํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋“ค์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘๏ผ‘
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โ€™ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘๏ผ’
HTTP Cookie Manager
์„ธ์…˜(session)์„ ํ•„์š”๋กœ ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์œ„ํ•ด ์ฟ ํ‚ค(cookie)๋ฅผ ์„ค์ •ํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘๏ผ“
Thread Group ์ถ”๊ฐ€
ํ…Œ์ŠคํŠธ ๋ฐ˜๋ณต ํšŸ์ˆ˜, ๋™์‹œ ์ ‘์† ์ˆ˜ ๋“ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด Thread Groups ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
Listener ์ถ”๊ฐ€
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Listener ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
View Results Tree
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํŠธ๋ฆฌ(tree) ํ˜•ํƒœ๋กœ ์ƒ์„ธํ•˜๊ฒŒ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ…Œ์ŠคํŠธ ์œ ํ˜•์— ์ƒ๊ด€์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š”
๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ๋‹จ์ ์€ ๋Œ€๊ทœ๋ชจ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ, ๋กœ๊ทธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„ ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์„ ์ฐพ์•„๋ณด๊ธฐ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘๏ผ”
Summary Report
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ์š”์•ฝ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ฐ ์„ฑ๋Šฅ ์ธก์ • ์‹œ์— ์œ ์šฉํ•˜๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘๏ผ•
View Results in Table
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ๋ฐœ์ƒํ•œ ๊ฐœ๋ณ„ ์š”์ฒญ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์—‘์…€ ๋“ฑ์œผ๋กœ ๋‚ด๋ณด๋‚ธ ํ›„ ํ†ต๊ณ„
๋“ฑ ํ›„๋ฐ˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ ํ•ฉํ•˜๋‹ค.
Sampler ์ถ”๊ฐ€
๋งˆ์ง€๋ง‰์œผ๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ฐœ๋ณ„ sampler ํ˜น์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ˜ธ์ถœํ•˜๋Š” API ๊ฒฝ๋กœ(path), ์š”์ฒญ
์ธ์ž(request parameters), ๋ฉ”์†Œ๋“œ(POST, GET, PUT ๋“ฑ) ๋“ฑ์„ ์ž…๋ ฅํ•œ๋‹ค. POST ๋ฐ GET ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” ์š”์ฒญ
์ธ์ž๋ฅผ โ€˜Parametersโ€™ ํƒญ์— ์ž…๋ ฅํ•˜๊ณ , PUT ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” Body Data ์— ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค.
POST ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘๏ผ–
PUT ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘๏ผ—
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 ๋“ฑ์˜ ํ•ญ๋ชฉ์„ ์„ ์–ธํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘๏ผ˜
Name Value Description
server_addr pelb-dan1swb-657109358.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 ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜ ๊ฐ’์„ ์žฌ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ‘๏ผ™
โ€˜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)์— ์ž๋™์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๋Š”
๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ํ•„์š”ํ•˜๋ฉด, ์ฟ ํ‚ค ๋ณ€์ˆ˜์™€ ๊ฐ’์„ ๊ธฐ๋ณธ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’๏ผ
HTTP Request Defaults ์—๋Š” โ€˜์„œ๋ฒ„ ์ฃผ์†Œโ€™ (Server Name or IP)๋ฅผ ์„ค์ •ํ•œ๋‹ค.
HTTP Header Manager ์—๋Š” โ€˜Content-Typeโ€™ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค. โ€˜Content-Typeโ€™ ๋ณ€์ˆ˜๋Š” RESTful API ์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ
ํ˜•์‹์„ ์ •ํ™•ํžˆ ์ง€์ •ํ•ด ์„œ๋ฒ„์—์„œ ์š”์ฒญ ์ธ์ž ํŒŒ์‹ฑ(request parameter parsing) ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ
๊ฒƒ์ด๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’๏ผ‘
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} ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ค‘๋ณต ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๋งค๋ฒˆ
์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’๏ผ’
์‚ฌ์šฉ์ž ์ธ์ฆ
์‚ฌ์šฉ์ž ์ธ์ฆ sampler ์—์„œ๋Š” โ€˜auth_keyโ€™ โ€˜auth_codeโ€™, โ€˜device_idโ€™ ๋“ฑ 3 ๊ฐœ์˜ ์ธ์ž๋ฅผ ์„ค์ •ํ•œ๋‹ค.
Name Value Description
auth_key ${auth_key} ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด
ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ๋งˆ๋‹ค, ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ’์„
์‚ฌ์šฉํ•œ๋‹ค.
auth_code IMEI ์ธ์ฆ ๋ฐฉ์‹์€ ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
device_id 15bf269cbffecf55b904648bb1304a376cd30801 ๋””๋ฐ”์ด์Šค ID ๋Š” ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’๏ผ“
์‚ฌ์šฉ์ž ์ธ์ฆ ํ›„์—, JSON Path Extractor ๋ฅผ ์ด์šฉํ•ด ์‘๋‹ต JSON ๋ฐ์ดํ„ฐ ๋‚ด์—์„œ โ€˜user_keyโ€™ ํ•„๋“œ ๊ฐ’์„ ์ถ”์ถœํ•œ๋‹ค.
์ถ”์ถœ๋œ ๊ฐ’์€ โ€˜user_keyโ€™ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ณ  ์ดํ›„ โ€˜์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒโ€™ ๋“ฑ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
JSON Assertion
Assertion ์€ JSON ํ˜•์‹์˜ ์‘๋‹ต ๋ฐ์ดํ„ฐ(response data)๋ฅผ ํŒŒ์‹ฑ(parsing) ํ•œ ํ›„, ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ์ฒดํฌํ•˜์—ฌ ์ •์ƒ ์œ ๋ฌด๋ฅผ
ํŒ๋‹จํ•œ๋‹ค. ์ •์ƒ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‹จ์ผ ๊ฐ’์ผ ๊ฒฝ์šฐ์—๋Š” โ€˜JSON Path Assertionโ€™์„ ์ด์šฉํ•˜๊ณ , ์ •์ƒ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‘ ๊ฐ€์ง€
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’๏ผ”
์ด์ƒ์ธ ๊ฒฝ์šฐ์—๋Š” โ€˜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โ€™ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’๏ผ•
BeanShell Assertion
โ€˜JSON Path Extractorโ€™์— ์˜ํ•ด ์ถ”์ถœ๋œ ๋ณ€์ˆ˜๋ฅผ โ€˜BeanShell Assertionโ€™์„ ์ด์šฉํ•ด ๊ฒ€์‚ฌํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” โ€˜result_codeโ€™
๋ณ€์ˆ˜์˜ ๊ฐ’์ด โ€˜000โ€™ ์ด๊ฑฐ๋‚˜, โ€˜000โ€™ ์ธ ๊ฒฝ์šฐ ์ •์ƒ์œผ๋กœ ํŒ์ •ํ•˜๊ณ , ์•„๋‹Œ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’๏ผ–
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 ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ถ€ํ•˜
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’๏ผ—
ํ…Œ์ŠคํŠธ์—์„œ ์ •๋ฐ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‚ฐ์ถœํ•˜๋Š” 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
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’๏ผ˜
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โ€™ ๊ฐ’์„ ์ƒ์ˆ˜๋กœ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ’๏ผ™
๋ฐ˜๋ฉด์— ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ non-GUI ๋ชจ๋“œ์—์„œ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, ์›๊ฒฉ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์‹œํ•  ๊ฒฝ์šฐ์—๋Š” jMeter property ๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ
ํ•˜๊ณ , property ๊ฐ’๋“ค์„ jMeter ์‹คํ–‰ ์ธ์ž๋กœ ์ง€์ •ํ•œ๋‹ค. (์ƒ์ˆ˜๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด, ๋ถ€ํ•˜ ์ˆ˜์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•  ๋•Œ ๋งˆ๋‹ค
Test Plan ์„ ์ˆ˜์ •ํ•œ ํ›„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
Timer (Constant & Uniform Random)
์‚ฌ์šฉ์ž์˜ ์„œ๋น„์Šค ์‚ฌ์šฉ ํŒจํ„ด์„ ๋ชจ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€˜์‹ค์ œโ€™ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” ํ–‰์œ„ ์‚ฌ์ด์— ์‹œ๊ฐ„ ์ฐจ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„
๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž๋Š” ์•„์ฃผ ์งง์€ ๊ฐ„๊ฒฉ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋‹ฌ๋ฆฌ ๋งํ•ด์„œ ์ˆœ๊ฐ„์ ์œผ๋กœ ๋Œ€๋Ÿ‰์˜ ์š”์ฒญ์„
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“๏ผ
์ „์†กํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๊ณ„๋งŒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.) jMeter ๋Š” ์„œ๋น„์Šค ์š”์ฒญ ๊ฐ„์— ์ผ์ •ํ•œ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก
ํƒ€์ด๋จธ(timer)๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ํƒ€์ด๋จธ ์œ ํ˜•์ด ์กด์žฌํ•˜๋‚˜, ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณ ์ • ์‹œ๊ฐ„ ํƒ€์ด๋จธ(Constant Timer)์™€ ๊ท ์ผ
๋žœ๋ค ํƒ€์ด๋จธ(Uniform Random Timer)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค.
๊ณ ์ • ์‹œ๊ฐ„ ํƒ€์ด๋จธ ์„ค์ • ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ํƒ€์ด๋จธ๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ(request)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— 0.3 ์ดˆ๋ฅผ ๋Œ€๊ธฐํ•˜๋Š”
์„ค์ •์ด๋‹ค.
๊ท ์ผ ๋žœ๋ค ํƒ€์ด๋จธ(Uniform Random Timer) ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ํƒ€์ด๋จธ๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์ตœ์†Œ 3 ์ดˆ,
์ตœ๋Œ€ 5 ์ดˆ์˜ ๋žœ๋ค ์‹œ๊ฐ„์„ ๋Œ€๊ธฐํ•˜๋Š” ์„ค์ •์ด๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“๏ผ‘
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 ์‘๋‹ต ์‹œ๊ฐ„์˜ ๋ชฉํ‘œ ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ , ์ง‘๊ณ„ ๋ณด๊ณ ๋ฅผ ํ†ตํ•ด
๋ชฉํ‘œ ๋‹ฌ์„ฑ ์—ฌ๋ถ€๋ฅผ ํŒ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ชฉํ‘œ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋“œ์›จ์–ด ํ™•์žฅ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ํŠœ๋‹,
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ ๊ฒ€ ๋“ฑ์„ ํ†ตํ•ด ํŠœ๋‹์„ ์ˆ˜ํ–‰ํ•œ ๋ชฉํ‘œ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์„ฑ๋Šฅ ์ธก์ •์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“๏ผ’
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 ๋ฅผ ์ด์šฉํ•ด ์‹œ์Šคํ…œ์˜ ์ตœ๋Œ€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ์šฉ๋Ÿ‰์„ ์ธก์ •ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ,
โ€˜ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€์น˜โ€™์ด๋ฉฐ, โ€˜์ ์ • ์ฒ˜๋ฆฌ๋Ÿ‰โ€™์€ ์•„๋‹ˆ๋‹ค. ์ ์ • ์ฒ˜๋ฆฌ๋Ÿ‰์€ ํ•˜๋“œ์›จ์–ด/๋„คํŠธ์›Œํฌ/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์› ๋“ฑ์—
์—ฌ์œ ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด ์‚ฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“๏ผ“
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“๏ผ”
4. ๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰
์ค€๋น„ ์‚ฌํ•ญ
์˜จ๋ผ์ถ ์„œ๋น„์Šค ๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์ ‚ ์ค€๋น„๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
๏ฌ jMeter ์„ค์น˜ : ๋กœ์ปฌ PC ํ˜น์€ ๊ฐœ๋ฐœ ์žฅ๋น„์— jMeter ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๏ฌ jMeter Test Plan : ๊ธฐ๋Šฅ ํ˜น์€ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์„ ์œ„ํ•ด jMeter ํ…Œ์ŠคํŠธ ํ”Œ๋žœ ํŒŒ์ท์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
(ํŒŒ์ท ํ™•์žฅ์ž : jmx)
๏ฌ CSV ๋ฐ์ดํ„ฐ ํŒŒ์ท : ์„ฑ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CSV ๋ฐ์ดํ„ฐ ํŒŒ์ท์ด ์ค€๋น„๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ
jMeter ์‹คํ–‰
๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์œผ๋ฏ€๋กœ, Local PC ์—์„œ jMeter ๋ฅผ GUI ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค. jMeter ์‹คํ–‰ ํŒŒ์ผ์€
jMeter ์„ค์น˜ ํด๋” ์•„๋ž˜์— ์กด์žฌํ•˜๋Š” bin ํด๋” ๋‚ด์˜ โ€˜jmeter.batโ€™ ํŒŒ์ผ์ด๋‹ค.
jMeter ๋ฅผ ์‹คํ–‰ํ•œ ํ›„, โ€˜์˜จ๋ผ์ธ ์„œ๋น„์Šค_API_unit_test.jmxโ€™ ํŒŒ์ผ์„ ๋กœ๋“œ(load)ํ•œ๋‹ค.
jMeter ์‹คํ–‰ Test Plan ์‹คํ–‰ (๊ธฐ๋Šฅ) ์‹คํ–‰ ๊ฒฐ๊ณผ ๊ฒ€ํ† 
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“๏ผ•
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
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“๏ผ–
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
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“๏ผ—
๋ฐฐ์น˜ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ๋ช…์นญ์ด โ€˜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
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“๏ผ˜
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 ํ˜•์‹์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ“๏ผ™
์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ์ž‘์„ฑ
โ€˜Reponse Times Over Timeโ€™, โ€˜Transactions per Secondsโ€™ ๋“ฑ์˜ listener ์—์„œ ์ƒ์„ฑ๋œ chart / graph ์ด๋ฏธ์ง€๋ฅผ
ํด๋ฆฝ๋ณด๋“œ๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜, CSV ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ(export)ํ•œ ํ›„ ์—‘์…€์—์„œ ํŽธ์ง‘ํ•˜๋Š” ๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ๋ฅผ
์ž‘์„ฑํ•œ๋‹ค. Listener ์˜ ๊ทธ๋ž˜ํ”„ ํ™”๋ฉด์„ ๋งˆ์šฐ์Šค๋กœ ์šฐํด๋ฆญํ•˜๋ฉด, ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆฝ๋ณด๋“œ๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜, CSV ๋กœ ์ถœ๋ ฅํ•˜๋Š”
์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด(context menu)๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ”๏ผ
5. CSV ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
CSV Generator ๊ฐœ์š”
์˜จ๋ผ์ถ ์„œ๋น„์Šค ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž„์˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์ท๊ด„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ
๋ฐ์ดํ„ฐ๋ฅผ ์ž๋ฐ” ๋ฐฐ์น˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(Java batch application)๋ฅผ ์ด์šฉํ•ด CSV(Comma Separated Value) ํ˜•์‹์˜ ํ…์ŠคํŠธ
ํŒŒ์ท๋กœ ์ƒ์„ฑํ•œ๋‹ค.
CSV Generator ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ
CSV Generator ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ”„๋กœ์ ํŠธ ๋ช…์นญ์€ โ€˜RandomUserCsvGeneratorโ€™ ์ด๋‹ค. ๋ฉ”์ถ ํด๋ž˜์Šค๋Š”
โ€˜CsvDataSetMakerโ€™์ด๋ฉฐ, ์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(dependent library)๋Š” Apache Commons BeansUtilsโ€™์ด๋‹ค. ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์€
์•„๋ž˜์™€ ๊ฐ™๋‹ค.
Fatjar ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜
CSV Generator ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•„์š”ํ•œ library ๋“ค์„ ํฌํ•จํ•œ ๋‹จ์ท jar ํŒŒ์ท๋กœ ๋ณ€ํ™–ํ•˜๊ธฐ ์œ„ํ•ด, Fatjar ํ”Œ๋Ÿฌ๊ทธ์ถ์„
์‚ฌ์šฉํ•œ๋‹ค. Fatjar ํ”Œ๋Ÿฌ๊ทธ์ถ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์ดํด๋ฆฝ์Šค์˜ โ€˜Help > Install New Softwareโ€™ ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ”๏ผ‘
โ€˜Installโ€™ ๋‹ค์ด์–ผ๋กœ๊ทธ ์šฐ์ธก ์ƒ๋‹จ์˜ โ€˜Add...โ€™ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.
โ€˜Nameโ€™ ํ•ญ๋ชฉ์— โ€˜fatjarโ€™๋ฅผ ์ž…๋ ฅํ•˜๊ณ , โ€˜Locationโ€™ ํ•ญ๋ชฉ์— โ€˜http://kurucz-grafika.de/fatjar/โ€™๋ฅผ ์ž…๋ ฅํ•œ ํ›„, OK ๋ฒ„ํŠผ์„
ํด๋ฆญํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ”๏ผ’
FatJar ํ”Œ๋Ÿฌ๊ทธ์ถ์„ ์„ ํƒํ•œ ํ›„, ์„ค์น˜๋ฅผ ์ง‚ํ–‰ํ•œ๋‹ค.
Jar ์ƒ์„ฑ ๋ฐ CSV Generator ์‹คํ–‰
์‹คํ–‰ ๊ฐ€๋Šฅํ•œ jar (executable jar)๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € fatjar ํ”Œ๋Ÿฌ๊ทธ์ถ์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํŒจํ‚ค์ง€
์ต์Šคํ”Œ๋กœ๋Ÿฌ(package explorer)์—์„œ โ€˜RandomUserCsvGeneratorโ€™ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•œ ํ›„, ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ ๋ฒ„ํŠผ์„ ์ด์šฉํ•ด
์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด(context menu)๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด์—์„œ โ€˜Build Fat Jarโ€™๋ฅผ ์„ ํƒํ•œ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ”๏ผ“
โ€˜Main-classโ€™ ํ•ญ๋ชฉ์— โ€˜com.samsung.msc.์˜จ๋ผ์ถ ์„œ๋น„์Šค.randcsv.CsvDataSetMakerโ€™ ๋ฅผ ์ž…๋ ฅํ•œ ํ›„, โ€˜Finishโ€™ ๋ฒ„ํŠผ์„
ํด๋ฆญํ•œ๋‹ค.
ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ(root) ๊ฒฝ๋กœ์— โ€˜RandomUserCsvGenerator_fat.jarโ€™ ํŒŒ์ท์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ถํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ์„ฑ๋œ
jar ํŒŒ์ท์„ ์ด์šฉํ•ด ๋ช…๋ น์ค„(command line)์—์„œ ์†์‰ฝ๊ฒŒ CSV ์ƒ์„ฑ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
Project Name : Mobile Service
ยฉ Sunny Kwak ๏ผ”๏ผ”
๋ช…๋ น์ค„(command line)์—์„œ CVS ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
๏ƒ˜ java -jar RandomUserCsvGenerator_fat.jar
์œ„์™€ ๊ฐ™์ด CSV Generator ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ๋™์ท ํด๋” ๋‚ด์— โ€˜์˜จ๋ผ์ถ ์„œ๋น„์Šค TestUsers.csvโ€™ ํŒŒ์ท์ด ์ƒ์„ฑ๋œ๋‹ค.

Weitere รคhnliche Inhalte

Andere mochten auch

แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„Žแ…ฆแ„Œแ…ฆ แ„‹แ…ตแ†ซแ„แ…ณแ„…แ…ฉ
แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„Žแ…ฆแ„Œแ…ฆ แ„‹แ…ตแ†ซแ„แ…ณแ„…แ…ฉแ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„Žแ…ฆแ„Œแ…ฆ แ„‹แ…ตแ†ซแ„แ…ณแ„…แ…ฉ
แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„Žแ…ฆแ„Œแ…ฆ แ„‹แ…ตแ†ซแ„แ…ณแ„…แ…ฉJunnie Jobs
ย 
์šฐ๋ถ„ํˆฌ ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋‚˜๋ˆ”๋ชจ์ž„ ๋ฐœํ‘œ 2013-02-23
์šฐ๋ถ„ํˆฌ ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋‚˜๋ˆ”๋ชจ์ž„ ๋ฐœํ‘œ 2013-02-23์šฐ๋ถ„ํˆฌ ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋‚˜๋ˆ”๋ชจ์ž„ ๋ฐœํ‘œ 2013-02-23
์šฐ๋ถ„ํˆฌ ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋‚˜๋ˆ”๋ชจ์ž„ ๋ฐœํ‘œ 2013-02-23์œ ๋ช…ํ™˜ FunFun Yoo
ย 
[์ œ5ํšŒ KCD] ํ•œ๊ตญ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์šด์˜ํ•œ๋‹ค๋Š” ๊ฑด...
[์ œ5ํšŒ KCD] ํ•œ๊ตญ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์šด์˜ํ•œ๋‹ค๋Š” ๊ฑด...[์ œ5ํšŒ KCD] ํ•œ๊ตญ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์šด์˜ํ•œ๋‹ค๋Š” ๊ฑด...
[์ œ5ํšŒ KCD] ํ•œ๊ตญ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์šด์˜ํ•œ๋‹ค๋Š” ๊ฑด...์œ ๋ช…ํ™˜ FunFun Yoo
ย 
์ฐฝ์กฐ๊ฒฝ์ œ IoT ํ•ด์ปคํ†ค ๊ต์œก 2์ผ์ฐจ ๊ต์œก ์ž๋ฃŒ
์ฐฝ์กฐ๊ฒฝ์ œ IoT ํ•ด์ปคํ†ค ๊ต์œก 2์ผ์ฐจ ๊ต์œก ์ž๋ฃŒ์ฐฝ์กฐ๊ฒฝ์ œ IoT ํ•ด์ปคํ†ค ๊ต์œก 2์ผ์ฐจ ๊ต์œก ์ž๋ฃŒ
์ฐฝ์กฐ๊ฒฝ์ œ IoT ํ•ด์ปคํ†ค ๊ต์œก 2์ผ์ฐจ ๊ต์œก ์ž๋ฃŒ์œ ๋ช…ํ™˜ FunFun Yoo
ย 
Web test
Web testWeb test
Web testRaghu Kiran
ย 
แ„†แ…ฎแ†ซแ„ƒแ…ฉแ†ฏแ„‹แ…ตแ„€แ…ก แ„€แ…กแ„…แ…ณแ„Žแ…ตแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ แ„€แ…ตแ„Žแ…ฉ 2แ„Žแ…กแ„‰แ…ต
แ„†แ…ฎแ†ซแ„ƒแ…ฉแ†ฏแ„‹แ…ตแ„€แ…ก แ„€แ…กแ„…แ…ณแ„Žแ…ตแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ แ„€แ…ตแ„Žแ…ฉ 2แ„Žแ…กแ„‰แ…ตแ„†แ…ฎแ†ซแ„ƒแ…ฉแ†ฏแ„‹แ…ตแ„€แ…ก แ„€แ…กแ„…แ…ณแ„Žแ…ตแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ แ„€แ…ตแ„Žแ…ฉ 2แ„Žแ…กแ„‰แ…ต
แ„†แ…ฎแ†ซแ„ƒแ…ฉแ†ฏแ„‹แ…ตแ„€แ…ก แ„€แ…กแ„…แ…ณแ„Žแ…ตแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ แ„€แ…ตแ„Žแ…ฉ 2แ„Žแ…กแ„‰แ…ต๋™ํ˜„ ์กฐ
ย 
[Codebakery ์ผ๋ฐ˜๋™์•„๋ฆฌ] IoT์˜ ๊ฐœ๋… ๋ฐ ๋ถ„์•ผ, ์ „๋ง
[Codebakery ์ผ๋ฐ˜๋™์•„๋ฆฌ] IoT์˜ ๊ฐœ๋… ๋ฐ ๋ถ„์•ผ, ์ „๋ง[Codebakery ์ผ๋ฐ˜๋™์•„๋ฆฌ] IoT์˜ ๊ฐœ๋… ๋ฐ ๋ถ„์•ผ, ์ „๋ง
[Codebakery ์ผ๋ฐ˜๋™์•„๋ฆฌ] IoT์˜ ๊ฐœ๋… ๋ฐ ๋ถ„์•ผ, ์ „๋ง๋™ํ˜„ ์กฐ
ย 
Mobile Testing with Selenium 2 by Jason Huggins
Mobile Testing with Selenium 2 by Jason HugginsMobile Testing with Selenium 2 by Jason Huggins
Mobile Testing with Selenium 2 by Jason HugginsSauce Labs
ย 
Web performance testing
Web performance testingWeb performance testing
Web performance testingPatrick Meenan
ย 
์‚ฌ์น™์—ฐ์‚ฐ ํ”„๋กœ๊ทธ๋žจ
์‚ฌ์น™์—ฐ์‚ฐ ํ”„๋กœ๊ทธ๋žจ์‚ฌ์น™์—ฐ์‚ฐ ํ”„๋กœ๊ทธ๋žจ
์‚ฌ์น™์—ฐ์‚ฐ ํ”„๋กœ๊ทธ๋žจ์ค‘์„  ๊ณฝ
ย 
Performance testing for web applications โ€“ techniques, metrics and profiling
Performance testing for web applications โ€“ techniques, metrics and profilingPerformance testing for web applications โ€“ techniques, metrics and profiling
Performance testing for web applications โ€“ techniques, metrics and profilingTestCampRO
ย 
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆOnline service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ์ค‘์„  ๊ณฝ
ย 
์ˆซ์ž ๊ตฌ๋ถ„์ž ์ฒ˜๋ฆฌ (Digit group separators)
์ˆซ์ž ๊ตฌ๋ถ„์ž ์ฒ˜๋ฆฌ (Digit group separators)์ˆซ์ž ๊ตฌ๋ถ„์ž ์ฒ˜๋ฆฌ (Digit group separators)
์ˆซ์ž ๊ตฌ๋ถ„์ž ์ฒ˜๋ฆฌ (Digit group separators)์ค‘์„  ๊ณฝ
ย 
Java ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด??
Java ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด??Java ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด??
Java ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด??์œ ๋ช…ํ™˜ FunFun Yoo
ย 

Andere mochten auch (17)

แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„Žแ…ฆแ„Œแ…ฆ แ„‹แ…ตแ†ซแ„แ…ณแ„…แ…ฉ
แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„Žแ…ฆแ„Œแ…ฆ แ„‹แ…ตแ†ซแ„แ…ณแ„…แ…ฉแ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„Žแ…ฆแ„Œแ…ฆ แ„‹แ…ตแ†ซแ„แ…ณแ„…แ…ฉ
แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„Žแ…ฆแ„Œแ…ฆ แ„‹แ…ตแ†ซแ„แ…ณแ„…แ…ฉ
ย 
์šฐ๋ถ„ํˆฌ ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋‚˜๋ˆ”๋ชจ์ž„ ๋ฐœํ‘œ 2013-02-23
์šฐ๋ถ„ํˆฌ ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋‚˜๋ˆ”๋ชจ์ž„ ๋ฐœํ‘œ 2013-02-23์šฐ๋ถ„ํˆฌ ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋‚˜๋ˆ”๋ชจ์ž„ ๋ฐœํ‘œ 2013-02-23
์šฐ๋ถ„ํˆฌ ํ•œ๊ตญ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋‚˜๋ˆ”๋ชจ์ž„ ๋ฐœํ‘œ 2013-02-23
ย 
[์ œ5ํšŒ KCD] ํ•œ๊ตญ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์šด์˜ํ•œ๋‹ค๋Š” ๊ฑด...
[์ œ5ํšŒ KCD] ํ•œ๊ตญ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์šด์˜ํ•œ๋‹ค๋Š” ๊ฑด...[์ œ5ํšŒ KCD] ํ•œ๊ตญ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์šด์˜ํ•œ๋‹ค๋Š” ๊ฑด...
[์ œ5ํšŒ KCD] ํ•œ๊ตญ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์šด์˜ํ•œ๋‹ค๋Š” ๊ฑด...
ย 
์ฐฝ์กฐ๊ฒฝ์ œ IoT ํ•ด์ปคํ†ค ๊ต์œก 2์ผ์ฐจ ๊ต์œก ์ž๋ฃŒ
์ฐฝ์กฐ๊ฒฝ์ œ IoT ํ•ด์ปคํ†ค ๊ต์œก 2์ผ์ฐจ ๊ต์œก ์ž๋ฃŒ์ฐฝ์กฐ๊ฒฝ์ œ IoT ํ•ด์ปคํ†ค ๊ต์œก 2์ผ์ฐจ ๊ต์œก ์ž๋ฃŒ
์ฐฝ์กฐ๊ฒฝ์ œ IoT ํ•ด์ปคํ†ค ๊ต์œก 2์ผ์ฐจ ๊ต์œก ์ž๋ฃŒ
ย 
Hello std.io ์œ ๋ช…ํ™˜_20140125
Hello std.io ์œ ๋ช…ํ™˜_20140125Hello std.io ์œ ๋ช…ํ™˜_20140125
Hello std.io ์œ ๋ช…ํ™˜_20140125
ย 
Web test
Web testWeb test
Web test
ย 
แ„†แ…ฎแ†ซแ„ƒแ…ฉแ†ฏแ„‹แ…ตแ„€แ…ก แ„€แ…กแ„…แ…ณแ„Žแ…ตแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ แ„€แ…ตแ„Žแ…ฉ 2แ„Žแ…กแ„‰แ…ต
แ„†แ…ฎแ†ซแ„ƒแ…ฉแ†ฏแ„‹แ…ตแ„€แ…ก แ„€แ…กแ„…แ…ณแ„Žแ…ตแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ แ„€แ…ตแ„Žแ…ฉ 2แ„Žแ…กแ„‰แ…ตแ„†แ…ฎแ†ซแ„ƒแ…ฉแ†ฏแ„‹แ…ตแ„€แ…ก แ„€แ…กแ„…แ…ณแ„Žแ…ตแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ แ„€แ…ตแ„Žแ…ฉ 2แ„Žแ…กแ„‰แ…ต
แ„†แ…ฎแ†ซแ„ƒแ…ฉแ†ฏแ„‹แ…ตแ„€แ…ก แ„€แ…กแ„…แ…ณแ„Žแ…ตแ„‚แ…ณแ†ซ แ„‹แ…ฐแ†ธ แ„‘แ…ณแ„…แ…ฉแ†ซแ„แ…ณแ„‹แ…ฆแ†ซแ„ƒแ…ณ แ„€แ…ตแ„Žแ…ฉ 2แ„Žแ…กแ„‰แ…ต
ย 
[Codebakery ์ผ๋ฐ˜๋™์•„๋ฆฌ] IoT์˜ ๊ฐœ๋… ๋ฐ ๋ถ„์•ผ, ์ „๋ง
[Codebakery ์ผ๋ฐ˜๋™์•„๋ฆฌ] IoT์˜ ๊ฐœ๋… ๋ฐ ๋ถ„์•ผ, ์ „๋ง[Codebakery ์ผ๋ฐ˜๋™์•„๋ฆฌ] IoT์˜ ๊ฐœ๋… ๋ฐ ๋ถ„์•ผ, ์ „๋ง
[Codebakery ์ผ๋ฐ˜๋™์•„๋ฆฌ] IoT์˜ ๊ฐœ๋… ๋ฐ ๋ถ„์•ผ, ์ „๋ง
ย 
Intranet query tuning (example)
Intranet query tuning (example)Intranet query tuning (example)
Intranet query tuning (example)
ย 
Mobile Testing with Selenium 2 by Jason Huggins
Mobile Testing with Selenium 2 by Jason HugginsMobile Testing with Selenium 2 by Jason Huggins
Mobile Testing with Selenium 2 by Jason Huggins
ย 
Web performance testing
Web performance testingWeb performance testing
Web performance testing
ย 
์‚ฌ์น™์—ฐ์‚ฐ ํ”„๋กœ๊ทธ๋žจ
์‚ฌ์น™์—ฐ์‚ฐ ํ”„๋กœ๊ทธ๋žจ์‚ฌ์น™์—ฐ์‚ฐ ํ”„๋กœ๊ทธ๋žจ
์‚ฌ์น™์—ฐ์‚ฐ ํ”„๋กœ๊ทธ๋žจ
ย 
Performance testing for web applications โ€“ techniques, metrics and profiling
Performance testing for web applications โ€“ techniques, metrics and profilingPerformance testing for web applications โ€“ techniques, metrics and profiling
Performance testing for web applications โ€“ techniques, metrics and profiling
ย 
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆOnline service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
Online service ๊ณ„์ธต๋ณ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐฉ์•ˆ
ย 
Scale up and scale out
Scale up and scale outScale up and scale out
Scale up and scale out
ย 
์ˆซ์ž ๊ตฌ๋ถ„์ž ์ฒ˜๋ฆฌ (Digit group separators)
์ˆซ์ž ๊ตฌ๋ถ„์ž ์ฒ˜๋ฆฌ (Digit group separators)์ˆซ์ž ๊ตฌ๋ถ„์ž ์ฒ˜๋ฆฌ (Digit group separators)
์ˆซ์ž ๊ตฌ๋ถ„์ž ์ฒ˜๋ฆฌ (Digit group separators)
ย 
Java ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด??
Java ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด??Java ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด??
Java ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด??
ย 

ร„hnlich wie Web service performance_test_using_jmeter_ver1.2

Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2Tommy Lee
ย 
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4uEngine Solutions
ย 
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ Opennaru, inc.
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผHION IT
ย 
SMART Retail report_ index
SMART Retail report_ indexSMART Retail report_ index
SMART Retail report_ indexM&M Networks
ย 
Graduation Report
Graduation ReportGraduation Report
Graduation ReportJongwon
ย 
[DataUs]ํด๋ผ์šฐ๋“œ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๋ณด์•ˆ ๊ฐ€์ด๋“œ
[DataUs]ํด๋ผ์šฐ๋“œ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๋ณด์•ˆ ๊ฐ€์ด๋“œ[DataUs]ํด๋ผ์šฐ๋“œ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๋ณด์•ˆ ๊ฐ€์ด๋“œ
[DataUs]ํด๋ผ์šฐ๋“œ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๋ณด์•ˆ ๊ฐ€์ด๋“œDataUs
ย 
Qemu & KVM Guide #1 (intro & basic)
Qemu & KVM Guide #1 (intro & basic)Qemu & KVM Guide #1 (intro & basic)
Qemu & KVM Guide #1 (intro & basic)JungIn Jung
ย 
mathworks_installation_help_ko_KR.pdf
mathworks_installation_help_ko_KR.pdfmathworks_installation_help_ko_KR.pdf
mathworks_installation_help_ko_KR.pdfalex401360
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ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
ย 
Evil's first floor_UI_rough
Evil's first floor_UI_roughEvil's first floor_UI_rough
Evil's first floor_UI_roughshinHyojae1
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผHION IT
ย 
Adam Park on Information Technology
Adam Park on Information TechnologyAdam Park on Information Technology
Adam Park on Information TechnologyAdam Park
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผHION IT
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผHION IT
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZD410 ๊ฐ์—ด ๋ฐ์Šคํฌํƒ‘ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZD410 ๊ฐ์—ด ๋ฐ์Šคํฌํƒ‘ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZD410 ๊ฐ์—ด ๋ฐ์Šคํฌํƒ‘ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZD410 ๊ฐ์—ด ๋ฐ์Šคํฌํƒ‘ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผHION IT
ย 

ร„hnlich wie Web service performance_test_using_jmeter_ver1.2 (20)

Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2Performance test using_j_meter_ver1.2
Performance test using_j_meter_ver1.2
ย 
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4
์œ ์—”์ง„ Bpm ์‚ฌ์šฉ์ž๋ฉ”๋‰ด์–ผ v 3.5.4
ย 
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ
JBoss EAP ์„ค์น˜ ๊ฐ€์ด๋“œ
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZE500์‹œ๋ฆฌ์ฆˆ ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ์—”์ง„ ์˜คํ† ๋ผ๋ฒจ๋Ÿฌ์—”์ง„ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ์—”์ง„ ๋งค๋‰ด์–ผ
ย 
SMART Retail report_ index
SMART Retail report_ indexSMART Retail report_ index
SMART Retail report_ index
ย 
Graduation Report
Graduation ReportGraduation Report
Graduation Report
ย 
[DataUs]ํด๋ผ์šฐ๋“œ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๋ณด์•ˆ ๊ฐ€์ด๋“œ
[DataUs]ํด๋ผ์šฐ๋“œ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๋ณด์•ˆ ๊ฐ€์ด๋“œ[DataUs]ํด๋ผ์šฐ๋“œ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๋ณด์•ˆ ๊ฐ€์ด๋“œ
[DataUs]ํด๋ผ์šฐ๋“œ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ๋ณด์•ˆ ๊ฐ€์ด๋“œ
ย 
Anygate 01 03
Anygate 01 03Anygate 01 03
Anygate 01 03
ย 
Qemu & KVM Guide #1 (intro & basic)
Qemu & KVM Guide #1 (intro & basic)Qemu & KVM Guide #1 (intro & basic)
Qemu & KVM Guide #1 (intro & basic)
ย 
mathworks_installation_help_ko_KR.pdf
mathworks_installation_help_ko_KR.pdfmathworks_installation_help_ko_KR.pdf
mathworks_installation_help_ko_KR.pdf
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra 105SLPlus ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ 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ํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
ย 
Evil's first floor_UI_rough
Evil's first floor_UI_roughEvil's first floor_UI_rough
Evil's first floor_UI_rough
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZT220 ZT230 ์—ด์ „์‚ฌ๊ฐ์—ด ์‚ฐ์—…์šฉ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
ย 
Adam Park on Information Technology
Adam Park on Information TechnologyAdam Park on Information Technology
Adam Park on Information Technology
ย 
StarUML NS - Example
StarUML NS - ExampleStarUML NS - Example
StarUML NS - Example
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra R110Xi4 ์—ด์ „์‚ฌ๊ฐ์—ด RFIDํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
ย 
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZD410 ๊ฐ์—ด ๋ฐ์Šคํฌํƒ‘ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZD410 ๊ฐ์—ด ๋ฐ์Šคํฌํƒ‘ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZD410 ๊ฐ์—ด ๋ฐ์Šคํฌํƒ‘ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
์ง€๋ธŒ๋ผํ”„๋ฆฐํ„ฐ Zebra ZD410 ๊ฐ์—ด ๋ฐ์Šคํฌํƒ‘ ๋ฐ”์ฝ”๋“œํ”„๋ฆฐํ„ฐ ๋งค๋‰ด์–ผ
ย 

Mehr von ์ค‘์„  ๊ณฝ

์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ค‘์„  ๊ณฝ
ย 
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)์ค‘์„  ๊ณฝ
ย 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ๋ณ€์ฒœ ๊ณผ์ •
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ๋ณ€์ฒœ ๊ณผ์ •ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ๋ณ€์ฒœ ๊ณผ์ •
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ๋ณ€์ฒœ ๊ณผ์ •์ค‘์„  ๊ณฝ
ย 
์  ํ‚จ์Šค ์„ค์น˜ ๋ฐ ์„ค์ •
์  ํ‚จ์Šค ์„ค์น˜ ๋ฐ ์„ค์ •์  ํ‚จ์Šค ์„ค์น˜ ๋ฐ ์„ค์ •
์  ํ‚จ์Šค ์„ค์น˜ ๋ฐ ์„ค์ •์ค‘์„  ๊ณฝ
ย 
์ง€์†์ ์ธ ํ†ตํ•ฉ
์ง€์†์ ์ธ ํ†ตํ•ฉ์ง€์†์ ์ธ ํ†ตํ•ฉ
์ง€์†์ ์ธ ํ†ตํ•ฉ์ค‘์„  ๊ณฝ
ย 
Test driven development short lesson
Test driven development   short lessonTest driven development   short lesson
Test driven development short lesson์ค‘์„  ๊ณฝ
ย 
Db ์ง„๋‹จ ๋ฐ ํŠœ๋‹ ๋ณด๊ณ  (example)
Db ์ง„๋‹จ ๋ฐ ํŠœ๋‹ ๋ณด๊ณ  (example)Db ์ง„๋‹จ ๋ฐ ํŠœ๋‹ ๋ณด๊ณ  (example)
Db ์ง„๋‹จ ๋ฐ ํŠœ๋‹ ๋ณด๊ณ  (example)์ค‘์„  ๊ณฝ
ย 
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œJava rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ์ค‘์„  ๊ณฝ
ย 
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œJava rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ์ค‘์„  ๊ณฝ
ย 
์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์ธํ„ฐ๋„ท
์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์ธํ„ฐ๋„ท์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์ธํ„ฐ๋„ท
์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์ธํ„ฐ๋„ท์ค‘์„  ๊ณฝ
ย 
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)์ค‘์„  ๊ณฝ
ย 
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ์ค‘์„  ๊ณฝ
ย 
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ์ค‘์„  ๊ณฝ
ย 
์„œ๋ฒ„ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ •์˜์™€ ์ดํ•ด
์„œ๋ฒ„ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ •์˜์™€ ์ดํ•ด์„œ๋ฒ„ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ •์˜์™€ ์ดํ•ด
์„œ๋ฒ„ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ •์˜์™€ ์ดํ•ด์ค‘์„  ๊ณฝ
ย 
๊ฐ์ฒด์ง€ํ–ฅ ์ฒ ํ•™ ๊ทธ๋ฆฌ๊ณ  5๋Œ€ ๊ฐœ๋…
๊ฐ์ฒด์ง€ํ–ฅ ์ฒ ํ•™ ๊ทธ๋ฆฌ๊ณ  5๋Œ€ ๊ฐœ๋…๊ฐ์ฒด์ง€ํ–ฅ ์ฒ ํ•™ ๊ทธ๋ฆฌ๊ณ  5๋Œ€ ๊ฐœ๋…
๊ฐ์ฒด์ง€ํ–ฅ ์ฒ ํ•™ ๊ทธ๋ฆฌ๊ณ  5๋Œ€ ๊ฐœ๋…์ค‘์„  ๊ณฝ
ย 
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์ค‘์„  ๊ณฝ
ย 
๋ฉ”์ด๋ธ ๊ธฐ๋ณธ ์ดํ•ด
๋ฉ”์ด๋ธ ๊ธฐ๋ณธ ์ดํ•ด๋ฉ”์ด๋ธ ๊ธฐ๋ณธ ์ดํ•ด
๋ฉ”์ด๋ธ ๊ธฐ๋ณธ ์ดํ•ด์ค‘์„  ๊ณฝ
ย 
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 2์ง„์ˆ˜ ๊ธฐ๋ฐ˜์˜ ์ปดํ“จํ„ฐ ๋™์ž‘ ์›๋ฆฌ
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 2์ง„์ˆ˜ ๊ธฐ๋ฐ˜์˜ ์ปดํ“จํ„ฐ ๋™์ž‘ ์›๋ฆฌํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 2์ง„์ˆ˜ ๊ธฐ๋ฐ˜์˜ ์ปดํ“จํ„ฐ ๋™์ž‘ ์›๋ฆฌ
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 2์ง„์ˆ˜ ๊ธฐ๋ฐ˜์˜ ์ปดํ“จํ„ฐ ๋™์ž‘ ์›๋ฆฌ์ค‘์„  ๊ณฝ
ย 
์†Œํ”„ํŠธ์›จ์–ด์˜ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ด
์†Œํ”„ํŠธ์›จ์–ด์˜ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ด์†Œํ”„ํŠธ์›จ์–ด์˜ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ด
์†Œํ”„ํŠธ์›จ์–ด์˜ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ด์ค‘์„  ๊ณฝ
ย 

Mehr von ์ค‘์„  ๊ณฝ (20)

์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
์ž๋ฐ”๋กœ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
ย 
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)
์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜ ์›น ์„œ๋น„์Šค ์„ค๊ณ„ (Example)
ย 
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ๋ณ€์ฒœ ๊ณผ์ •
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ๋ณ€์ฒœ ๊ณผ์ •ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ๋ณ€์ฒœ ๊ณผ์ •
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ๋ณ€์ฒœ ๊ณผ์ •
ย 
์  ํ‚จ์Šค ์„ค์น˜ ๋ฐ ์„ค์ •
์  ํ‚จ์Šค ์„ค์น˜ ๋ฐ ์„ค์ •์  ํ‚จ์Šค ์„ค์น˜ ๋ฐ ์„ค์ •
์  ํ‚จ์Šค ์„ค์น˜ ๋ฐ ์„ค์ •
ย 
์ง€์†์ ์ธ ํ†ตํ•ฉ
์ง€์†์ ์ธ ํ†ตํ•ฉ์ง€์†์ ์ธ ํ†ตํ•ฉ
์ง€์†์ ์ธ ํ†ตํ•ฉ
ย 
Test driven development short lesson
Test driven development   short lessonTest driven development   short lesson
Test driven development short lesson
ย 
Db ์ง„๋‹จ ๋ฐ ํŠœ๋‹ ๋ณด๊ณ  (example)
Db ์ง„๋‹จ ๋ฐ ํŠœ๋‹ ๋ณด๊ณ  (example)Db ์ง„๋‹จ ๋ฐ ํŠœ๋‹ ๋ณด๊ณ  (example)
Db ์ง„๋‹จ ๋ฐ ํŠœ๋‹ ๋ณด๊ณ  (example)
ย 
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œJava rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
ย 
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œJava rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
Java rmi ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ
ย 
์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์ธํ„ฐ๋„ท
์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์ธํ„ฐ๋„ท์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์ธํ„ฐ๋„ท
์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์ธํ„ฐ๋„ท
ย 
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)
์ž๋ฐ” ์ง๋ ฌํ™” (Java serialization)
ย 
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ
ย 
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ
์„œ๋ฒ„ ์•„ํ‚คํ…์ณ ์ž…๋ฌธ
ย 
์„œ๋ฒ„ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ •์˜์™€ ์ดํ•ด
์„œ๋ฒ„ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ •์˜์™€ ์ดํ•ด์„œ๋ฒ„ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ •์˜์™€ ์ดํ•ด
์„œ๋ฒ„ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ •์˜์™€ ์ดํ•ด
ย 
Apache ZooKeeper ์†Œ๊ฐœ
Apache ZooKeeper ์†Œ๊ฐœApache ZooKeeper ์†Œ๊ฐœ
Apache ZooKeeper ์†Œ๊ฐœ
ย 
๊ฐ์ฒด์ง€ํ–ฅ ์ฒ ํ•™ ๊ทธ๋ฆฌ๊ณ  5๋Œ€ ๊ฐœ๋…
๊ฐ์ฒด์ง€ํ–ฅ ์ฒ ํ•™ ๊ทธ๋ฆฌ๊ณ  5๋Œ€ ๊ฐœ๋…๊ฐ์ฒด์ง€ํ–ฅ ์ฒ ํ•™ ๊ทธ๋ฆฌ๊ณ  5๋Œ€ ๊ฐœ๋…
๊ฐ์ฒด์ง€ํ–ฅ ์ฒ ํ•™ ๊ทธ๋ฆฌ๊ณ  5๋Œ€ ๊ฐœ๋…
ย 
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•
ย 
๋ฉ”์ด๋ธ ๊ธฐ๋ณธ ์ดํ•ด
๋ฉ”์ด๋ธ ๊ธฐ๋ณธ ์ดํ•ด๋ฉ”์ด๋ธ ๊ธฐ๋ณธ ์ดํ•ด
๋ฉ”์ด๋ธ ๊ธฐ๋ณธ ์ดํ•ด
ย 
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 2์ง„์ˆ˜ ๊ธฐ๋ฐ˜์˜ ์ปดํ“จํ„ฐ ๋™์ž‘ ์›๋ฆฌ
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 2์ง„์ˆ˜ ๊ธฐ๋ฐ˜์˜ ์ปดํ“จํ„ฐ ๋™์ž‘ ์›๋ฆฌํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 2์ง„์ˆ˜ ๊ธฐ๋ฐ˜์˜ ์ปดํ“จํ„ฐ ๋™์ž‘ ์›๋ฆฌ
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 2์ง„์ˆ˜ ๊ธฐ๋ฐ˜์˜ ์ปดํ“จํ„ฐ ๋™์ž‘ ์›๋ฆฌ
ย 
์†Œํ”„ํŠธ์›จ์–ด์˜ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ด
์†Œํ”„ํŠธ์›จ์–ด์˜ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ด์†Œํ”„ํŠธ์›จ์–ด์˜ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ด
์†Œํ”„ํŠธ์›จ์–ด์˜ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ด
ย 

Web service performance_test_using_jmeter_ver1.2

  • 1. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘ Performance Test using jMeter
  • 2. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’ Revision History Version Description Author Date 1.0.0 ์ดˆ์•ˆ์ž‘์„ฑ ๊ณฝ์ค‘์„  2014-05-01 1.1.0 โ€˜์˜จ๋ผ์ธ ์„œ๋น„์Šค OpenAPI ํ…Œ์ŠคํŠธ ๊ณ„ํšโ€™ ์ถ”๊ฐ€ ๊ณฝ์ค‘์„  2014-05-03 1.1.1 ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ณ„ํš ์ถ”๊ฐ€ ๊ณฝ์ค‘์„  2014-05-06 1.2.0 โ€˜๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰โ€™ ์ถ”๊ฐ€ ๊ณฝ์ค‘์„  2014-05-12
  • 3. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“ 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........................................................................................................๏ผ’๏ผ—
  • 4. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ” 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 ๋ชจ๋“œ ์‹คํ–‰ ......................................................................................................๏ผ“๏ผ˜ ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ์ž‘์„ฑ ...........................................................................................................๏ผ“๏ผ™ 5. CSV ๋ฐ์ดํ„ฐ ์ƒ์„ฑ............................................................................................................๏ผ”๏ผ CSV Generator ๊ฐœ์š”...........................................................................................................๏ผ”๏ผ CSV Generator ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ .........................................................................................๏ผ”๏ผ Fatjar ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ .........................................................................................................๏ผ”๏ผ Jar ์ƒ์„ฑ ๋ฐ CSV Generator ์‹คํ–‰ ............................................................................................๏ผ”๏ผ’
  • 5. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ• Document Overview ๏ฎ Purpose ๋ณธ๋ฌธ์„œ๋Š” jMeter ๊ธฐ๋ฐ˜์˜ ์›น ์„œ๋น„์Šค ์„ฑ๋Šฅ ํ‰๊ฐ€ ์ ˆ์ฐจ๋ฅผ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค. ๏ฎ Scope ์›น ๊ธฐ๋ฐ˜ ์˜จ๋ผ์ธ ์„œ๋น„์Šค์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด jMeter ๋ฅผ ์ด์šฉํ•ด stress test ๋ฅผ ์‹ค์‹œํ•œ๋‹ค. ๏ฎ Assumptions and Dependencies ๏ฎ How to Use ๏‚— Read the document thoroughly and understand the standards before beginning
  • 6. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ– 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)์„ ์œ„ํ•œ ์ถ”๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.
  • 7. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ— 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 ๊ฐ€ ์‹คํ–‰๋œ๋‹ค. 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 ํด๋”์— ๋„ฃ๋Š”๋‹ค. Report / Graph DBMS Amazon Cloud Web / WAS Remote Client jMeter #1 jMeter #2 jMeter #n Run Stress Tess HTTP Requests HTTP Responses
  • 8. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ˜ 2. jMeter TestPlan ์ž‘์„ฑ ์ ˆ์ฐจ jMeter ๋‚ด์—์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(test case)๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ƒ์ฐจ์™€ jMeter ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•œ ๊ฐ‚๋žตํ•œ ์„ค๋ช…, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ ์ ƒ์ฐจ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ jMeter ์šฉ์–ด๋ฅผ ์ •๋ฆฌํ•˜์˜€๋‹ค. 2.1. jMeter UI jMeter ๊ธฐ๋ณธ UI ๋‚ด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•  ํ•ญ๋ชฉ๋“ค์„ ์š”์•ฝํ•˜์˜€๋‹ค. โ‘  Start TestPlan TestPlan ์„ ์‹คํ–‰ํ•œ๋‹ค. TestPlan ๋‚ด์— ํฌํ•จ๋œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ, ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑ ์™„๋ฃŒํ•œ ํ›„ ์‹œํ—˜ํ•˜๊ฑฐ๋‚˜, ์ด์ ‚์— ์ž‘์„ฑ๋œ TestPlan ์„ ๋กœ๋“œ(load)ํ•œ ํ›„ ์žฌ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. โ‘ก Clear output TestPlan ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง€์šด๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณต ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ TestPlan ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ, ์ด์ ‚ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์ง€์šฐ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. โ‘  Start TestPlan โ‘ก Clear output โ‘ข Error/Warning count
  • 9. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ™ โ‘ข Error / Warning count ์ง์ ‚ TestPlan ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๋ฉด logViewer ํŒจ๋„์ด ํ‘œ์‹œ๋œ๋‹ค. jMeter UI ์ขŒ์ธก ํŒจ๋„์—๋Š” โ€˜TestPlanโ€™๊ณผ โ€˜WorkBenchโ€™๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค. โ‘  TestPlan jMeter ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(ํ˜น์€ ์‹œ๋‚˜๋ฆฌ์˜ค)์— ๋Œ€ํ•œ ์ ‚๋ฐ˜์ ์ถ ์„ค์ •์„ ํฌํ•จํ•˜๋Š” ์˜์—ญ์ด๋‹ค. โ‘ก WorkBench ์›Œํฌ๋ฒค์น˜๋Š” ๊ณ„์† ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ž„์‹œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ—˜ํ•˜๊ธฐ ์œ„ํ•œ ์˜์—ญ์ด๋‹ค. TestPlan ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์ž…๋ ฅํ•œ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 2.2. TestPlan ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์šฉ์–ด ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ ‚๋ฐ˜์ ์ถ ์„ค์ • ๋ฐ ๊ฐœ๋ณ„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” TestPlan ์— ์„ค์ • ํ˜น์€ ์ถ”๊ฐ€ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ํ•„์ˆ˜(๊ธฐ๋ณธ) ๊ตฌ์„ฑ ์š”์†Œ๋“ค์€ โ€˜Thead Groups (Users)โ€™, โ€˜Config Elementsโ€™, โ€˜Samplerโ€™ ๋ฐ โ€˜Listenerโ€™ ์ด๋‹ค. ๋‚˜๋จธ์ง€ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ์ข€ ๋” ์ •๊ตํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•œ๋‹ค.
  • 10. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘๏ผ 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 ์„ ์„ ํƒํ•œ ํ›„, ๋ช…์นญ ๋ฐ ๊ฐ„๋‹จํ•œ ์„ค๋ช…์„ ์ž…๋ ฅํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋“ค์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 11. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘๏ผ‘ 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โ€™ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
  • 12. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘๏ผ’ HTTP Cookie Manager ์„ธ์…˜(session)์„ ํ•„์š”๋กœ ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์œ„ํ•ด ์ฟ ํ‚ค(cookie)๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  • 13. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘๏ผ“ Thread Group ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ ๋ฐ˜๋ณต ํšŸ์ˆ˜, ๋™์‹œ ์ ‘์† ์ˆ˜ ๋“ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด Thread Groups ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. Listener ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Listener ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. View Results Tree ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํŠธ๋ฆฌ(tree) ํ˜•ํƒœ๋กœ ์ƒ์„ธํ•˜๊ฒŒ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ…Œ์ŠคํŠธ ์œ ํ˜•์— ์ƒ๊ด€์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ๋‹จ์ ์€ ๋Œ€๊ทœ๋ชจ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ, ๋กœ๊ทธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„ ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์„ ์ฐพ์•„๋ณด๊ธฐ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 14. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘๏ผ” Summary Report ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ  ์š”์•ฝ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋ฐ ์„ฑ๋Šฅ ์ธก์ • ์‹œ์— ์œ ์šฉํ•˜๋‹ค.
  • 15. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘๏ผ• View Results in Table ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ๋ฐœ์ƒํ•œ ๊ฐœ๋ณ„ ์š”์ฒญ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์—‘์…€ ๋“ฑ์œผ๋กœ ๋‚ด๋ณด๋‚ธ ํ›„ ํ†ต๊ณ„ ๋“ฑ ํ›„๋ฐ˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ ํ•ฉํ•˜๋‹ค. Sampler ์ถ”๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ฐœ๋ณ„ sampler ํ˜น์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ˜ธ์ถœํ•˜๋Š” API ๊ฒฝ๋กœ(path), ์š”์ฒญ ์ธ์ž(request parameters), ๋ฉ”์†Œ๋“œ(POST, GET, PUT ๋“ฑ) ๋“ฑ์„ ์ž…๋ ฅํ•œ๋‹ค. POST ๋ฐ GET ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” ์š”์ฒญ ์ธ์ž๋ฅผ โ€˜Parametersโ€™ ํƒญ์— ์ž…๋ ฅํ•˜๊ณ , PUT ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” Body Data ์— ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค. POST ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
  • 16. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘๏ผ– PUT ๋ฉ”์†Œ๋“œ์ธ ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ๋‹ค.
  • 17. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘๏ผ— 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 ๋“ฑ์˜ ํ•ญ๋ชฉ์„ ์„ ์–ธํ•œ๋‹ค.
  • 18. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘๏ผ˜ Name Value Description server_addr pelb-dan1swb-657109358.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 ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜ ๊ฐ’์„ ์žฌ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • 19. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ‘๏ผ™ โ€˜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)์— ์ž๋™์œผ๋กœ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ํ•„์š”ํ•˜๋ฉด, ์ฟ ํ‚ค ๋ณ€์ˆ˜์™€ ๊ฐ’์„ ๊ธฐ๋ณธ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 20. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’๏ผ HTTP Request Defaults ์—๋Š” โ€˜์„œ๋ฒ„ ์ฃผ์†Œโ€™ (Server Name or IP)๋ฅผ ์„ค์ •ํ•œ๋‹ค. HTTP Header Manager ์—๋Š” โ€˜Content-Typeโ€™ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค. โ€˜Content-Typeโ€™ ๋ณ€์ˆ˜๋Š” RESTful API ์˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ •ํ™•ํžˆ ์ง€์ •ํ•ด ์„œ๋ฒ„์—์„œ ์š”์ฒญ ์ธ์ž ํŒŒ์‹ฑ(request parameter parsing) ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.
  • 21. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’๏ผ‘ 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} ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ค‘๋ณต ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • 22. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’๏ผ’ ์‚ฌ์šฉ์ž ์ธ์ฆ ์‚ฌ์šฉ์ž ์ธ์ฆ sampler ์—์„œ๋Š” โ€˜auth_keyโ€™ โ€˜auth_codeโ€™, โ€˜device_idโ€™ ๋“ฑ 3 ๊ฐœ์˜ ์ธ์ž๋ฅผ ์„ค์ •ํ•œ๋‹ค. Name Value Description auth_key ${auth_key} ์‚ฌ์šฉ์ž ์ •์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์‹œ ๋งˆ๋‹ค, ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค. auth_code IMEI ์ธ์ฆ ๋ฐฉ์‹์€ ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค. device_id 15bf269cbffecf55b904648bb1304a376cd30801 ๋””๋ฐ”์ด์Šค ID ๋Š” ๊ณ ์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • 23. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’๏ผ“ ์‚ฌ์šฉ์ž ์ธ์ฆ ํ›„์—, JSON Path Extractor ๋ฅผ ์ด์šฉํ•ด ์‘๋‹ต JSON ๋ฐ์ดํ„ฐ ๋‚ด์—์„œ โ€˜user_keyโ€™ ํ•„๋“œ ๊ฐ’์„ ์ถ”์ถœํ•œ๋‹ค. ์ถ”์ถœ๋œ ๊ฐ’์€ โ€˜user_keyโ€™ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ณ  ์ดํ›„ โ€˜์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒโ€™ ๋“ฑ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์—์„œ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. JSON Assertion Assertion ์€ JSON ํ˜•์‹์˜ ์‘๋‹ต ๋ฐ์ดํ„ฐ(response data)๋ฅผ ํŒŒ์‹ฑ(parsing) ํ•œ ํ›„, ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ์ฒดํฌํ•˜์—ฌ ์ •์ƒ ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•œ๋‹ค. ์ •์ƒ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‹จ์ผ ๊ฐ’์ผ ๊ฒฝ์šฐ์—๋Š” โ€˜JSON Path Assertionโ€™์„ ์ด์šฉํ•˜๊ณ , ์ •์ƒ ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ ๋‘ ๊ฐ€์ง€
  • 24. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’๏ผ” ์ด์ƒ์ธ ๊ฒฝ์šฐ์—๋Š” โ€˜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โ€™ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ๋‹ค.
  • 25. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’๏ผ• BeanShell Assertion โ€˜JSON Path Extractorโ€™์— ์˜ํ•ด ์ถ”์ถœ๋œ ๋ณ€์ˆ˜๋ฅผ โ€˜BeanShell Assertionโ€™์„ ์ด์šฉํ•ด ๊ฒ€์‚ฌํ•œ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” โ€˜result_codeโ€™ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด โ€˜000โ€™ ์ด๊ฑฐ๋‚˜, โ€˜000โ€™ ์ธ ๊ฒฝ์šฐ ์ •์ƒ์œผ๋กœ ํŒ์ •ํ•˜๊ณ , ์•„๋‹Œ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • 26. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’๏ผ– 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 ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ถ€ํ•˜
  • 27. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’๏ผ— ํ…Œ์ŠคํŠธ์—์„œ ์ •๋ฐ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‚ฐ์ถœํ•˜๋Š” 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
  • 28. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’๏ผ˜ 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โ€™ ๊ฐ’์„ ์ƒ์ˆ˜๋กœ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.
  • 29. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ’๏ผ™ ๋ฐ˜๋ฉด์— ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ non-GUI ๋ชจ๋“œ์—์„œ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜, ์›๊ฒฉ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์‹œํ•  ๊ฒฝ์šฐ์—๋Š” jMeter property ๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ํ•˜๊ณ , property ๊ฐ’๋“ค์„ jMeter ์‹คํ–‰ ์ธ์ž๋กœ ์ง€์ •ํ•œ๋‹ค. (์ƒ์ˆ˜๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด, ๋ถ€ํ•˜ ์ˆ˜์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•  ๋•Œ ๋งˆ๋‹ค Test Plan ์„ ์ˆ˜์ •ํ•œ ํ›„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค. Timer (Constant & Uniform Random) ์‚ฌ์šฉ์ž์˜ ์„œ๋น„์Šค ์‚ฌ์šฉ ํŒจํ„ด์„ ๋ชจ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€˜์‹ค์ œโ€™ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” ํ–‰์œ„ ์‚ฌ์ด์— ์‹œ๊ฐ„ ์ฐจ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž๋Š” ์•„์ฃผ ์งง์€ ๊ฐ„๊ฒฉ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋‹ฌ๋ฆฌ ๋งํ•ด์„œ ์ˆœ๊ฐ„์ ์œผ๋กœ ๋Œ€๋Ÿ‰์˜ ์š”์ฒญ์„
  • 30. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“๏ผ ์ „์†กํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๊ณ„๋งŒ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.) jMeter ๋Š” ์„œ๋น„์Šค ์š”์ฒญ ๊ฐ„์— ์ผ์ •ํ•œ ์‹œ๊ฐ„ ์ฐจ์ด๋ฅผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํƒ€์ด๋จธ(timer)๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ํƒ€์ด๋จธ ์œ ํ˜•์ด ์กด์žฌํ•˜๋‚˜, ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณ ์ • ์‹œ๊ฐ„ ํƒ€์ด๋จธ(Constant Timer)์™€ ๊ท ์ผ ๋žœ๋ค ํƒ€์ด๋จธ(Uniform Random Timer)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค. ๊ณ ์ • ์‹œ๊ฐ„ ํƒ€์ด๋จธ ์„ค์ • ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ํƒ€์ด๋จธ๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ(request)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— 0.3 ์ดˆ๋ฅผ ๋Œ€๊ธฐํ•˜๋Š” ์„ค์ •์ด๋‹ค. ๊ท ์ผ ๋žœ๋ค ํƒ€์ด๋จธ(Uniform Random Timer) ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ํƒ€์ด๋จธ๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์ตœ์†Œ 3 ์ดˆ, ์ตœ๋Œ€ 5 ์ดˆ์˜ ๋žœ๋ค ์‹œ๊ฐ„์„ ๋Œ€๊ธฐํ•˜๋Š” ์„ค์ •์ด๋‹ค.
  • 31. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“๏ผ‘ 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 ์‘๋‹ต ์‹œ๊ฐ„์˜ ๋ชฉํ‘œ ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ , ์ง‘๊ณ„ ๋ณด๊ณ ๋ฅผ ํ†ตํ•ด ๋ชฉํ‘œ ๋‹ฌ์„ฑ ์—ฌ๋ถ€๋ฅผ ํŒ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ชฉํ‘œ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋“œ์›จ์–ด ํ™•์žฅ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ํŠœ๋‹, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ ๊ฒ€ ๋“ฑ์„ ํ†ตํ•ด ํŠœ๋‹์„ ์ˆ˜ํ–‰ํ•œ ๋ชฉํ‘œ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์„ฑ๋Šฅ ์ธก์ •์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • 32. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“๏ผ’ 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 ๋ฅผ ์ด์šฉํ•ด ์‹œ์Šคํ…œ์˜ ์ตœ๋Œ€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ์šฉ๋Ÿ‰์„ ์ธก์ •ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, โ€˜ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€์น˜โ€™์ด๋ฉฐ, โ€˜์ ์ • ์ฒ˜๋ฆฌ๋Ÿ‰โ€™์€ ์•„๋‹ˆ๋‹ค. ์ ์ • ์ฒ˜๋ฆฌ๋Ÿ‰์€ ํ•˜๋“œ์›จ์–ด/๋„คํŠธ์›Œํฌ/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์› ๋“ฑ์— ์—ฌ์œ ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด ์‚ฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • 33. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“๏ผ“
  • 34. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“๏ผ” 4. ๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ค€๋น„ ์‚ฌํ•ญ ์˜จ๋ผ์ถ ์„œ๋น„์Šค ๊ธฐ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์ ‚ ์ค€๋น„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๏ฌ jMeter ์„ค์น˜ : ๋กœ์ปฌ PC ํ˜น์€ ๊ฐœ๋ฐœ ์žฅ๋น„์— jMeter ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๏ฌ jMeter Test Plan : ๊ธฐ๋Šฅ ํ˜น์€ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์„ ์œ„ํ•ด jMeter ํ…Œ์ŠคํŠธ ํ”Œ๋žœ ํŒŒ์ท์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. (ํŒŒ์ท ํ™•์žฅ์ž : jmx) ๏ฌ CSV ๋ฐ์ดํ„ฐ ํŒŒ์ท : ์„ฑ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” CSV ๋ฐ์ดํ„ฐ ํŒŒ์ท์ด ์ค€๋น„๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ์ ˆ์ฐจ jMeter ์‹คํ–‰ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์œผ๋ฏ€๋กœ, Local PC ์—์„œ jMeter ๋ฅผ GUI ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค. jMeter ์‹คํ–‰ ํŒŒ์ผ์€ jMeter ์„ค์น˜ ํด๋” ์•„๋ž˜์— ์กด์žฌํ•˜๋Š” bin ํด๋” ๋‚ด์˜ โ€˜jmeter.batโ€™ ํŒŒ์ผ์ด๋‹ค. jMeter ๋ฅผ ์‹คํ–‰ํ•œ ํ›„, โ€˜์˜จ๋ผ์ธ ์„œ๋น„์Šค_API_unit_test.jmxโ€™ ํŒŒ์ผ์„ ๋กœ๋“œ(load)ํ•œ๋‹ค. jMeter ์‹คํ–‰ Test Plan ์‹คํ–‰ (๊ธฐ๋Šฅ) ์‹คํ–‰ ๊ฒฐ๊ณผ ๊ฒ€ํ† 
  • 35. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“๏ผ• 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
  • 36. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“๏ผ– 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
  • 37. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“๏ผ— ๋ฐฐ์น˜ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ๋ช…์นญ์ด โ€˜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
  • 38. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“๏ผ˜ 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 ํ˜•์‹์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 39. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ“๏ผ™ ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ์ž‘์„ฑ โ€˜Reponse Times Over Timeโ€™, โ€˜Transactions per Secondsโ€™ ๋“ฑ์˜ listener ์—์„œ ์ƒ์„ฑ๋œ chart / graph ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆฝ๋ณด๋“œ๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜, CSV ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ(export)ํ•œ ํ›„ ์—‘์…€์—์„œ ํŽธ์ง‘ํ•˜๋Š” ๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. Listener ์˜ ๊ทธ๋ž˜ํ”„ ํ™”๋ฉด์„ ๋งˆ์šฐ์Šค๋กœ ์šฐํด๋ฆญํ•˜๋ฉด, ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆฝ๋ณด๋“œ๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜, CSV ๋กœ ์ถœ๋ ฅํ•˜๋Š” ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด(context menu)๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.
  • 40. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ”๏ผ 5. CSV ๋ฐ์ดํ„ฐ ์ƒ์„ฑ CSV Generator ๊ฐœ์š” ์˜จ๋ผ์ถ ์„œ๋น„์Šค ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž„์˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ์ท๊ด„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋ฐ” ๋ฐฐ์น˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(Java batch application)๋ฅผ ์ด์šฉํ•ด CSV(Comma Separated Value) ํ˜•์‹์˜ ํ…์ŠคํŠธ ํŒŒ์ท๋กœ ์ƒ์„ฑํ•œ๋‹ค. CSV Generator ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ CSV Generator ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ”„๋กœ์ ํŠธ ๋ช…์นญ์€ โ€˜RandomUserCsvGeneratorโ€™ ์ด๋‹ค. ๋ฉ”์ถ ํด๋ž˜์Šค๋Š” โ€˜CsvDataSetMakerโ€™์ด๋ฉฐ, ์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(dependent library)๋Š” Apache Commons BeansUtilsโ€™์ด๋‹ค. ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. Fatjar ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜ CSV Generator ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•„์š”ํ•œ library ๋“ค์„ ํฌํ•จํ•œ ๋‹จ์ท jar ํŒŒ์ท๋กœ ๋ณ€ํ™–ํ•˜๊ธฐ ์œ„ํ•ด, Fatjar ํ”Œ๋Ÿฌ๊ทธ์ถ์„ ์‚ฌ์šฉํ•œ๋‹ค. Fatjar ํ”Œ๋Ÿฌ๊ทธ์ถ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์ดํด๋ฆฝ์Šค์˜ โ€˜Help > Install New Softwareโ€™ ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•œ๋‹ค.
  • 41. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ”๏ผ‘ โ€˜Installโ€™ ๋‹ค์ด์–ผ๋กœ๊ทธ ์šฐ์ธก ์ƒ๋‹จ์˜ โ€˜Add...โ€™ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค. โ€˜Nameโ€™ ํ•ญ๋ชฉ์— โ€˜fatjarโ€™๋ฅผ ์ž…๋ ฅํ•˜๊ณ , โ€˜Locationโ€™ ํ•ญ๋ชฉ์— โ€˜http://kurucz-grafika.de/fatjar/โ€™๋ฅผ ์ž…๋ ฅํ•œ ํ›„, OK ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.
  • 42. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ”๏ผ’ FatJar ํ”Œ๋Ÿฌ๊ทธ์ถ์„ ์„ ํƒํ•œ ํ›„, ์„ค์น˜๋ฅผ ์ง‚ํ–‰ํ•œ๋‹ค. Jar ์ƒ์„ฑ ๋ฐ CSV Generator ์‹คํ–‰ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ jar (executable jar)๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € fatjar ํ”Œ๋Ÿฌ๊ทธ์ถ์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํŒจํ‚ค์ง€ ์ต์Šคํ”Œ๋กœ๋Ÿฌ(package explorer)์—์„œ โ€˜RandomUserCsvGeneratorโ€™ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•œ ํ›„, ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ ๋ฒ„ํŠผ์„ ์ด์šฉํ•ด ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด(context menu)๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด์—์„œ โ€˜Build Fat Jarโ€™๋ฅผ ์„ ํƒํ•œ๋‹ค.
  • 43. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ”๏ผ“ โ€˜Main-classโ€™ ํ•ญ๋ชฉ์— โ€˜com.samsung.msc.์˜จ๋ผ์ถ ์„œ๋น„์Šค.randcsv.CsvDataSetMakerโ€™ ๋ฅผ ์ž…๋ ฅํ•œ ํ›„, โ€˜Finishโ€™ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ(root) ๊ฒฝ๋กœ์— โ€˜RandomUserCsvGenerator_fat.jarโ€™ ํŒŒ์ท์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ถํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒ์„ฑ๋œ jar ํŒŒ์ท์„ ์ด์šฉํ•ด ๋ช…๋ น์ค„(command line)์—์„œ ์†์‰ฝ๊ฒŒ CSV ์ƒ์„ฑ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 44. Project Name : Mobile Service ยฉ Sunny Kwak ๏ผ”๏ผ” ๋ช…๋ น์ค„(command line)์—์„œ CVS ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๏ƒ˜ java -jar RandomUserCsvGenerator_fat.jar ์œ„์™€ ๊ฐ™์ด CSV Generator ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ๋™์ท ํด๋” ๋‚ด์— โ€˜์˜จ๋ผ์ถ ์„œ๋น„์Šค TestUsers.csvโ€™ ํŒŒ์ท์ด ์ƒ์„ฑ๋œ๋‹ค.