연권
달콘박스
연권
전체 방문자
오늘
어제
  • 전체 (308)
    • Web (22)
      • JavaScript (8)
      • TypeScript (2)
      • Node.js (8)
      • HTML (0)
      • CSS (0)
      • Network (1)
      • Browser (0)
      • Patterns (3)
    • Framwork (4)
      • Vue.js (3)
      • Electron (1)
    • Infra&DevOps (1)
    • Algorithm (246)
    • Database (16)
    • Review (15)
    • Test (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 문자열
  • 진수
  • 백준
  • 진법
  • 알고리즘
  • 동적계획법
  • 코딩테스트 연습
  • MySQL
  • 프로그래머스
  • java
  • javascript
  • 정렬
  • 백준ㅇ
  • 백트레킹
  • BFS
  • 재귀
  • DP
  • sql
  • 스택
  • typescript

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
연권

달콘박스

JMeter로 REST API 자동 테스트하기4
Test

JMeter로 REST API 자동 테스트하기4

2021. 7. 2. 15:24
반응형

 

마지막으로 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

 

 

참고자료

https://www.geeksforgeeks.org/convert-xml-to-csv-in-python/

https://blog.e-zest.com/how-to-run-jmeter-in-non-gui-mode/

반응형
저작자표시 동일조건 (새창열림)

'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
    'Test' 카테고리의 다른 글
    • JMeter로 REST API 자동 테스트 하기3
    • JMeter로 REST API 자동 테스트 하기2
    • JMeter로 REST API 자동 테스트 하기1
    연권
    연권

    티스토리툴바