Script

nGrinder๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Groovy ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ nGrinder์—์„œ๋Š” The Grinder์˜ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค. ํŠนํžˆ, Jython์„ ๊ธฐ๋ณธ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

์ด์™ธ์—๋„ Groovy ์Šคํƒ€์ผ๋กœ ์ž‘์„ฑํ•˜๋ ค๋ฉด nGrinder์˜ JUnit ์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. nGrinder ์ž์ฒด์ ์œผ๋กœ Groovy ์Šคํƒ€์ผ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, JUnit์„ ํ†ตํ•œ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

JUnit ์Šคํƒ€์ผ ์˜ˆ์‹œ ( java) :

JUnit ํ…Œ์ŠคํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด Groovy ์Šคํƒ€์ผ๊ณผ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

// JUnit ์Šคํฌ๋ฆฝํŠธ ์˜ˆ์‹œ (Java)

import static net.grinder.script.Grinder.grinder;
import net.grinder.plugin.http.HTTPRequest;
import net.grinder.plugin.http.HTTPResponse;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertTrue;

public class TestRunner {
    private HTTPRequest request;

    @Before
    public void setUp() {
        request = new HTTPRequest();
        grinder.logger.info("Setting up the test.");
    }

    @Test
    public void testRequest() {
        HTTPResponse response = request.GET("http://example.com");

        assertTrue("Expected status 200, got " + response.getStatusCode(),
                   response.getStatusCode() == 200);

        if (response.getStatusCode() == 200) {
            grinder.logger.info("Request successful.");
        } else {
            grinder.logger.warn("Request failed.");
        }
    }
}

Groovy ์˜ˆ์‹œ:

Groovy๋Š” Java ๋ฌธ๋ฒ•๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// Groovy ์Šคํฌ๋ฆฝํŠธ ์˜ˆ์‹œ

import static net.grinder.script.Grinder.grinder
import net.grinder.plugin.http.HTTPRequest
import net.grinder.plugin.http.HTTPResponse
import org.junit.Before
import org.junit.Test
import static org.junit.Assert.assertTrue

class TestRunner {
    private HTTPRequest request = new HTTPRequest()

    @Before
    void setUp() {
        grinder.logger.info("Setting up the test.")
    }

    @Test
    void testRequest() {
        HTTPResponse response = request.GET("http://example.com")

        assertTrue("Expected status 200, got ${response.getStatusCode()}",
                   response.getStatusCode() == 200)

        if (response.getStatusCode() == 200) {
            grinder.logger.info("Request successful.")
        } else {
            grinder.logger.warn("Request failed.")
        }
    }
}

Groovy์™€ Java ๋น„๊ต

๊ฒฐ๋ก : nGrinder๋Š” Groovy ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง์ ‘ ์ง€์›ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, Java ๊ธฐ๋ฐ˜์˜ JUnit ์Šคํฌ๋ฆฝํŠธ๊ฐ€ Groovy ์Šคํƒ€์ผ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€

Q1: nGrinder์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ Groovy ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

  • ๋‹ต๋ณ€: Groovy ์Šคํฌ๋ฆฝํŠธ๋Š” nGrinder์—์„œ ์ง์ ‘์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ, Java ๊ธฐ๋ฐ˜ JUnit ์Šคํฌ๋ฆฝํŠธ๊ฐ€ Groovy์™€ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋กœ ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q2: Groovy ์Šคํƒ€์ผ๋กœ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

  • ๋‹ต๋ณ€: Groovy ์Šคํƒ€์ผ๋กœ ์ž‘์„ฑํ•˜๋ ค๋ฉด Java JUnit ์Šคํƒ€์ผ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜, Jython์„ ์‚ฌ์šฉํ•ด GTest ์Šคํƒ€์ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q3: nGrinder์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์™€ ๊ฐ๊ฐ์˜ ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

  • ๋‹ต๋ณ€:

    • JUnit ์Šคํƒ€์ผ (Java):

      • ์žฅ์ : Java ์–ธ์–ด์˜ ํ’๋ถ€ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ธฐ๋Šฅ ํ™œ์šฉ ๊ฐ€๋Šฅ.

      • ๋‹จ์ : ์ž‘์„ฑ ์‹œ ๋” ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Œ.

    • GTest ์Šคํƒ€์ผ (Jython):

      • ์žฅ์ : Python ์Šคํƒ€์ผ๋กœ ๋” ๊ฐ„๊ฒฐํ•œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ๊ฐ€๋Šฅ.

      • ๋‹จ์ : Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ผ๋ถ€ ๊ธฐ๋Šฅ ์ œ์•ฝ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ.

Q1: nGrinder์—์„œ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€?

Q2: Jython ์Šคํƒ€์ผ๋กœ ๋ณต์žกํ•œ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜?

Q3: Groovy ์Šคํƒ€์ผ์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•œ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š”๊ฐ€?

GTest ์Šคํƒ€์ผ ์˜ˆ์‹œ:

๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” GTest ๋ฐฉ์‹์˜ ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

# Jython ์Šคํฌ๋ฆฝํŠธ ์˜ˆ์‹œ (GTest ์Šคํƒ€์ผ)

from net.grinder.script.Grinder import grinder
from net.grinder.plugin.http import HTTPRequest

class TestRunner:
    def __init__(self):
        self.request = HTTPRequest()

    def beforeTest(self):
        grinder.logger.info("Before Test.")

    def test(self):
        response = self.request.GET("http://example.com")

        if response.getStatusCode() == 200:
            grinder.logger.info("Request successful.")
        else:
            grinder.logger.warn("Request failed.")

        assert response.getStatusCode() == 200

nGrinder ์Šคํฌ๋ฆฝํŠธ ์ข…๋ฅ˜ ์ •๋ฆฌ:

  • JUnit ์Šคํƒ€์ผ (Java): Java๋กœ ์ž‘์„ฑ๋œ ํ‘œ์ค€ JUnit ๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ.

  • GTest ์Šคํƒ€์ผ (Jython): Python์˜ Jython ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ.

์š”์•ฝ:

  1. Groovy ์ง€์› ์—ฌ๋ถ€:

    • nGrinder ์ž์ฒด์ ์œผ๋กœ Groovy ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง์ ‘ ์ง€์›ํ•˜์ง€๋Š” ์•Š์œผ๋‚˜, Java ๊ธฐ๋ฐ˜ JUnit ์Šคํƒ€์ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด Groovy ์Šคํƒ€์ผ๊ณผ ์œ ์‚ฌํ•œ ํ˜•ํƒœ๋กœ ์ž‘์„ฑ ๊ฐ€๋Šฅ.

  2. nGrinder ์ง€์› ์Šคํฌ๋ฆฝํŠธ ์ข…๋ฅ˜:

    • Jython ๊ธฐ๋ฐ˜ GTest ์Šคํƒ€์ผ

    • Java ๊ธฐ๋ฐ˜ JUnit ์Šคํƒ€์ผ

Q1: Jython์„ ์ด์šฉํ•ด ๋” ๋ณต์žกํ•œ GTest ์Šคํƒ€์ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

Q2: JUnit ์Šคํƒ€์ผ ์Šคํฌ๋ฆฝํŠธ์—์„œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

Q3: nGrinder ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ์‹œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Last updated