7

私は、swagger 定義から Jmeter の jmx ファイルを生成しています。生成される JMX およびテスト データ CSV はかなり役に立たないようです。API が期待するものに関するパラメーター情報がなく、応答マッピング情報への http ステータス コードもありません。

これを再現するには、任意の定義ファイルを使用できます。

  1. http://editor.swagger.io/#/に移動します
  2. ファイルメニューから例を開きます
  3. クライアントの生成メニューから、Jmeter をクリックします。

私が期待していたのは、QA 担当者がそれについて心配する必要がなく、テストだけに集中できるように、API のスケルトン全体を備えた JMX でした。

私が他の言語/ツール用に作成したすべてのクライアントは、Jmeter を除いて十分に機能します。ここで何か間違ったことをしていますか?

4

1 に答える 1

10

さまざまな API 用に JMeter (JMX) を生成し、いくつかの問題と注意点はありますが、動作するようにしました。

まず生成する

  • ホスト、ポート、testCases、csvFileName で置換するユーザー定義変数
  • API ごとの JMX
  • メソッドごとのスレッド グループ (POST、GET、..)
  • スレッド グループごとの HTTP ヘッダー マネージャー。空白ですが、そこにあると便利です。
  • 各リクエストの HTTP サンプラー
  • パラメータ値を埋めるための CSV データのロード
  • CSV ファイルで定義されたエラー コードで検証される HTTP ステータス アサーション

注意事項と問題

  • ホストを構成から保持するのではなく、ローカル ホストに置き換えます。変更するか、コマンドラインから渡す必要があります
  • それは 8080 のデフォルト ポートを使用します。
  • ループ回数は、変数 testCases によって制御されます。ただし、コマンド ライン経由でこれを渡したい場合は、JMeter の swagger-code-gen テンプレートにバグがあります。

    • testCases 変数には、testCases を ${__P(host,10)} として定義するテンプレートにバグがありますが、${__P(testCases,10)} である必要があります ここに画像の説明を入力
  • GET パラメーターは、${variable_name} ではなく 0 で埋められます。これは、swagger codegenのテンプレートからのものです。テストしたフォークに修正があります。もう1つのオプションは、JMXファイルで修正することです。元の ここに画像の説明を入力 パラメータを編集した後 ここに画像の説明を入力

動作する Swagger の例

以下は、私が使用した (echo から変更された) Swagger ファイルと、生成された (パラメーターを変更した) JMX です。RedLine13 サンプル テストを使用してこのJMXをテストし、必要に応じてパラメーターを渡しました。パラメータを渡す

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

そして、これがYamlの例です

---
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

Swagger CodeGen の更新された JMEter テンプレート

この作業を SwaggerCode Gen 内でシームレスに行うにはいくつかの問題があるため、Issueとプル リクエストを作成しました。すぐに使用する必要がある場合は、フォークがここにあります https://github.com/richardfriedman/swagger-codegen/commit/5aff601eaccf67ec44bb681816d40a25e5aa20a3

于 2016-09-14T16:32:47.537 に答える