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