Шаблон данных теста Swagger Codegen JMeter

Я генерирую jmx-файл Jmeter из определения swagger, генерируемый JMX и тестовые данные CSV кажутся довольно бесполезными, у него нет информации о параметрах относительно того, что ожидал API, нет кода состояния http для информации сопоставления ответов и т. Д.

Вы можете взять любой файл определения, чтобы воспроизвести это:

  1. перейдите на http://editor.swagger.io/#/
  2. открыть любой пример из меню файла
  3. В меню создания клиента нажмите Jmeter.

Я ожидал, что это будет JMX со всем каркасом API, чтобы QA не беспокоились об этом и сосредоточились только на тестах.

Все клиенты, которые я создаю для других языков / инструментов, достаточно хороши, кроме Jmeter, я что-то делаю здесь не так?


person Sumit Maingi    schedule 14.09.2016    source источник


Ответы (1)


Я создал JMeter (JMX) для разных API и заставил его работать, хотя есть несколько проблем и предостережений.

Сначала он генерирует

  • Пользовательские переменные для замены в Host, Port, testCases, csvFileName
  • JMX для каждого API
  • Группа потоков для каждого метода (POST, GET, ..)
  • диспетчер заголовков HTTP для каждой группы потоков, пустой, но полезный для использования.
  • HTTP Sampler для каждого запроса
  • Загрузка CSV-данных для заполнения значений параметров
  • Утверждение статуса HTTP, которое проверяется по коду ошибки, определенному в файле CSV.

Предостережения и проблемы

  • Он не защищает ваш хост от конфигурации, он заменяет локальный хост. Вы должны изменить его или передать через командную строку
  • Он использует порт по умолчанию 8080, это тоже меня огорчило.
  • Количество циклов контролируется переменной testCases. Однако в шаблоне swagger-code-gen для JMeter есть ошибка, если вы хотите передать это через командную строку.

    • testCases variable has a bug in the template it defines testCases as ${__P(host,10)} but it should be ${__P(testCases,10)} enter image description here
  • Параметры GET заполняются 0 вместо $ {variable_name}, это из template в генерации кода swagger. У меня есть исправление в моей вилке, которое я тестировал. Другой вариант - просто исправить это в исходном файле JMX  введите описание изображения здесь И после редактирования параметров введите описание изображения здесь

Пример работающего Swagger

Ниже приводится использованный мной файл Swagger (измененный из echo) и сгенерированный (с модификацией параметров) JMX. Я протестировал этот JMX, используя Пример теста RedLine13 и передача требуемых параметров. Передача параметров

-JtestCases=50 
-Jhost=mazimi-prod.apigee.net 
-Jport=80

А вот пример Ямл

---
swagger: '2.0'
info:
  version: 1.0.0
  title: Echo
  description: |
    #### Echos back every URL, method, parameter and header
    Feel free to make a path or an operation and use **Try Operation** to test it. The echo server will
    render back everything.
schemes:
  - http
host: mazimi-prod.apigee.net
basePath: /echo
paths:
  /{id}:
    get:
      parameters:
        - name: id
          in: path
          description: ID
          type: string
          required: true
        - name: user
          in: query
          description: name
          type: string
          required: true
        - name: location
          in: query
          description: location
          type: string
          required: true
      responses:
        200:
          description: Echo GET

Обновленный шаблон JMEter в Swagger CodeGen

Поскольку есть несколько проблем для обеспечения бесперебойной работы в SwaggerCode Gen, я создал проблему и запрос на вытягивание. Если вам нужно использовать его раньше, вилка будет здесь https://github.com/richardfriedman/swagger-codegen/commit/5aff601eaccf67ec44bb681816d40a25e5aa20a3

person Richard Friedman    schedule 14.09.2016
comment
Спасибо .. займусь этим и скоро вернусь - person Sumit Maingi; 15.09.2016
comment
хорошо, я попробовал ... Я взял вашу ветку и построил ее ... сгенерировал код ... он выглядит лучше ... чтобы поместить вещи в контекст ... Я ожидал, что параметры тела будут предварительно заполнены схемой модели для каждого api ... это было неразумно? Схемы довольно большие и вложенные, и я надеюсь, что специалисты по контролю качества не допускают орфографических ошибок при отправке запросов ... можно ли это как-то сделать? - person Sumit Maingi; 15.09.2016
comment
Я думаю, что в этом шаблоне можно внести немало улучшений, и да, все, что определено в схеме, может попасть в шаблон. - person Richard Friedman; 15.09.2016
comment
Хорошо, спасибо за все ваши усилия @richard, я собираюсь оставить вопрос открытым на случай, если есть другой инструмент, кроме swagger-codegen, который может сделать это лучше, о котором я не знаю. - person Sumit Maingi; 16.09.2016