이런 시나리오도 테스트가 가능할까요?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

이런 시나리오도 테스트가 가능할까요?

kakaruto
ngrinder를 사용해서 성능 테스트를 아주 흥미롭게 사용하고 있는 사람입니다 ^^;

이번에 테스트 시나리오 중에.. 테스트 하기 애매한 시나리오가 있어서 도움 또는 힌트를 좀 얻어가고자 해서 질문드립니다.

- 시나리오 -
1. A.api 호출
2. B.api 를 10초마다 무한 반복하며 호출

Eclipse 환경에서 개발은 완료 하였는데.. ngrinder 서버에 commit 후 실제 agent에서 수행이 되니 TPS는 거의 의미가 없는 것 같습니다.

제가 작성한  groovy 코드 입니다..(구현부는 포함하지 않았습니다..)

        @Test
        void test() {
                a()
               
                while(true){ // 3초 간격 무한 반복
                        b()
                        sleep(3000)
                }
        }


시나리오를 작성하면서 한 가지 궁금한 부분이..
ngrinder는 보통 process*thread가 테스트기간 또는 횟수만큼 반복하면서 tps가 계산 되는게 일반적인데 저 같은 경우는
하나의 thread에서 무한 루프를 돌아야 하는 상황이라... 저 코드가 맞는지 검증이 안되네요. ㅠㅠ

저에게 조언이나 힌트를 주신다면 정말 감사하겠습니다.

그럼 수고하세요!
Reply | Threaded
Open this post in threaded view
|

Re: 이런 시나리오도 테스트가 가능할까요?

junoyoon
Administrator
This post was updated on .
테스트 메소드내에서의 무한 반복은 에이전트에서 컨트롤러로 진행 상태를 주기적으로 보고하는데 큰 영향을 미칩니다.
따라서 무한 반복을 제거하셔야 제대로된 측정이 될겁니다.

그리고 말씀 하신 시나리오는 저라면 아래와 같이 처리할 겁니다.

@BeforeThread
void before() {
     ....
     a() <== 여기서 a 실행
}

@Test
void test() {
     b()
}

또는

@Test
void test() {
     if (grinder.runNumber = 0) { // 쓰레드별 첫번째 반복에서만 a() 실행
          a()
     }
     b()
}



그럼.
Reply | Threaded
Open this post in threaded view
|

Re: 이런 시나리오도 테스트가 가능할까요?

kakaruto
말씀 하신 답변으로 잘처리하였습니다.
junit 실행 주기만 잘 이해했어도 가능 한 시나리오였군요.
아직 많이 부족하네요 ^^;
빠른 답변에 감사드리며 항상 행운이 가득하시길!