web-dev-qa-db-ja.com

最新のアプリケーションのパフォーマンス/負荷をテストする方法angularアプリケーション

angular 6+をフロントエンドフレームワークとして使用するWebアプリケーションをロード/パフォーマンステストしたい。アプリケーションが非常に大きく、多くのウィザード/モーダルなどを使用している。実際のe2e-frontend-tests(API呼び出しのテストだけでなく、js-renderingなど)

このようなアプリケーションをテストするための現在の最先端のアプローチとツールは何ですか?

明確にするために、私は例えばのような実際のe2eパフォーマンステストをしたいと思いますブラウザをヘッドレスモードで開き、ウィザードを開いて、ウィザードが表示されるまでの時間を取得します。 Seleniumを使用したフロントエンドテストのように。 Seleniumでもこれを行うことができますが、適切なツールかどうかはわかりません。

12

UIブラウザーテストのみを使用してアプリケーションのストレステストを実際に行うことはできません。理想的には、すべてのアプリケーションAPI呼び出しのストレステストと、UI /ブラウザーテストの両方を実行したいとします。

検討する1つのオプションは 最終的にはe2eランナー であり、これらのタスクの両方を実行でき、負荷テストとSeleniumテストの並列実行が可能です。

次のようになります。「data」フォルダには、APIにヒットするオプションの必要な検証ルールを含む、以前に記録されたhttpリクエストが含まれています。

@ test.yaml

defaults:
  target:
    URL: ssh://127.0.0.1/
    credentials: localhost
pipeline:
  init:
    action: Selenium:start
    version: 3.4.0
    port: 8085
    sdk: jdk
    sdkVersion: 1.8

  test:
    multiAction: true
    stressTest:
      action: run
      request: @load_test
      async: true
    testUI:
      action: Selenium:run
      browser: firefox
      remoteSelenium:
        URL: http://127.0.0.1:8085
      commands:
        - get(http://play.golang.org/?simple=1)
        - (#code).clear
        - (#code).sendKeys(package main

          import "fmt"

          func main() {
          fmt.Println("Hello Endly!")
          }
          )
        - (#run).click
        - command: output = (#output).text
          exit: $output.Text:/Endly/
          sleepTimeMs: 1000
          repeat: 10
        - close
      expect:
        output:
          Text: /Hello Endly!/

ここで、@ load_test.yaml

init
  testEndpoint: rest.myapp.com
pipeline:
  test:
    data:
      []Requests: '@data/*request.json'
    range: '1..1'
    template:
      info:
        action: print
        message: starting load testing
      load:
        action: 'http/runner:load'
        threadCount: 3
        '@repeat': 100000
        requests: $data.Requests
      load-info:
        action: print
        message: 'QPS: $load.QPS: Response: min: $load.MinResponseTimeInMs ms, avg: $load.AvgResponseTimeInMs ms max: $load.MaxResponseTimeInMs ms'
0
Adrian