nGrinder Git-hub -> https://github.com/naver/ngrinder/releases
해당 URL에 접속 후 nGrinder-controller.war 파일을 다운로드 한다.
(나는 사진과 다르게 3.8.5 version을 받았다)
filezilla 혹은 서버 MobaXterm 를 통해 특정 경로에 해당 war파일을 배치한다.
java -jar ngrinder-controller-{version}.war --port=8300
위의 명령어를 터미널에 실행시켜주면 다음과 같이 Controller 서버가 가동이 된다.
※ 위와 같이 제대로 진행하였으나 동작이 제대로 안된다면 서버 내 방화벽을 확인해야한다.
나는 해당 부분에 8300번 포트가 지정이 안 되어 다음과 같이 추가해주었다.
1. 방화벽 리스트 확인 : firewall-cmd --list-all
2. 방화벽 8300 포트 설정 : firewall-cmd --zone=public --add-port=8300/tcp --permanent
3. 방화벽 재구동 : firewall-cmd --reload
해당 조치 후 정상적으로 Controller 페이지가 뜨는 것을 확인할 수 있을 것이다.
실행한 Controller 화면에서 로그인을 진행한다.(최초 계정은 admin/admin)
이후 우측 상단에 계정 텝을 클릭하고 Download Agent 버튼을 통해 tar파일을 다운로드 한다.
Controller와 같이 똑같이 서버 내 파일을 배치 시켜주고, 아래 명령어로 tar파일을 풀어준다(나는 이미 풀었다).
tar -xvf ngrinder-agent-{version}.tar
tar 파일 풀기가 끝났다면
vi /home/{User}/.ngrinder_agent/agent.conf
명령어를 통해 agent.conf 파일에 접근하고 지정한 주석들을 풀어주거나 다음과 같이 작성한다.
마지막으로 아까 풀었던 nGrinder agnet 디렉토리로 돌아와 ./run_agent.sh 를 입력하면 Controller와 agent가 연결되는 것을 확인할 수 있다(Controller의 Agent Management를 통해 확인 가능).
Controller 최상단의 Script메뉴로 진입하여, Create 버튼을 누른다.
이후 script명과 테스트를 수행할 URL 을 작성하여 Create 버튼을 누른다.
※ 혹여나 Header, Cookie, Param이 필요한 경우 Show Advenced Configuration 버튼을 통해 추가한다.
Create 버튼을 누르면 아래와 같이 스크립트를 작성할 수 있는 화면이 나오는데 기본적으로 어느정도 작성은 되어있고, 나는 다음과 같이 작성하였다(언어는 Groovy다).
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 = [:] public static Map<String, Object> params = [:] public static List<Cookie> cookies = [] @BeforeProcess public static void beforeProcess() { HTTPRequestControl.setConnectionTimeout(300000) test = new GTest(1, "아이피") request = new HTTPRequest() // Set cookie data cookies.add(new Cookie("인증 쿠키 key", "인증 쿠키 value", "아이피", "/", Integer.MAX_VALUE)) 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.GET("http://아이피/경로", 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)) } } }
작성을 완료했다면, 우측 상단의 save 버튼을 누르고, 스크립트를 저장할 수 있다.
최상단의 performance Test 메뉴로 진입한다(내가 이전에 테스트 했던 기록이 남아있음).
이후 Create Test를 통해 신규로 진행할 테스트를 등록해줘야 한다.
나는 다음과 같이 작성했고, 간단히 아는 것만 설명하자면0. Test_Name , Description : 테스트 명칭과 설명
1. Agent : 연결된 Agent 갯수
2. Vuser per agent : 유저
3. Process : 프로세스 갯수
4. threads : 스레드 갯수
5. Script : 아까 작성한 스크립트를 지정
6. Duration : 테스트 시간
테스트 등록 후 Save and Start 버튼을 통해 테스트를 수행한다.
기본적으로 테스트 진행이 완료되면 아래와 같은 화면이 나오는데 요약내용, 상세결과, log 파일 등 다양한 성능테스트 결과를 확인할 수 있다.