2017-06-08 8 views
5

にルートでログインし。負荷テストは、私はログインが必要ですルートの負荷テストをやろうとしているフェニックス

私が以前にうまく働いログアウトルートのhttps://artillery.io/docs/index.htmlを使用していました。ログインしたルートでは、&のリクエストヘッダーを設定する機能を使用してbeforeRequestを呼び出してみました。

config: target: "https://www.mywebsite.com/" phases: - duration: 60 arrivalRate: 50 processor: "test.js" scenarios: - flow: - post: url: "/login" beforeRequest: "setReqBody"

と私beforeRequestはこのように見えた:私はwindowが未定義であるというエラーを取得しています

function setReqBody(requestParams, context, ee, next) { requestParams.body = {'email': '[email protected]', 'password': 'password', '_csrf_token': window.csrfToken} return next(); }

フェニックスの負荷テストに使用できるものがあるかどうかを見て回りましたが、運があまりありませんでした。 &これらのルートをテストする他の方法はありますか?またはこれを行うために使用できるその他の依存関係/ライブラリ

+0

それが直接のヘルプのための@ hassy-veldstra(砲兵の作成者を)尋ねる価値があるかもしれません... – nelsonic

答えて

1

Apache JMeterを使用することを検討して、それが持っている:HTTPを模倣する

詳細については、REST API Testing - How to Do it Rightを参照してください。

2

beforeRequest関数が実行されている(コードがブラウザで実行されていない)ため、windowが定義されていないという問題があります。

ログインページのDOM/HTMLのどこかにCSRFトークンが含まれている場合、最初に取得してPOST要求に含めることができます。ログインフォームがname属性= csrfTokenでCSRFトークンを含む非表示の入力があった場合たとえば、:

scenarios: 
    - flow: 

    # Get the login page and grab the CSRF token 
    - get: 
     url: "/login" 
     capture: 
      selector: "input[name='csrf_token']" 
      attr: "value" 
      as: "csrfToken" 

    # Useful for debugging: check that we used the right selector: 
    - log: "Extracted CSRF token: {{ csrfToken }}" 

    # Now send a login request: 
    - post: 
     url: "/login" 
     form: 
      email: "[email protected]" 
      password: "password123" 
      _csrf_token: "{{ csrfToken }}" 

    # The session cookie will be remembered and reused automatically by 
    # Artillery from this point onwards. 
関連する問題