REST Assured 대 JMeter: REST 테스트 도구 비교

게시 됨: 2022-03-11

자동화된 테스트는 소프트웨어 품질 보증 프로세스의 중요한 구성 요소입니다. 그러나 REST(representational state transfer) API를 테스트하는 것은 까다로운 작업일 수 있습니다. REST API를 수동으로 테스트하는 많은 사람들은 세부 정보를 간과하고 시간을 절약할 수 있는 방법을 놓치고 있습니다.

올바르게 테스트되는 모든 REST API 서비스에는 다음 영역이 포함됩니다.

  • API 서비스가 REST 표준을 준수하는지 테스트
  • API 서비스 응답 코드 테스트
  • API 서비스 응답 콘텐츠의 주장
  • API 서비스의 성능 벤치마킹

REST 테스트용 도구

이를 위해서는 올바른 도구가 필요합니다. Apache JMeter 및 REST Assured는 REST API 서비스를 테스트하기 위한 두 가지 인기 있는 REST 테스트 도구입니다. 여기와 여기에서 실제로 사용하는 방법에 대해 자세히 알아볼 수 있습니다.

이 기사에서는 이 두 도구의 장단점과 기존 REST API 프로젝트에서 가장 적합한 위치에 대해 알아봅니다.

설정 용이성

한 가지 전제 조건이 있습니다. JMeter와 REST Assured 모두 Java가 필요하므로 JMeter 또는 REST Assured를 실행하려면 컴퓨터에 Java가 설치되어 있어야 합니다.

Apache JMeter 설치는 매우 간단합니다. 다운로드 페이지로 이동하여 ZIP 또는 TAR을 선택하고 아카이브를 다운로드하고 압축을 풀면 바로 사용할 수 있습니다.

아카이브의 압축을 푼 폴더로 이동하여 bin 하위 폴더로 이동한 다음 jmeter.bat (또는 Windows가 아닌 경우 운영 체제와 유사)를 실행합니다. Apache JMeter 설정 방법에 대한 자세한 내용은 이 페이지를 참조하십시오.

REST Assured를 설치하는 것은 약간 다른 경험입니다. REST Assured는 독립 실행형 도구가 아닙니다. 자바 라이브러리입니다. 이를 사용하려면 새 Java 프로젝트를 설정하고 프로젝트의 라이브러리로 포함해야 합니다. 물론 많은 빌드 도구에 대한 지원이 있으므로 종속성 해석기를 일부 공개(Maven) 리포지토리로 지정할 수 있습니다. 여기에서 REST Assured를 설정하는 방법에 대한 자세한 정보를 찾을 수 있습니다.

선적 서류 비치

Apache JMeter 설명서는 공식 JMeter 웹 사이트에서 찾을 수 있습니다. 시작부터 리스너와 같은 복잡한 기능에 이르기까지 꽤 철저한 문서를 제공합니다. 또한 공식 JMeter 웹 사이트에서 비디오 자습서와 같은 매우 풍부한 리소스에 대한 링크를 찾을 수 있습니다. 읽기에 덜 관심이 있고 시청에 더 관심이 있다면 이것은 확실히 당신에게 플러스가 될 것입니다.

도구/라이브러리 자체로서의 REST Assured 문서는 Github 리포지토리 내에서 찾을 수 있습니다. 무언가를 달성하는 방법에 대한 매우 자세한 설명과 함께 온라인 설명서에 나열된 기능의 큰 목록이 있습니다. 그러나 전체 문서는 도구를 탐색하는 가장 사용자 친화적인 방법이 아닌 하나의 거대한 웹 페이지입니다.

자동화된 REST 테스트 생성 및 유지 관리

그래픽 사용자 인터페이스(GUI)가 있는 독립 실행형 애플리케이션인 Apache JMeter를 사용하면 GUI에서 테스트를 생성할 수 있습니다. 이것은 JMeter에서 도입된 엔터티 계층 구조로 인해 특히 유용할 수 있습니다. 테스트 내에서 생성하는 모든 것이 JMeter GUI에서 트리와 같은 표현으로 표시됩니다.

테스트를 만들기 위해 코딩 기술이 없어도 됩니다. 그러나 GUI는 테스트 계획과 관련된 가능성을 제한하지 않습니다. 사용자 정의 프로그래밍/흐름을 추가하려는 경우 BeanShell 구성 요소를 사용하여 추가할 수 있습니다.

JMeter GUI 스크린샷

JMeter 프로젝트를 저장하면 생성한 모든 것이 하나의 거대한 XML 파일( .jmx 확장자 포함)에 저장됩니다. 일반적으로 테스트 중 하나가 약간 변경되더라도 변경하려면 GUI에서 프로젝트를 다시 열어야 할 가능성이 큽니다.

동일한 JMeter 프로젝트 파일에서 다른 사람들과 협업해야 하는 경우 이 거대한 XML 파일은 Git, SVN, Perforce 등과 같은 소스 제어 관리(SCM) 시스템을 사용하여 유지 관리하기가 쉽지 않습니다.

반면 REST Assured는 테스트를 생성하기 위해 Java 코딩 기술이 필요합니다. 테스트 생성을 위한 사용자 친화적인 GUI는 없습니다. 그러나 REST Assured를 사용하면 Gherkin 언어(Given-When-Then 구문)를 사용하여 테스트를 작성할 수 있으므로 일부 Java 코딩 기술이 필요한 경우에도 테스트는 사람이 읽을 수 있습니다.

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

REST Assured는 라이브러리이고 테스트는 실제로 Java로 작성되므로 테스트를 별도의 Java 파일로 구성할 수 있으므로 하나의 테스트를 변경해야 할 때 하나의 파일만 열면 됩니다. GUI가 필요하지 않으므로 SSH 터미널을 통해서도 쉽게 테스트를 편집할 수 있습니다. SCM을 사용하여 Java 파일을 유지 관리하기 쉽기 때문에 다른 사람과의 협업은 상당히 간단합니다.

REST 테스트 유형

JMeter는 웹 앱 및 서비스를 테스트하기 위한 성능 테스트 도구로 잘 알려져 있습니다. 기본적으로 성능 테스트 메트릭을 표시하는 데 사용할 수 있는 다양한 차트 유형이 포함된 멋진 보고 옵션이 있습니다.

JMeter 응답 시간 스크린샷

반면에 JMeter의 기본 사용 시나리오도 아닙니다. 응답 어설션을 포함하여 JMeter를 사용하여 REST API에 대한 기능 테스트를 생성할 수 있습니다.

REST Assured의 기본 사용 시나리오는 REST API 서비스의 기능 테스트를 위한 것입니다. 자체 응답 어설션 메커니즘(Gherkin 구문)도 함께 제공됩니다. REST Assured는 Java 라이브러리이므로 단위 테스트와 쉽게 통합할 수 있습니다.

성능 테스트와 관련하여 REST Assured는 즉시 사용 가능한 성능 테스트를 지원하지 않습니다. 그러나 성능 테스트에 사용하려면 REST Assured를 중심으로 성능 테스트를 위한 사용자 정의 프레임워크를 개발해야 합니다.

테스트 실행

JMeter 테스트는 두 가지 방법으로 호출할 수 있습니다.

실행 버튼을 클릭하여 사용자 인터페이스에서:

JMeter 실행 버튼 스크린샷

명령줄에서:

 jmeter -n -t your_script.jmx

JMeter의 공식 권장 사항은 GUI를 사용하여 성능 테스트를 실행하지 않는 것입니다. 테스트가 명령줄에서 실행하는 것보다 (초당 요청 수 측면에서) 더 느리게 실행되기 때문입니다.

반면 REST Assured에는 별도의 테스트 실행기가 필요합니다(예: jUnit 또는 TestNG(또는 Java 코드 실행을 위한 다른 방법)).

TestNG를 사용하는 Eclipse에서:

REST Assured Eclipse 스크린샷

예를 들어 Ant 빌드 도구를 사용하는 명령줄에서:

 ant run-tests

보고서 유형

Apache JMeter는 기본 목적으로 인해 테스트 결과에서 생성할 수 있는 보고서 유형이 많습니다. JMeter에서 성능 테스트를 실행할 수 있으므로 성능 메트릭은 일반적으로 다음과 같은 차트를 사용하여 표시됩니다.

JMeter 성능 보고서

여기에서 JMeter 보고서와 생성할 수 있는 보고서 유형에 대해 자세히 알아볼 수 있습니다.

REST Assured 자체는 보고서를 생성하지 않으므로 선택한 테스트 프레임워크와 사용자에게 달려 있습니다. 그러나 일부 단위 테스트 프레임워크와 통합되면 HTML, 텍스트 또는 XML 형식으로 꽤 유용한 보고서를 얻을 수 있습니다.

REST 보장 HTML 보고서

Jenkins와 통합

테스트 중인 제품의 지속적인 통합과 관련하여 테스트를 실행하고 결과를 보고하기 위해 테스트 자동화 프레임워크를 CI 도구와 통합하는 것이 매우 중요합니다.

JMeter 자동화 테스트는 빌드 후 작업을 설정하고 Jenkins 작업 페이지에서 멋진 대시보드 페이지를 가져올 수 있는 성능 플러그인을 사용하여 Jenkins와 쉽게 통합할 수 있습니다.

JMeter Jenkins 스크린샷

REST Assured는 Jenkins에 거의 모든 테스트 프레임워크용 플러그인이 있기 때문에 Jenkins와도 쉽게 통합할 수 있습니다. 예를 들어 테스트 결과에 대한 견고한 추세 차트를 다시 생성할 수 있는 TestNG 플러그인이 있습니다.

REST Assured Jenkins 스크린샷

커뮤니티 활동

쉽게 측정할 수 없는 범주입니다. 커뮤니티 활동은 도구의 성숙도나 기여자 수와 같은 여러 요인에 따라 달라집니다.

Apache JMeter는 오늘날 더 큰 커뮤니티를 보유하고 있습니다. 이것은 주로 JMeter가 오래 전에 시장에 등장했고 웹 앱 및 서비스의 성능 테스트와 관련하여 업계 표준으로 간주되기 때문입니다. JMeter는 5-6개월마다 공식 릴리스를 게시합니다. GitHub 리포지토리는 매일 새로운 커밋과 함께 매우 활동적입니다. JMeter는 Bugzilla를 문제 추적기로 사용하며 자주 변경되는 미해결 문제 목록이 있습니다. StackOverflow 검색에서 JMeter에 대한 23000개 이상의 결과가 있습니다. 소셜 네트워킹 사이트에서 JMeter는 공식 Twitter 계정을 가지고 있습니다. Facebook과 LinkedIn에는 JMeter에 대한 공식 계정이 없지만 몇 개의 그룹이 있으며 그 중 더 큰 그룹은 이 Facebook 그룹과 이 LinkedIn 그룹입니다.

REST Assured는 주요 단계로 나아가고 있으며 REST API 서비스 기능 테스트 자동화와 관련하여 여러 출처의 권장 사항인 첫 번째 선택이 되었습니다. REST Assured는 지난 2년 동안 6개월에 한 번씩 공식 릴리스를 게시해 왔습니다. GitHub 리포지토리에는 많은 기여자가 있으며 JMeter보다 약간 덜 활동적이지만 매우 활동적입니다. REST Assured는 GitHub 리포지토리의 문제를 추적하므로 모든 것이 한 곳에 있습니다. StackOverflow에는 REST Assured에 대한 2000개 이상의 검색 결과가 있으므로 JMeter 검색 결과에 비해 현저히 낮다고 말할 수 있습니다. 소셜 네트워킹 그룹의 경우 JMeter에 비해 회원 수가 현저히 적은 LinkedIn 그룹만 발견되었습니다. REST Assured 커뮤니티는 JMeter 커뮤니티만큼 크지는 않지만 매우 활동적입니다.

요약

JMeter와 REST Assured는 서로 장단점이 있습니다. 그러나 작업 중인 프로젝트에 따라 하나가 REST API 테스트 자동화에 더 적합할 것입니다. 둘 다 매우 강력하고 유용한 테스트 옵션이 있으며 뛰어난 보고 기능을 자랑하며 사용자 지정 테스트 프레임워크와 쉽게 통합할 수 있습니다.

다음은 이 두 가지 인기 있는 REST 테스트 도구에 대해 이 기사에서 살펴본 모든 비교 기준에 대한 요약입니다.

아파치 JMeter REST 보장
코딩 기술이 필요합니다 아니요 예(자바)
철저한 문서
기능 테스트 예(하지만 과잉)
성능 시험 아니요(기본 제공)
SCM에 적합(Git, P4...) 아니요
테스트 보고서 아니요
CI 도구와 통합
단위 테스트와 통합 아니요
병렬화 테스트
커뮤니티 활동