web-dev-qa-db-fra.com

Comment tester les performances / la charge d'une application moderne angular

Je veux charger/tester les performances d'une application Web qui utilise angular 6+ comme framework frontend. L'application est assez grande et utilise beaucoup d'assistants/modaux, etc. Je veux en faire " vrais "e2e-frontend-tests (pas seulement tester les appels API, mais aussi le rendu js etc.)

Quelles sont les approches et les outils de pointe actuels pour tester des applications comme celle-ci?

Pour clearify, je veux faire un vrai test de performance e2e comme par exemple ouvrez un navigateur en mode sans tête, ouvrez un assistant et obtenez le temps qu'il faut pour que l'assistant apparaisse. Comme les tests frontaux avec Selenium. Je pourrais le faire avec Selenium toobut, je ne sais pas si c'est le bon outil.

12

Vous ne pouvez pas vraiment tester la résistance de votre application en utilisant uniquement les tests du navigateur de l'interface utilisateur, idéalement, vous souhaitez faire à la fois un test de stress tous vos appels d'API d'application, tout en exécutant le test de l'interface utilisateur/du navigateur.

Une option à considérer pourrait être endly e2e runner , il peut effectuer ces deux tâches, charger le test et exécuter le test Selenium en parallèle

Il peut ressembler à ce qui suit, où le dossier "data" contient des requêtes http précédemment enregistrées avec des règles de validation souhaitées facultatives qui hissent votre API

@ 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!/

où @ 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