본문 바로가기
개발/Apache JMeter

Apache JMeter JDBC Request

by 꼼냥냥 2022. 4. 15.
728x90

데이터베이스 작업을 시작하기 전에 확인해야 할 사항

  • 데이터베이스에 접속하여 공통 액션 CRUD를 실행할 수 있는 권한을 가진 사용자가 있는지 확인
  • 원격 또는 로컬 액세스에 데이터베이스를 사용할 수 있는지 확인
  • JMeter 및 Java Development Kit에 대한 올바른 속성 설치 및 선택

1. JMeter에서의 DB 설정

a. DB 인터렉션용 Connector/J 5버전 설치

b. mysql-connector-java-5.1.28-bin.jar/apache-jmeter-5.4.3/lib 폴더에 복사

2. DB 연결 구성

a. JMeter를 부팅하고 JDBC Connection Configuration 요소를 추가 (Add → Config Element → JDBC Connection Configuration)

b. Variable Name 필드에 입력한다. 이 필드의 값은 특정 연결 설정(JDBC Connection Configuration)을 데이터베이스 및 JMeter에 의해 전송되는 특정 요청(JDBC Request)에 관련짓기 위해 사용한다.

필드가 채워지지 않으면 요청이 전송되지 않고 JMeter Console에 다음 메시지가 표시된다.(java.lang.IllegalArgumentException: Variable Name must not be empty for element:JDBC Connection Configuration)

 

c. JDBC Connection Configuration 접속 설정을 실시한다. localhost 및 데이터베이스 스키마 값을 변경하여 다음 구성을 사용할 수 있다.

  • Database URL - 데이터베이스 주소로 사용됨
    • jdbc:mysql:// - MySQL 데이터베이스 주소를 지정할 때 JMeter에서 사용되는 변경되지 않은 시퀀스
    • localhost:3306/ - 데이터베이스를 사용할 수 있도록 하는 IP 주소 및 포트이다. 아래의 예에서는 로컬 PC에 설치된 데이터베이스를 사용하기 때문에 MySQL 설치 시 설정된 IP주소와 포트를 사용한다.
      대부분의 경우 remote서버에 IP주소와 포트 10.56.56.2:4101을 가진 데이터베이스에는 다른 접속을 설치해야 한다.
    • sakila - 데이터베이스 스키마이다. 스키마를 지정하지 않으면 JMeter는 다음 오류를 반환한다. “Response message: java.sql.SQLException: No database selected
  • JDBC driver class - 특정 데이터베이스와 관련된 작업 코드가 구현되는 클래스이다. (이 클래스는 JDBC 드라이버 개발자에 의해 작성)
    • com.mysql.jdbc.Driver - MySQL에 연결하는 동안의 정적인 Driver
  • Username - DB에 액세스할 수 있는 사용자 이름
  • Password - DB에 액세스하기 위한 암호

나머지 필드는 JMeter default로 설정된 상태로 둘 수 있음

3. DB에 데이터 요청 보내기

a. Thread Group 요소 추가


b. Thread Group의 하위 요소로 JDBC Request를 추가한다. 요청을 통해 DB에 요청을 보낼 수 있다.

c. JDBC Request 구성

  • Variable Name of Pool declared in JDBC Connection Configuration 필드에 변수 이름을 입력한다.
  • Query Type 필드를 Select 문으로 설정한다. Select 문의 값은 데이터베이스에서 데이터를 검색하기 위한 요청을 나타낸다.
  • Result variable name 필드에 변수 이름을 지정한다. 이 변수는 데이터베이스에서 받은 모든 필드와 필드 값을 저장한다. 이 변수의 이름은 Thread Group 내에서 고유해야 한다. 이 변수의 이름이 데이터베이스에 대한 여러 요청(JDBC Request)에 사용되는 경우 마지막 쿼리에서 받은 필드와 필드 값을 저장한다.
  • Query 필드에서 데이터베이스에 대한 SQL 쿼리를 생성한다.
  • 데이터의 추가 처리는 Java를 사용하여 수행되므로 나머지 매개변수는 생략할 수 있다.
 
 
d. View Results Tree를 추가하고 테스트를 실행한다. View Results Tree 항목은 보낸 요청과 받은 응답을 볼 수 있다.
 

4. DB 응답 확인

DB 작업을 하는 경우 대부분의 경우 주어진 조건에 따라 데이터 수신이 완료된다. 요청에 해당하는 데이터가 데이터베이스에 있으면 결과를 얻는다.

그러나 DB에 테스트한 데이터가 없으면 빈 응답을 얻지만 JMeter는 그것을 오류로 보고하지 않는다.

 

응답이 맞는지 확인하기 위해 다음 단계를 수행할 수 있다.

a. BeanShell Assertion 요소를 JDBC 요청 요소에 하위 요소로 추가한다. 

b. 그림과 같이 코드를 추가한다.

이제 빈 응답을 받으면 Thread Group의 모든 추가 작업이나 요청이 중지되고 올바른 오류 메시지가 나타난다.

때때로 데이터베이스에 대한 연결이 일시적으로 불가능하거나, IP 주소가 변경되거나, 다른 이유로 인해 데이터베이스로부터 응답이 없는 경우가 있는데, 결과적으로 위의 코드에서는 데이터베이스에 연결이 있을 때 오류 데이터가 없는데도 실행 중에 오류가 발생한다.

 
 
이러한 경우를 제외하기 위해 데이터베이스에 연결 테스트를 추가하고 이 연결이 없는 경우 오류 메시지를 올바르게 표시할 수 있다.
 
 
728x90

'개발 > Apache JMeter' 카테고리의 다른 글

Apache JMeter 분산 테스트 설정 및 TEST  (0) 2023.04.26
Apache JMeter 설치 및 TEST  (0) 2023.04.26
분산 테스트  (0) 2022.04.15
Apache JMeter 설치 및 사용법  (0) 2022.04.15
Apache JMeter란?  (0) 2022.04.15

댓글