반응형
마지막으로 JMeter를 CLI모드(Non GUI)로 사용하는 방법과 csv로 뽑아낸 결과값에는 포함되지 않고 xml로만 가능한 reponse data를 포함하기 위해 xml to csv 컨버터를 만드는 과정에 대한 내용을 다루겠습니다.
환경
Ubuntu 20.04.2.0 LTS
openjdk 8
Cli Mode (Non GUI)
./apache-jmeter-5.4.1/bin/jmeter -n -t JMX파일.jmx -l ./result.xml
옵션
n : JMeter를 Non GUI 모드로 실행하도록 지정합니다.
t : Test plan이 있는 jmx파일을 동작시킵니다.
l : 결과를 기록할 파일 이름
위 명령어를 실행하면 작성해둔 test plan파일이 동작하여 rest api를 테스트 하고 현재 디렉토리에 result.xml파일로 저장됩니다.
XML to CSV convert
python으로 xml to csv를 한 예제가 있어서 해당 코드를 수정하여 작성하였습니다.
import xml.etree.ElementTree as Xet
import pandas as pd
cols = ["s", "lb", "rc", "rm","dt", "name", "failure", "error", "failureMessage", "responseData", "class", "s2", "lb3", "rc4", "rm5", "dt6", "responseDate7", "class8"]
rows = []
xmlparse = Xet.parse("result.xml")
root = xmlparse.getroot()
for i in root.iter("httpSample"):
s = i.attrib["s"]
lb = i.attrib["lb"]
rc = i.attrib["rc"]
rm = i.attrib["rm"]
dt = i.attrib["dt"]
assertionResult = i.find('assertionResult')
if assertionResult is None:
name = ''
failure = ''
error = ''
failureMessage = ''
else:
name = assertionResult.find('name').text
failure = assertionResult.find("failure").text
error = assertionResult.find("error").text
failureMessage = assertionResult.find("failureMessage").text
responseData = i.find("responseData").text
rows.append({
"s": s,
"lb": lb,
"rc": rc,
"rm": rm,
"dt": dt,
"name": name,
"failure": failure,
"error": error,
"failureMessage": failureMessage,
"responseData": responseData
})
df = pd.DataFrame(rows, columns=cols)
# Writing dataframe to csv
df.to_csv('./results/result.csv')
출력된 결과는 현재 디렉토리 기준 results폴더에 result.csv에 저장됩니다.
마지막으로 테스트와 컨버트를 연결하여 동작시켜줄 shell파일을 작성합니다.
#!/bin/bash
./apache-jmeter-5.4.1/bin/jmeter -n -t ./jmeter-test-msiev.run.goorm.io.jmx -l ./result.xml && python3 ./convert.py
참고자료
반응형
'Test' 카테고리의 다른 글
JMeter로 REST API 자동 테스트 하기3 (0) | 2021.06.28 |
---|---|
JMeter로 REST API 자동 테스트 하기2 (0) | 2021.06.24 |
JMeter로 REST API 자동 테스트 하기1 (0) | 2021.06.22 |