JMeter에서GraphQL을 깊이 연구하다

JMeter 5.4 최신 버전이 출시됨에 따라 GraphQL HTTP 샘플러를 사용하여 GraphQL 성능 테스트를 할 수 있습니다.본 블로그는 JMeter 5.4의 GraphQL을 깊이 있게 연구하였다.너는 내가 전에 top features of JMeter에 관한 댓글을 볼 수 있다.

GraphQL이란?


다음은graphql에서 복사한 텍스트입니다.조직하다
GraphQL은 API의 조회 언어이자 기존 데이터로 이러한 조회를 실행할 때이다.GraphQL은 API의 데이터에 대해 완전하고 이해할 수 있는 설명을 제공하여 고객이 무엇을 필요로 하는지 정확하게 요구할 수 있도록 한다. 단지 API는 시간의 추이에 따라 더욱 쉽게 발전하고 강력한 개발 도구를 지원할 뿐이다.
GraphQL은 페이스북이 2012년 개발한 것이다.그것은 2015년에 공개적으로 발표되었다.몇 년 전 이 프로젝트는 리눅스 재단이 주최하는 GraphQL 재단으로 넘어갔다.
ReST API는 일반적으로 데이터를 과도하게 가져오거나 가져오지 못하는 아키텍처 모드입니다.GraphQL의 가격은 적당하다.ReST와GraphQL 사이에는 많은 차이점이 있는데, 빠른 인터넷 검색은 이러한 차이점을 이해하는 데 도움을 줄 것입니다.
ReST를 사용하면 결국 여러 개의 요청이 필요한 데이터를 가져올 수 있습니다.예를 들어 아이스크림 온라인 상점을 개발하고 있다면 유제품이 없는 새로운 아이스크림과 모든 맛의 아이스크림을 얻으려면 여러 개의 HTTP 요청을 개발해야 한다.
JMeter의 GraphQL
만약 새로 도착한 유제품과 모든 맛이 없는 음식을 얻으려면 여러 개의 HTTP GET 요청을 보내야 한다. 이것은 최선의 방법이 아니다.
GraphQL을 입력합니다.
한 개의 조회만 보내면, 왕복 조회가 필요 없이 정확한 수량의 데이터를 얻을 수 있습니다.
이것은 새로 온 사람의 무료 우유와 모든 falvor의 이름과 id를 얻을 수 있는 허구적인GraphQL 조회입니다.
query {
  newarrivals {
    dairyfree {
      allflavors {
        name
        id
      }
    }
  }
}
JMeter-GraphQL에서 GraphQL에 깊이 들어가기
다음은 귀하가 받을 답장입니다.
{
    "data": {
        "allflavors": {
            "name": "lemonbar",
            "id": "p101"
        }
    }
}

JMeter 5.4 이전에


알다시피 JMeter 5.4에서 GraphQL 조회의 성능을 테스트하기 위해 새로운 GraphQL HTTP 샘플러를 얻었습니다.그러나 이 GraphQL HTTP 샘플러가 없으면 HTTP 샘플러로 GraphQL 요청을 보낼 수 있습니다.
GraphQL Examples in JMeter Repo
스타워즈 GraphQL 데모 프로젝트를 살펴보겠습니다.
HTTP를 사용하여 문자 정보 검색을 요청하려면 다음 설정을 사용합니다.
HTTP 메서드:POST
포스트 페이로드:
{
    "query": "{\n  hero {\n    name\n  }\n}\n"
}
샘플 그래픽 요청
GraphQL에는 세 가지 조작 유형이 있는데 그것이 바로 Query, MutationSubscription이다.

JMeter 5.4의 GraphQL을 깊이 연구하다


JMeter 5.4에서 GraphQL을 사용하는 등효 질의는 다음과 같습니다.
HTTP 메서드:가져오기
조회: query=query+%7B+hero+%7B+name+appearsIn+%7D+%7D HTTP 요청 예
두 경우 모두 다음과 같습니다.
{
    "data": {
        "hero": {
            "name": "R2-D2"
        }
    }
}
GraphQL HTTP 요청에서 프로토콜, 서버 이름, IP, 포트 등 전형적인 인자를 입력할 수 있습니다. 이것은 HTTP 요청 샘플러의 속성을 계승합니다.GraphQL과 관련된 필드, 예를 들어 작업 이름, 조회, 변수를 얻을 수 있습니다.
GraphQL 기본 설정
GraphQL HTTP 요청에는 GET와 POST 두 가지 HTT 방법이 있습니다.다른 방법은 중요하지 않다.
GraphQL 기본 설정 HTTP 방법
또한 GraphQL에서 매개 변수와 주체 데이터를 얻지 않고 조회와 변수를 활용할 수 있다.파일 업로드 옵션은 여기서도 중요하지 않습니다.
[고급] 탭에서는 HTML 파일에 포함된 에셋을 볼 수 없습니다.
GraphQL 고급 설정
GraphQL HTTP 요청에서는 질의가 필요하며 변수 및 작업 이름은 선택적입니다.

GraphQL 쿼리 예


JMeter 5.4에서 스타워즈GraphQL을 사용한 몇 가지 예를 살펴보자.당신은 over here에서 언급한 설명에 따라 항목을 설정할 수 있습니다.
서버를 시작하려면 다음 명령을 실행하십시오.
git clone https://github.com/apollographql/starwars-server
cd starwars-server
npm install
모든 것이 순조롭게 진행되면 서버 Playground - http://localhost:8080/graphql을 시작할 수 있습니다.
스타워즈 그래픽 데모
너는 스타워즈의 문서와 패턴을 얻을 수 있을 것이다.패턴을 이해하고 조회를 작성하는 것이 중요하다.
연기 테스트를 하려면 캐릭터를 검색해 봅시다.아래 질의를 복사하여 붙여넣은 다음 브라우저에서 Ctrl+Enter 키를 누릅니다.
{
  hero {
    name
  }
}
오른쪽에서 다음과 같은 출력을 얻을 수 있습니다.
{
  "data": {
    "hero": {
      "name": "R2-D2"
    }
  }
}
JMeter로 돌아갑니다.
JMeter에서 스레드 그룹 > 샘플 추가 > GraphQL HTTP 요청을 오른쪽 단추로 눌러서GraphQL HTTP 요청을 추가합니다. 아래와 같습니다.
JMeter에 GraphQL 요청 추가
다음과 같이 GraphQL HTTP 요청에 세부내용을 입력합니다.입력 포트 번호가 8080인지 확인하십시오.
스타워즈 조회
결과 트리 탐지기를 추가하고 Run을 누르십시오.다음과 같은 출력을 얻을 수 있습니다.
스타워즈 쿼리 출력
축하합니다!JMeter에서 GraphQL 테스트 계획 설계를 완료했습니다.
ID가 2000인 driod 정보를 검색하는 복잡한 질의를 살펴보겠습니다.다음은 문제.
query {
  droid(id: 2000){
    id
    name
    friends{
      name
    }
    appearsIn
    primaryFunction
  }
}
출력
스타워즈 쿼리 출력
이제 GraphQL의 변수를 사용합니다.이 변수를 사용하면 여러 클라이언트 사이에서 다시 사용할 수 있습니다.
예를 들어 검색 검색에 동적 문자열을 표시하려면 아래의 검색을 사용할 수 있습니다.
query search($keyword: String) {
  search(text: $keyword) {
    __typename
  }
}
변수에 아래 코드를 붙여넣으세요.
{
  "keyword": "an"
}
출력
스타워즈 검색 출력
이제 조작명의 예를 봅시다.질의가 여러 개인 경우 어떤 질의를 보낼지 JMeter에게 지시할 수 있습니다.
다음 검색에서, 우리는 문자와 검색 출력을 가져오려고 합니다. 그 중에서 우리는 각각 문자를heroSearch와textSearch로 표시합니다.
query textSearch {
  search(text: "an") {
    __typename
  }
}
query heroSearch {
  hero {
    name
  }
}
작업 이름을 지정하지 않고 질의를 있는 그대로 보내면 JMeter에서 다음 오류가 발생합니다.
작업 이름 오류
질의가 여러 개인 경우 작업 이름을 지정해야 합니다.
GraphQL 다중 쿼리
출력
GraphQL 다중 쿼리 출력
지금까지 우리는 이미 조회에 사용되는 예시를 보았다.이제 돌연변이를 봅시다.
객체를 업데이트하거나 변경하려면 요청을 보내야 합니다.이 스타워즈의 예에서 우리는 평론에 대해 변이를 진행할 것이다.
묻다
mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
  createReview(episode: $ep, review: $review) {
    stars
    commentary
  }
}
변수
{
  "ep": "JEDI",
  "review": {
    "stars": 5,
    "commentary": "This is a great movie!"
  }
}
출력
GraphQL 변수 출력
중요 팁: JMeter는 아직 가입 작업을 지원하지 않습니다.
나의 GitHub repo에는 더 많은 예가 있다.별 하나를 검사하고 보상해 주세요.
GraphQL Examples in JMeter Repo

찬성 의견

  • GraphQL HTTP 요청은 JMeter의 핵심 부분입니다.JMeter 플러그인 관리자
  • 에서 설치할 필요 없음
  • 지원 질의 및 질의
  • 반대 논점

  • 아직
  • 가입이 지원되지 않음

    마지막 말


    JMeter의 GraphQL은 GraphQL API의 성능을 테스트할 수 있으며, 포맷된 JSON과 HTTP 데이터를 탐지할 염려가 없습니다.그러나 HTTP 샘플러 사용이 만족스럽다면 사용할 수 있습니다.GraphQL은 테스트 계획을 유지하기 위해 편안하고 간단한 방법을 제공했다.

    좋은 웹페이지 즐겨찾기