2014-06-13 3 views
2

다음 문제가 발생합니다.jmeter 현재 반복 실행

테스트 플랜에 여러 개의 HTTP 요청이 있습니다. 실패 할 경우 모든 요청을 4 번 반복하고 싶습니다. BeanShell 어서션으로 이미 깨달았습니다. 내 문제는 이전 요청이 5 번 실패한 경우 요청을 실행하지 않으려한다는 것입니다. 하지만 스레드 종료를 원하지 않습니다.

현재 스레드 반복을 끝내기 만하면 스레드의 다음 반복이 첫 번째 요청으로 다시 시작될 수 있습니다 (스레드가 반복 될 예정인 경우).

BeanShell 어설 션 내에서 어떻게 알 수 있습니까? 여기 그냥 내가 솔루션이

badResponseCounter

요청의 모든 실패한 시도에 대한 증가되는 갖고 싶어 내 코드의 짧은 추출물이 지금까지 작동하는 것 같다. 그런 다음 변수가 재설정됩니다.

if (badResponseCounter = 5) { 
     badResponseCounter = 0; 
    // Stop current iteration 
    } 

이미 API를 확인, setStopTest() 또는 setStopThread() 등의 방법이 주어지지하지만, 현재 반복을 종료하기위한 것도있다. 또한 스레드 그룹에서 "계속"기본 설정이 필요합니다. 그렇지 않으면 단일 요청이 실패한 후 전체 테스트가 중단됩니다. 이 작업을 수행하는 방법에 대한 아이디어가 있으십니까?

+0

안녕하세요, 저는 어떻게 생각하는지 알고 싶습니다. 귀하의 beanshell 어설 션에서 샘플러를 다시 시도 할 수 있습니다. – jlunavtgrad

답변

2

시도해보십시오.

ctx.setRestartNextLoop(true); 

스레드 번호가 2이면 건너 뜁니다. 나는 예상대로 아래의 결과를 얻는다 (b-2를 호출하지 않는다). 스레드를 죽이지도 않습니다. 제 생각에는

enter image description here

2

가장 쉬운 방법은 다음과 같은 조합을 사용하고 있습니다 :

  1. If Controller이 경우 컨트롤러의 자식으로 ${JMeterThread.last_sample_ok}badResponseCounter 변수
  2. Test Action 샘플러를 확인할 수는 "다음으로 이동하도록 구성 루프 반복 "
관련 문제