Как проверить производительность / нагрузку современного углового приложения - PullRequest
0 голосов
/ 28 января 2019

Я хочу загрузить / протестировать веб-приложение, которое использует angular 6+ в качестве frontend-framework.Приложение довольно большое и использует много мастеров / модалов и т. Д. Я хочу провести несколько «настоящих» e2e-frontend-тестов (не только для тестирования API-вызовов, но также для js-рендеринга и т. Д.)

ЧтоСуществуют ли современные современные подходы и инструменты для тестирования подобных приложений?

Чтобы прояснить, я хочу провести настоящий тест производительности e2e, например, открыть браузер в режиме без головы, открыть мастер иполучите время, необходимое для появления мастера.Как тестирование внешнего интерфейса с селеном.Я мог бы сделать это с селеном Toobut, но я не знаю, если это правильный инструмент.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы не можете по-настоящему стресс-тестировать свое приложение, используя только браузерное тестирование пользовательского интерфейса, в идеале вы хотели бы провести стресс-тестирование всех вызовов API вашего приложения, а также запустить тестирование пользовательского интерфейса / браузера.

Один из возможных вариантов: endly e2e runner , он может выполнять обе эти задачи, загружать тест и запускать тест на селен параллельно

Это может выглядеть следующим образомгде папка «data» содержит ранее записанные http-запросы с необязательными желаемыми правилами проверки, которые применяют ваш 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!/

где @ 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 голосов
/ 29 января 2019

Лучший способ тестирования производительности на стороне клиента - это профилирование приложения с помощью инструментов разработчика браузера

Если вы хотите автоматизировать процесс - вам следует обратиться к инфраструктуре автоматизации браузера,самый популярный - селен .Вы также сможете выполнять JavaScript вызовов для доступа Объект производительности в целом и Время навигации / Пользовательские интерфейсы API в частности.

Я бы также рекомендовал иметь в виду производительность на стороне сервера, т. Е. Вы можете проверить, сколько одновременных пользователей приложение может обрабатывать без проблем, какова точка насыщения / первое узкое место, когда время отклика начинает увеличиваться илиошибки начинают возникать.Поэтому подумайте о том, чтобы объединить тесты производительности на стороне клиента с выполнением ожидаемой нагрузки на ваше приложение, так как это может быть в том случае, если с точки зрения клиента рендеринг очень быстрый, но сервер медленно реагирует, вызывая плохой пользовательский опыт.В зависимости от оборудования вашей лаборатории тестирования вы можете выбрать Selenium Grid , чтобы запустить множество экземпляров браузера, или выбрать специальный инструмент для нагрузочного тестирования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...