개요

퇴근하고 어김없이 사이드프로젝트를 하던 나.. ngrinder로 백엔드 성능 측정을 하던 날이였다.

유저권한 api의 통합 성능 테스트를 진행하기 위해 열심히 테스트 시나리오를 작성중 중간 점검으로 validation을 한번 했다.

 

하지만 테스트가 작성 순서에 상관없이 지 맘대로 실행되는것 아니겠는가? 

나도 내가 원하는 시나리오가 있는데 이대로 측정할 순 없었다, 그래서 2시간을 삽질했고 생각보다 방법은 간단했다.

 

하지만 도큐먼트나 구글에서는 찾아볼 수 없었다, 내가 못 찾은건지.. 공식문서에 있다면 댓글에 꼭 말씀 부탁드립다 ㅠㅠ

ngrinder 테스트 메서드 실행 순서 지정하는법

간단하다, 비밀은 테스트 메서드 이름에 숨겨져 있었다, 그렇다 테스트 메서드명의 사전순대로 실행되는것이였다.. (이게 무슨일이람)

 

처음에는 잘 모르겠어서 이 방법 저 방법 삽질하던 중 Junit4의 @FixMethodOrder(MethodSorters.Ascending)이 기억났다.

그래서 어노테이션을 클래스에 붙여봤지만 오류가 발생하여 자포자기하고 나머지 테스트를 작성했다.

 

그런데 여러번 실행해보면서 로그에 찍혀 있는 실행순서대로 테스트 메서드명을 읽어보았다, 정말 우연히!

이때 메서드 이름의 사전순대로 실행하는 규칙이 눈에 보였다. 그래서 실험을 위해서 테스트 메서드명을 굉장히 간단하게 만들고 test1, test2, test3 이런식으로 네이밍을 했더니 순서대로 동작하는것이였다!!!!

엄청 편안했다, 기분이 좋아졌고 오늘은 꿀잠잘것 같은 기분이 들었다

후.. 이렇게 내가 원하는 시나리오대로 테스트가 실행되는것을 확인했다.

 

그런데 이렇게 메서드 네이밍을 test1, test2, test3로 작성한다면 나중에 리포트를 볼때 어떤 부분이 어떤 api인지 헷갈릴 수 있다.

그래서 .record하는 부분에 자세히 설명을 작성해주면 된다.

test1.record(this, "/member/join")
test2.record(this, "/member/login")
test3.record(this, "/event/list")
test4.record(this, "/event/read")

 

 

후 그래도 속 시원하게 해결해서 편안하다, 열심히 성능 측정해서 다음편은 꼭 성능 개선하는 편으로 오도록 하겠다!!!!

반응형
복사했습니다!