Skip to content

Artillery: Performance testing tool

gintooooonic edited this page Nov 14, 2021 · 4 revisions

Artillery๋Š” ๊ฐ€๋ณ๊ณ  ํŽธํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ํˆด์ด๋‹ค. Node.js๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

๋” ํŒŒ์›Œํ’€ํ•˜๊ณ  ์ •๊ตํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋“ค๋„ ์žˆ๊ฒ ์ง€๋งŒ, ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ์ •๋„๋Š” Artillery๋กœ ์ถฉ๋ถ„ํžˆ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. (์ ์œผ๋ฉฐ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์‹ค๋ฌด์—์„œ๋Š” ์–ด๋–ค ํ…Œ์ŠคํŒ… ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€๋„ ๊ถ๊ธˆํ•ด์ง„๋‹ค.) ์‚ฌ์ž๊ฐ™์ด ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์ธ๋งŒํผ, ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ๋„๊ตฌ์ธ Artillery๊ฐ€ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ ๊ฐœ์„  ์ž‘์—…์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

์„ค์น˜

ํ”„๋กœ์ ํŠธ์—์„œ devDependency๋กœ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์ปดํ“จํ„ฐ์— ์ „์—ญ ์„ค์น˜ํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ˜„์žฌ๋Š” ์ „์—ญ ์„ค์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค.

npm install -g [email protected]

2.x์˜ ์ตœ์‹  ๋ฒ„์ „ ๋Œ€์‹ ์— 1.7.9 ๋ฒ„์ „์„ ์„ค์น˜ํ•˜์˜€๋‹ค. 2.x ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ํ…Œ์ŠคํŠธ Report์—์„œ ์ฐจํŠธ๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ฐธ๊ณ 

์‚ฌ์šฉ๋ฒ•

1. ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž

ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ json์ด๋‚˜ yml ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ๋‚ด์šฉ์„ test.json ํŒŒ์ผ๋กœ ์ €์žฅํ•œ๋‹ค.

{
	"config": {
		"target": "https://sajagachi.ga",
		"phases": [{ "duration": 10, "arrivalRate": 10, "name": "Warm up" }],
		"defaults": {
			"headers": {
				"User-Agent": "Artillery"
			}
		}
	},
	"scenarios": [
		{
			"name": "Search API",
			"flow": [
				{
					"get": {
						"url": "/?offset=0&limit=15&category=1&lat=37.5642135&long=127.0016985"
					}
				}
			]
		}
	]
}

sajagachi.ga์— 10์ดˆ๋™์•ˆ ์ดˆ๋‹น ์—ด ๋ฒˆ์˜ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค. (๋ฐฐํฌ ์„œ๋ฒ„ ํ„ฐ์งˆ๊นŒ๋ด ๋งค์šฐ ์†Œ์‹ฌํ•˜๊ฒŒ ์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ...) ์‚ฌ์šฉํ•œ ์ฃผ์š” ์˜ต์…˜๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๊ณ , ์ž์„ธํ•œ ๊ฒƒ์€ ๋‚˜์ค‘์— ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ๋” ์กฐ์‚ฌํ•ด๋ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค. ๊ณต์‹ ๋ฌธ์„œ: Test Script Reference

  • config
    • target: ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ํƒ€๊นƒ์˜ ํ˜ธ์ŠคํŠธ
    • phases
      • duration: ๋ช‡ ์ดˆ ๋™์•ˆ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ธ์ง€
      • arrivalRate: 1์ดˆ์— ๋ช‡ ๋ฒˆ ์š”์ฒญํ•  ๊ฒƒ์ธ์ง€
  • scenarios
    • name: ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ์ด๋ฆ„
    • flow: ์ˆ˜ํ–‰ํ•  ์š”์ฒญ์„ ๊ธฐ์ˆ 

2. ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์ž

๋‹ค์Œ ๋ช…๋ น์–ด๋Š” test.json ํŒŒ์ผ์— ์ž‘์„ฑ๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ report.json ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ธ๋‹ค.

artillery run -o report.json test.json

3. ๊ฒฐ๊ณผ ๋ฆฌํฌํŠธ๋ฅผ ํ™•์ธํ•˜์ž

report.json์œผ๋กœ ์ƒ์„ฑ๋œ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ report.html ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

artillery report -o report.html report.json

์ƒ์„ฑ๋œ report.html ํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €๋กœ ์—ด์–ด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ณด๊ณ ์„œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ฑ๋Šฅ ์ธก์ •์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์–‘ํ•œ ์ง€ํ‘œ์™€ ํ•จ๊ป˜ ์ฐจํŠธ๋กœ ํ‘œํ˜„๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๊ฒฐ๊ณผ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์„์ง€๋Š” ์กฐ๊ธˆ ๋” ์กฐ์‚ฌํ•ด๋ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

๐Ÿ“– ๊ฐœ๋ฐœ๋ฌธ์„œ

๐Ÿšฅ ๊ทœ์น™

๐Ÿค” ์Šคํ”„๋ฆฐํŠธ ํšŒ์˜

๐Ÿ“” ํ•™์Šต

๐Ÿ•™ ๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ

๐Ÿ’ญ ํšŒ๊ณ ๋ก

๐Ÿ‘จโ€๐Ÿ‘ฆ ๋ฉ˜ํ† ๋ง

๋ฐ๋ชจ์˜์ƒ

Clone this wiki locally