11. JMS 토픽 테스트 계획 수립 ¶
이 섹션에서는 JMS 공급자를 테스트하기 위한 테스트 계획 을 만드는 방법을 배웁니다 . 5명의 구독자와 1명의 게시자를 만듭니다. 2개의 스레드 그룹을 만들고 각각을 10회 반복으로 설정합니다. 총 메시지는 (6 스레드) x (1 메시지) x (10번 반복) = 60 메시지입니다. 테스트 계획을 구성하려면 스레드 그룹 , JMS 게시자 , JMS 구독자 및 그래프 결과 요소를 사용합니다 .
JMS에 대한 일반 참고 사항: 현재 두 개의 JMS 샘플러가 있습니다. 하나는 JMS 주제를 사용하고 다른 하나는 대기열을 사용합니다. 주제 메시지는 일반적으로 게시/구독 메시지로 알려져 있습니다. 토픽 메시징은 일반적으로 메시지가 생산자에 의해 게시되고 여러 구독자가 사용하는 경우에 사용됩니다. 대기열 메시징은 일반적으로 발신자가 응답을 기대하는 트랜잭션에 사용됩니다. 메시징 시스템은 일반 HTTP 요청과 상당히 다릅니다. HTTP에서는 단일 사용자가 요청을 보내고 응답을 받습니다. 메시징 시스템은 동기 및 비동기 모드에서 작동할 수 있습니다. JMS 샘플러에는 JMS 구현 jar 파일이 필요합니다. 예를 들어 Apache ActiveMQ에서. ActiveMQ에서 제공하는 jar 목록은 여기 를 참조 하십시오.
11.1 사용자 추가 ¶
첫 번째 단계는 스레드 그룹 요소를 추가하는 것입니다. 스레드 그룹은 시뮬레이션하려는 사용자 수, 사용자가 요청을 보내야 하는 빈도 및 보내야 하는 요청 수를 JMeter에 알려줍니다.
먼저 테스트 계획을 선택하여 ThreadGroup 요소를 추가하고 마우스 오른쪽 버튼을 클릭하여
메뉴를 가져온 다음 을 선택 합니다.이제 테스트 계획 아래에 스레드 그룹 요소가 표시되어야 합니다. 요소가 표시되지 않으면 테스트 계획 요소를 클릭하여 테스트 계획 트리를 "확장"하십시오.
다음으로 기본 속성을 수정해야 합니다. 아직 선택하지 않은 경우 트리에서 스레드 그룹 요소를 선택합니다. 이제 JMeter 창의 오른쪽 섹션에 스레드 그룹 제어판이 표시되어야 합니다(아래 그림 11.1 참조).
스레드 그룹에 대해 보다 설명적인 이름을 제공하여 시작합니다. 이름 필드에 구독자 를 입력 합니다.
다음으로 사용자(스레드라고 함)의 수를 5 로 늘립니다 .
다음 필드인 램프업 기간에서 값을 0 초로 설정합니다. 이 속성은 JMeter에 각 사용자 시작 사이의 지연 시간을 알려줍니다. 예를 들어, 램프업 기간을 5초로 입력하면 JMeter는 5초가 끝날 때까지 모든 사용자의 시작을 마칩니다. 따라서 5명의 사용자와 5초의 램프업 기간이 있는 경우 시작 사용자 간의 지연은 1초가 됩니다(5명의 사용자 / 5초 = 초당 1명의 사용자). 값을 0으로 설정하면 JMeter는 즉시 모든 사용자를 시작합니다.
" 영원히 " 라는 확인란을 선택 취소 하고 루프 수 필드에 값 10 을 입력합니다. 이 속성은 JMeter에 테스트를 반복할 횟수를 알려줍니다. 루프 카운트 값을 0 으로 입력하면 JMeter는 테스트를 한 번만 실행합니다. JMeter가 테스트 계획을 반복적으로 실행하도록 하려면 Forever 확인란을 선택합니다.
프로세스를 반복하고 다른 스레드 그룹을 추가하십시오. 두 번째 스레드 그룹 의 경우 이름 필드에 " Publisher "를 입력하고 스레드 수를 1 로 설정하고 반복을 10 으로 설정하십시오 .
11.2 JMS 구독자 및 게시자 추가 ¶
필요한 jar 파일이 JMeter의 lib 디렉토리에 있는지 확인하십시오. 그렇지 않은 경우 JMeter를 종료하고 jar 파일을 복사한 다음 JMeter를 다시 시작하십시오.
샘플러 JMS 구독자 를 구독자 요소에 추가하여 시작합니다( ). 그런 다음 트리에서 JMS 구독자 요소를 선택하고 다음 속성을 편집합니다.
- 이름 필드를 " 샘플 구독자 " 로 변경하십시오.
- JMS 공급자가 jndi.properties 파일을 사용하는 경우 확인란을 선택합니다.
- InitialContextFactory 클래스의 이름을 입력하십시오. 예를 들어 ActiveMQ 5.4에서 값은 " org.apache.activemq.jndi.ActiveMQInitialContextFactory " 입니다.
- 공급자 URL을 입력합니다. JNDI 서버(있는 경우)의 URL입니다. 예를 들어 기본 포트가 있는 로컬 시스템의 ActiveMQ 5.4에서 값은 " tcp://localhost:61616 " 입니다.
- 연결 팩토리의 이름을 입력하십시오. 자세한 내용은 JMS 공급자의 설명서를 참조하십시오. ActiveMQ의 경우 기본값은 " ConnectionFactory " 입니다.
- 메시지 주제의 이름을 입력하십시오. ActiveMQ 동적 주제(동적으로 주제 생성)의 경우 예제 값은 " dynamicTopics/MyStaticTopic1 "
입니다.
참고: 시작 시 설정은 JMeter가 이름 변경 가능성 없이 테스트 시작 시 대상에서 수신 대기하기 시작함을 의미합니다. 각 샘플에 대한 설정은 JMeter가 각 JMS 구독자 샘플을 실행하기 전에 수신을 (재)시작한다는 것을 의미합니다. 이 마지막 옵션은 일부 JMeter 변수가 있는 대상 이름을 가질 수 있도록 허용합니다.
- JMS 제공자가 인증을 요구하는 경우 " 필수 "를 선택하고 사용자 이름과 비밀번호를 입력하십시오. 예를 들어 Orion JMS는 인증이 필요하지만 ActiveMQ 및 MQSeries는 인증이 필요하지 않습니다.
- " 집계할 샘플 수 "에 10 을 입력 합니다. 성능상의 이유로 샘플러는 작은 메시지가 매우 빨리 도착하기 때문에 메시지를 집계합니다. 샘플러가 메시지를 집계하지 않으면 JMeter가 따라갈 수 없습니다.
- 답변을 읽으려면 확인란을 선택하십시오.
- 구독자를 위한 두 가지 클라이언트 구현이 있습니다. JMS 제공자가 한 클라이언트에서 좀비 스레드를 표시하는 경우 다른 클라이언트를 시도하십시오.
다음으로 샘플러 JMS 게시자 를 게시자 요소에 추가합니다( ). 그런 다음 트리에서 JMS 게시자 요소를 선택하고 다음 속성을 편집합니다.
- 이름 필드를 " 샘플 게시자 "로 변경합니다.
- JMS 공급자가 jndi.properties 파일을 사용하는 경우 확인란을 선택합니다.
- InitialContextFactory 클래스의 이름을 입력하십시오. 예를 들어 ActiveMQ 5.4에서 값은 " org.apache.activemq.jndi.ActiveMQInitialContextFactory " 입니다.
- 공급자 URL을 입력합니다. JNDI 서버(있는 경우)의 URL입니다. 예를 들어 기본 포트가 있는 로컬 시스템의 ActiveMQ 5.4에서 값은 " tcp://localhost:61616 " 입니다.
- 연결 팩토리의 이름을 입력하십시오. 자세한 내용은 JMS 공급자의 설명서를 참조하십시오. ActiveMQ의 경우 기본값은 " ConnectionFactory " 입니다.
- 메시지 주제의 이름을 입력하십시오. ActiveMQ 동적 주제(동적으로 주제 생성)의 경우 예제 값은 " dynamicTopics/MyStaticTopic1 "입니다.
참고: 시작 시 설정은 JMeter가 이름 변경 가능성 없이 테스트 시작 시 대상과 연결을 시작함을 의미합니다. 각 샘플에 대한 설정은 JMeter가 각 JMS 게시자 샘플을 실행하기 전에 연결을 (다시) 시작한다는 것을 의미합니다. 이 마지막 옵션은 일부 JMeter 변수가 있는 대상 이름을 가질 수 있도록 허용합니다.
- JMS 제공자가 인증을 요구하는 경우 " 필수 "를 선택하고 사용자 이름과 비밀번호를 입력하십시오. 예를 들어 Orion JMS는 인증이 필요하지만 ActiveMQ 및 MQSeries는 인증이 필요하지 않습니다.
- " 집계할 샘플 수 "에 10 을 입력 합니다. 성능상의 이유로 샘플러는 작은 메시지가 매우 빨리 도착하기 때문에 메시지를 집계합니다. 샘플러가 메시지를 집계하지 않으면 JMeter가 따라갈 수 없습니다.
- 게시할 메시지를 가져오기 위한 적절한 구성을 선택합니다. 샘플러가 메시지를 무작위로 선택하도록 하려면 메시지를 디렉토리에 놓고 찾아보기를 사용하여 디렉토리를 선택하십시오.
- 메시지 유형을 선택합니다. 메시지가 개체 형식 또는 맵 메시지인 경우 메시지가 올바르게 생성되었는지 확인하십시오.