반응형

지난 포스팅에 nGrinder 설치 및 GET 테스트를 마쳤다.

 

이제 2가지 테스트를 해볼 건데,

로그인 시도와 로그인한 사용자만 이용할 수 있는 페이지를 요청하는 것이다.

 

필자가 구현해둔 application은 아래와 같다.

URL Method Parameter
/ POST email, password
/user GET -

 

이제 nGrinder Script 작성을 해보자.

import static net.grinder.script.Grinder.grinder
import static org.junit.Assert.*
import static org.hamcrest.Matchers.*
import net.grinder.script.GTest
import net.grinder.script.Grinder
import net.grinder.scriptengine.groovy.junit.GrinderRunner
import net.grinder.scriptengine.groovy.junit.annotation.BeforeProcess
import net.grinder.scriptengine.groovy.junit.annotation.BeforeThread
// import static net.grinder.util.GrinderUtils.* // You can use this if you're using nGrinder after 3.2.3
import org.junit.Before
import org.junit.BeforeClass
import org.junit.Test
import org.junit.runner.RunWith

import org.ngrinder.http.HTTPRequest
import org.ngrinder.http.HTTPRequestControl
import org.ngrinder.http.HTTPResponse
import org.ngrinder.http.cookie.Cookie
import org.ngrinder.http.cookie.CookieManager

/**
* A simple example using the HTTP plugin that shows the retrieval of a single page via HTTP.
*
* This script is automatically generated by ngrinder.
*
* @author admin
*/
@RunWith(GrinderRunner)
class TestRunner {

	public static GTest test
	public static HTTPRequest request
	public static Map<String, String> headers = ["Content-Type":"application/x-www-form-urlencoded"]
	public static Map<String, Object> params = ["email":"joon95@metanet.co.kr","password":"1234"]
	public static List<Cookie> cookies = []

	@BeforeProcess
	public static void beforeProcess() {
		HTTPRequestControl.setConnectionTimeout(300000)
		test = new GTest(1, "ing-default-albingressst-af3c8-13072783-b03408722853.kr.lb.naverncp.com")
		request = new HTTPRequest()

		// Set header data
		headers.put("Content-Type", "application/x-www-form-urlencoded")
		grinder.logger.info("before process.")
	}

	@BeforeThread
	public void beforeThread() {
		test.record(this, "test")
		grinder.statistics.delayReports = true
		grinder.logger.info("before thread.")
	}

	@Before
	public void before() {
		request.setHeaders(headers)
		CookieManager.addCookies(cookies)
		grinder.logger.info("before. init headers and cookies")
	}

	@Test
	public void test() {
		HTTPResponse response = request.POST("http://ing-default-albingressst-af3c8-13072783-b03408722853.kr.lb.naverncp.com", params)

		if (response.statusCode == 301 || response.statusCode == 302) {
			grinder.logger.warn("Warning. The response may not be correct. The response code was {}.", response.statusCode)
		} else {
			assertThat(response.statusCode, is(200))
		}
		request.GET("http://ing-default-albingressst-af3c8-13072783-b03408722853.kr.lb.naverncp.com/user")
		
	}
}

기본적으로 생성되는 부분 이외에 필자가 넣은 것

headersparams에 데이터를 넣어준 것과

login 요청 이후 GET /user 페이지로 넘어가는 부분이다.

 

이렇게 쉽게 로그인 테스트를 진행하였다.

nGrinder Performance Test

반응형

'엔지니어링 > 성능테스트' 카테고리의 다른 글

[성능테스트] nGrinder 사용해보기  (0) 2022.10.13
복사했습니다!