반응형
CSV 에서 데이터를 차례로 읽어와서 사용하는 방법을 정리한다.
정리를 위해 간단히 log로 출력하는 sample 을 작성하였다.
log를 출력하는 예제이긴 하지만, 변수로 어떤 request나 shell 에서 가져다 사용이 가능하다.
< CSV File, Data 구성 >
- test.csv 파일 작성
test1.jpg,test1.json
test2.jpg,test2.json
test3.jpg,test3.json
- CSV Data Set Config 구성
- Filename: 파일명(절대경로 또는 jmeter 실행파일 위치 기준으로 상대 경로 설정)
- Variable Names: Comma(,)를 기준으로 순서대로 변수로 가져다 사용할 이름을 기재 (e.g. _fname_jpg,_fname_json)
- Ignore First Line: 첫번째 행에 데이터가 아니라 컬럼 제목이 있는 경우 1번째 행을 무시할지 여부
- Delimiter: 기본은 콤마인데, tab 등을 사용할 수 있으므로 변수마다 구분자로 사용할 기호를 기재함. 파이프(|)도 사용 가능
- Stop thread on EOF?: 마지막 행을 만났을 때 종료할지 여부
- Sharing mode: 여러개의 thread가 CSV 데이터 1개를 공유할지 아닐지 여부 (All threads를 선택하면 CSV Data를 여러개의 thread가 서로 이어서 다음 데이터를 가져가는 것이고, Current Thread Group은 thread 마다 각자 CSV Data를 가져가는 것이라 각 thread가 처음 가져가는 데이터가 모두 동일하게 첫번째 행이 되는 형태이다.)
- jmeter 구성
- 동작을 확인하기 위해 thread number, counter number, filename(CSV에서 2번째 컬럼)을 출력하도록 구성함
- Counter는 PostLink 참고하고, 이번에 02부터 1씩 증가하여 30까지 증가할 수 있도록 설정하였음. 다만, Loop Controller에서 5회 loop를 돌도록 설정하여 실제로는 02부터 06까지만 출력될 수 있는 조건임.
Example #1. thread(=동시 요청 User수)를 1개로 Loop Count 5회 설정하여 실행 결과
- 1개의 thread가 counter를 증가하며 5회 수행 후 filename을 다음 행을 읽어와 반복 수행됨
- CSV에 filename이 3개 line 밖에 없어서 Loop count를 5로 설정했으나 EOF 조건을 만나서 3회로 종료됨
Example #2. thread를 2개로 Loop Count 2회 설정하여 실행 결과
- 참고 : 최초에 CSV Data Config에 CSV를 All Thread가 share하도록 설정해둠
- thread 2개가 실행되어서 thread1이 1번째 행(test1.json), thread2가 2번째 행(test2.json)을 읽어서 각각 5회씩 log를 출력하고, 먼저 5회 수행한 thread1이 3번째 행(test3.json)을 읽어서 다시 5회 log를 출력함. 이때 thread2는 1번 더 loop를 돌았어야 하지만 더이상 읽어올 CSV 데이터가 없기 때문에 loop 수를 만족하지 못하고 종료됨.
반응형
댓글