Быстрый Старт
Что такое Bencher?
Bencher - это набор инструментов для непрерывного тестирования производительности. Когда-нибудь регрессия производительности влияла на ваших пользователей? Bencher мог бы предотвратить это. Bencher позволяет вам обнаруживать и предотвращать регрессии производительности до того, как они попадут в продакшн.
- Запустить: Запустите свои тесты производительности локально или в CI, используя ваши любимые инструменты для этого. CLI
bencher
просто оборачивает ваш существующий аппарат тестирования и сохраняет его результаты. - Отслеживать: Отслеживайте результаты ваших тестов производительности со временем. Мониторите, запрашивайте и строите графики результатов с помощью веб-консоли Bencher на основе ветки исходного кода, испытательного стенда и меры.
- Поймать: Отлавливайте регрессии производительности в CI. Bencher использует инструменты аналитики, работающие по последнему слову техники, чтобы обнаружить регрессии производительности, прежде чем они попадут в продакшн.
По тем же причинам, по которым модульные тесты запускаются в CI, чтобы предотвратить регрессии функций, тесты производительности должны быть запущены в CI с Bencher, чтобы предотвратить регрессии производительности. Ошибки производительности – это тоже ошибки!
Установка CLI bencher
Linux, Mac и Unix
Для систем Linux, Mac и других систем, подобных Unix, выполните следующее в вашем терминале:
Windows
Для систем Windows выполните следующее в терминале PowerShell:
🐰 Если вы получаете ошибку, которая говорит
запуск скриптов отключен на этой системе
:
Откройте Powershell
сЗапуск от имени администратора
- Выполните:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- Введите:
Y
- Запустите этот скрипт заново
Для дополнительных вариантов установки смотрите как установить CLI bencher
.
Теперь давайте проверим, что у нас установлен CLI bencher
.
Запустите: bencher --version
Вы должны увидеть:
Создайте аккаунт в Bencher Cloud
Bencher - это открытое и само-хостимое программное обеспечение. Если вас интересует само-хостинг, ознакомьтесь с учебником по Docker для Bencher. Но для этого учебника мы будем использовать Bencher Cloud.
Зарегистрируйтесь в Bencher Cloud
После создания аккаунта, вам нужно будет подтвердить свой адрес электронной почты. Проверьте свою почту на наличие ссылки для подтверждения. После этого вы должны быть вошли в систему в Bencher Cloud.
Создание токена API
Чтобы использовать API Bencher, вам нужно создать токен API.
Перейдите в Bencher Console.
Наведите указатель мыши на свое имя в правом верхнем углу.
Появится выпадающее меню. Выберите Токены
.
На странице Токены API нажмите кнопку ➕ Добавить
.
Добавить токен API
После создания вашего нового токена API, вам нужно скопировать его в буфер обмена. В терминале, в котором вы планируете работать, экспортируйте токен API как переменную окружения.
На Linux, Mac и других системах типа Unix выполните: export BENCHER_API_TOKEN=YOUR_TOKEN
На Windows выполните: $env:BENCHER_API_TOKEN = "YOUR_TOKEN"
Если вы затем выполните echo $BENCHER_API_TOKEN
или Write-Output $env:BENCHER_API_TOKEN
соответственно.
Вы должны увидеть:
🐰 Примечание: Если вы перейдете в другой терминал, вам нужно будет снова экспортировать токен API.
Создайте проект
Теперь, когда у нас есть учетная запись пользователя и API токен, мы можем создать проект. Сначала нам нужно знать, к какой организации принадлежит наш новый проект.
Запустите: bencher org list
Вы должны увидеть что-то вроде:
Ваш вывод должен немного отличаться от приведенного выше:
uuid
является псевдослучайнымname
иslug
будут основаны на вашем имени пользователяcreated
иmodified
метки времени будут от того момента, когда вы только что зарегистрировались
Теперь мы можем создать новый проект внутри вашей организации.
Подставьте slug
вашей организации для аргумента organization
(например, YOUR_ORG_SLUG
) в приведенную ниже команду.
Запустите: bencher project create YOUR_ORG_SLUG --name "Save Walter White" --url http://www.savewalterwhite.com
Вы должны увидеть что-то вроде:
Снова, ваш вывод должен немного отличаться от приведенного выше.
Главное, чтобы эта команда работала.
Отметьте поле slug
проекта (например, save-walter-white-1234abcd
).
Запустите отчет
Наконец, мы готовы собрать некоторые показатели нагрузочных тестов! Для простоты в этом учебнике мы будем использовать фиктивные данные.
Запустите: bencher mock
Вы должны увидеть что-то вроде:
Ваш вывод должен отличаться от приведенного выше, так как данные псевдослучайные. Главное, чтобы эта команда работала.
Теперь давайте запустим отчет с использованием фиктивных данных нагрузочного измерения.
Подставьте slug
вашего проекта для аргумента --project
(то есть YOUR_PROJECT_SLUG
) в команду ниже.
Запустите: bencher run --project YOUR_PROJECT_SLUG "bencher mock"
Вы должны увидеть что-то вроде:
Теперь вы можете увидеть результаты каждого теста в браузере.
Нажмите или скопируйте и вставьте ссылки из View results
.
Там должна быть только одна точка данных для каждого теста, поэтому давайте добавим больше данных!
Во-первых, давайте установим наш slug
проекта в качестве переменной среды, чтобы мы не должны были его предоставлять с --project
при каждом запуске.
Запустите: export BENCHER_PROJECT=save-walter-white-1234abcd
Если вы затем запустите: echo $BENCHER_PROJECT
Вы должны увидеть:
Давайте заново запустим ту же команду без --project
, чтобы сгенерировать больше данных.
Запустите: bencher run "bencher mock"
Теперь давайте сгенерируем больше данных, но на этот раз мы будем передавать наши результаты в bencher run
.
Запустите: bencher mock | bencher run
Иногда вы можете захотеть сохранить свои результаты в файл и позволить bencher run
их выбрать.
Запустите: bencher run --file results.json "bencher mock > results.json"
Также, вы можете иметь отдельный процесс, запускающий ваши тесты и сохраняющий ваши результаты в файл. Затем bencher run
просто их выберет.
Запустите: bencher mock > results.json && bencher run --file results.json
Наконец, давайте забьем много данных с использованием аргумента --iter
в bencher run
.
Запустите: bencher run --iter 16 "bencher mock"
🐰 Совет: Ознакомьтесь с документацией CLI подкоманды
bencher run
для полного обзора того, что может сделатьbencher run
!
Создайте оповещение
Теперь, когда у нас есть исторические данные для наших тестов, давайте создадим оповещение! Оповещения генерируются, когда результат теста определяется как регрессия производительности. Так что давайте моделируем регрессию производительности!
Запустите: bencher run "bencher mock --pow 8"
В конце вывода должен появиться новый раздел под названием View alerts
:
Теперь вы можете увидеть оповещения для каждого теста в браузере.
Нажмите или скопируйте и вставьте ссылки из View alerts
.
🐰 Совет: Ознакомьтесь с документацией по порогам и оповещениям для полного обзора того, как обнаруживаются регрессии производительности!
🐰 Поздравляем! Вы поймали свою первую регрессию производительности! 🎉