nGrinder
net.grinder.engine.common.engineexception: setting of local dns provider failed ์๋ฌ ๋๋ฌธ์ jdk-22๊ฐ ์๋๋ผ, 11์ ์ค์นํด์ผํ๋ค
๋ผ์ด์ผ์ค ๋๋ฌธ์ ๋ก๊ทธ์ธ์ ํด์ผํ๋ค
nGrinder ์์ธํ ์ค๋ช
๋ฐ ๊ตฌ์ฑ ์ดํดํ๊ธฐ
1. nGrinder๋ ๋ฌด์์ธ๊ฐ?
nGrinder๋ NHN์ด ๊ฐ๋ฐํ ์คํ์์ค ๋ถํ ํ ์คํธ ํ๋ซํผ์ผ๋ก, ๊ธฐ์กด์ ์กด์ฌํ๋ The Grinder๋ฅผ ํ์ฅํ์ฌ ๋๊ท๋ชจ ๋ถํ ํ ์คํธ ๋ฐ ๋ถ์ฐ ๋ถํ ํ ์คํธ๊ฐ ๊ฐ๋ฅ. ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ถํ ํ ์คํธ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑ, ๊ด๋ฆฌํ๋ฉฐ ๋ค์์ ์์ด์ ํธ ์๋ฒ๋ฅผ ํตํด ๋ถ์ฐ ๋ถํ ํ ์คํธ๋ฅผ ์ํ.
nGrinder์ ์ฃผ์ ๊ธฐ๋ฅ:
๋ค์ํ ์คํฌ๋ฆฝํธ ์ธ์ด ์ง์: Jython, Groovy
์ค์๊ฐ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ ํฌํธ
๋์ ์์ด์ ํธ ํ ๋น์ ํตํ ํ์ฅ์ฑ
์์ด์ ํธ ๋ณ๋ ฌ ๊ตฌ๋ ๋ฐ ๋ถ์ฐ ํ ์คํธ
2. ์์ด์ ํธ๋ฅผ ๋ฐ๋ก ๊ตฌ๋ํด์ผ ํ๋ ์ด์ ๋ฐ ๋์ ์๋ฆฌ
์์ด์ ํธ ๊ตฌ๋ ํ์ ์ด์ :
ํ์ฅ์ฑ: nGrinder Controller๋ ํ ์คํธ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ฉฐ, ์ค์ ๋ก ๋ถํ๋ฅผ ๋ฐ์์ํค๋ ๊ฒ์ ์์ด์ ํธ.
๋ถ์ฐ ํ ์คํธ: ์ฌ๋ฌ ๋์ ์์ด์ ํธ๋ฅผ ํตํด ๋ค์์ ์๋ฒ์ ๋์์ ์์ฒญ์ ๋ณด๋ผ ์ ์์ด ๋๊ท๋ชจ ๋ถํ ํ ์คํธ์ ์ ํฉ.
์์ด์ ํธ ๋์ ๊ตฌ์กฐ:
Controller์์ ๋ช ๋ น ์ ์ก: Controller์์ ๋ถํ ํ ์คํธ ์คํฌ๋ฆฝํธ์ ์ค์ ์ ๋ณด๋ฅผ ์์ด์ ํธ์ ์ ์ก.
์์ด์ ํธ ์คํ: ๊ฐ ์์ด์ ํธ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ถํ ํ ์คํธ๋ฅผ ์ํ.
ํ ์คํธ ๊ฒฐ๊ณผ ์์ง: ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ Controller๋ก ๋ณด๋ด๊ณ , Controller๋ ์ค์๊ฐ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ ํฌํธ ์ ๊ณต.
3. ์คํฌ๋ฆฝํธ ๋์ ๊ตฌ์กฐ
์คํฌ๋ฆฝํธ๋ ๊ฐ ์์ด์ ํธ์์ ํ
์คํธํ ๋ด์ฉ์ ์ ์ํ๋ฉฐ, GTest
๋๋ JUnit
์คํ์ผ๋ก ์์ฑ ๊ฐ๋ฅ.
// Groovy ์คํ์ผ ์์
import static net.grinder.script.Grinder.grinder
import net.grinder.plugin.http.HTTPRequest
import net.grinder.plugin.http.HTTPResponse
public class TestRunner {
HTTPRequest request = new HTTPRequest()
@BeforeProcess
public static void beforeProcess() {
grinder.logger.info("Before Process.")
}
@BeforeThread
public void beforeThread() {
grinder.statistics.delayReports = true
grinder.logger.info("Before Thread.")
}
@Before
public void before() {
grinder.logger.info("Before Test.")
}
@Test
public void test() {
HTTPResponse response = request.GET("http://example.com")
if (response.statusCode == 200) {
grinder.logger.info("Request successful.")
} else {
grinder.logger.warn("Request failed.")
}
assert response.statusCode == 200
}
}
ํ
์คํธ ๊ณผ์ ์ค๋ช
์คํฌ๋ฆฝํธ ์์ฑ
์ํ๋ ๋ถํ ํ ์คํธ ๋์์ ๋ฐ๋ผ
GTest
,JUnit
๋๋Groovy
๋ก ์์ฑ.
์คํฌ๋ฆฝํธ ์ ๋ก๋
nGrinder ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ์คํฌ๋ฆฝํธ๋ฅผ ์ ๋ก๋ํ๊ณ ํ ์คํธ๋ฅผ ๊ตฌ์ฑ.
ํ ์คํธ ์คํ
์์ด์ ํธ ์ ํ ๋ฐ ์คํฌ๋ฆฝํธ ์ค์ ํ, ๋ถํ ํ ์คํธ ์คํ.
๊ฒฐ๊ณผ ํ์ธ ๋ฐ ๋ถ์
์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ค์๊ฐ ๋ชจ๋ํฐ๋ง ๋ฐ ํ ์คํธ ์๋ฃ ํ ๋ ํฌํธ ๋ถ์.
์์ฝ:
nGrinder๋ ๋๊ท๋ชจ ๋ถํ ํ ์คํธ๋ฅผ ์ํ ์คํ์์ค ํ๋ซํผ์ผ๋ก, ํ์ฅ์ฑ๊ณผ ๋ถ์ฐ ๋ถํ ํ ์คํธ ๊ธฐ๋ฅ์ด ์ฃผ์ ํน์ง.
Controller-์์ด์ ํธ ๊ตฌ์กฐ๋ก ํ ์คํธ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์์ด์ ํธ๊ฐ ์ค์ ๋ถํ๋ฅผ ๋ฐ์์ํด.
์คํฌ๋ฆฝํธ ์์ฑ ๋ฐ ์คํ์ ํตํด ์น ์ธํฐํ์ด์ค๋ก ์ค์๊ฐ ๋ชจ๋ํฐ๋ง๊ณผ ๊ฒฐ๊ณผ ๋ถ์ ๊ฐ๋ฅ.
Q1: nGrinder์ ๊ฐ ์คํฌ๋ฆฝํธ ์ ํ๋ณ ์์ฑ ๋ฐ ํ์ฉ ์์๋ฅผ ๋ณด์ฌ์ค ์ ์๋๊ฐ?
Q2: nGrinder๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ์๋๋ฆฌ์ค๋ณ ํ ์คํธ ์ ๋ต์ ์ด๋ป๊ฒ ์๋ฆฝํ ์ ์๋๊ฐ?
Q3: nGrinder์ JMeter์ ์ฐจ์ด์ ๋ฐ ์ ํฉํ ์ฌ์ฉ ์ฌ๋ก๋ ๋ฌด์์ธ๊ฐ?
Last updated