Автостоп
Автостоп - это плагин, настраиваемый при создании теста, который позволяет автоматически остановить тест в зависимости от заранее установленных критериев.
Автостоп применяется для ограничения времени и ресурсов, предусмотренных для тестирования, или когда после наступления определенных событий дальнейшее тестирование становится нецелесообразным.
Сработавший критерий автостопа приводит к досрочному завершению теста. Чтобы определить какой именно критерий остановил тест, им присваиваются различные Коды завершения, которые можно использовать для автоматической оценки результатов теста.
Формат блока autostop
в файле конфигурации тестирования yaml
:
autostop:
enabled: true
package: yandextank.plugins.Autostop
autostop:
- <критерий_автостопа>(<параметры_критерия>)
Важно
В файле конфигурации блок autostop
является обязательным, иначе тест не будет работать в новых версиях системы.
В блоке как минимум должен быть указан критерий limit
— предельное время работы теста.
Значение критерия limit
рекомендуется выставлять немного большим ожидаемой продолжительности теста, чтобы избежать не предусмотренного завершения теста автостопом при позитивном течении тестирования.
Основные критерии
Критерий | Описание |
---|---|
limit |
Обязательный критерий.Тест остановится через указанный период времени.Пример: limit(1m) . |
time |
Тест остановится, если в течение определенного периода среднее время ответа превысит установленное значение.Примеры: time(1s500ms,30s) , time(50,15) .Код завершения — 21 . |
http |
Тест остановится, если в течение определенного периода количество ответов с конкретными HTTP-кодами превысит установленные абсолютное или относительное значения. Используйте xx для всех ненулевых значений кодов.Примеры: http(404,10,15) , http(5xx,10%,1m) .Код завершения — 22 . |
net |
Аналогично http для net-кодов.Код завершения — 23 . |
quantile |
Тест остановится, если в течение определенного периода выбранный процентиль запросов превысит установленное значение. Доступные процентили: 25 , 50 , 75 , 80 , 90 , 95 , 98 , 99 , 100 .Пример: quantile(95,100ms,10s) , этот критерий остановит тест, если в течение 10 секунд 95 процентиль превысит 100 миллисекунд (в течение 10 секунд время обработки 5% запросов превысит 100 миллисекунд). |
instances |
Тест остановится, если в течение определенного периода количество тестирующих потоков превысит установленное значение.Примеры: instances(80%,30) , instances(50,1m) .Код завершения — 24 . |
steady_cumulative |
Тест остановится, если в течение определенного периода совокупные процентили не изменяются.Пример: steady_cumulative(1m) .Код завершения — 33 . |
Основные критерии не усредняются, они проверяются каждую секунду за указанный период. Например, критерий autostop=time(50,15)
остановит тест, если в течение 15 секунд среднее время ответа за каждую секунду превышает 50 миллисекунд.
Дополнительные критерии
Критерий | Описание |
---|---|
total_time |
Аналогично time , но суммарно за весь период времени (ответы, которые соответствуют критерию, могут быть не последовательными, но приходить за указанный период времени).Пример: total_time(300ms,70%,3s) .Код завершения — 25 . |
total_http |
Аналогично http , но суммарно за весь период времени. См. total_time .Примеры: total_http(5xx,10%,10s) , total_http(3xx,40%,10s) .Код завершения — 26 . |
total_net |
Аналогично net , но суммарно за весь период времени. См. total_time .Примеры: total_net(79,10%,10s) , total_net(11x,50%,15s) .Код завершения — 27 . |
negative_http |
Инвертированный total_http .Тест остановится, если в течение заданного времени суммарное количество ответов с HTTP-кодами, не соответствующими заданной маске, превысит установленные абсолютное или относительное значения. Используйте HTTP-код 200 , чтобы удостовериться, что сервер отвечает.Пример: negative_http(2xx,10%,10s) .Код завершения — 28 . |
negative_net |
Инвертированный total_net .Тест остановится, если в течение заданного времени суммарное количество ответов с net-кодами, не соответствующими заданной маске, превысит установленные абсолютное или относительное значения.Пример: negative_net(0,10%,10s) .Код завершения — 29 . |
http_trend |
Тест остановится, если в течение определенного периода тренд для определенных http-кодов остается отрицательным. Тренд — это сумма усредненного коэффициента линейной функции, рассчитанный для каждой пары точек за последние n секунд, и стандартного отклонения для него.Пример: http_trend(2xx,10s) .Код завершения — 30 . |
Критерии для определенного тега
Все критерии, кроме limit
, могут применяться для определенного URI, помеченного тегом, а не для всего теста в целом.
Например, критерий time(1s,5s,/latest/index/)
остановит тест, если в течение 5 секунд среднее время ответа только с URL-адреса с тегом /latest/index/
превысит 1 секунду.
Таким образом, можно проводить тестирование для каждого конкретного URI. Например:
autostop:
enabled: true
package: yandextank.plugins.Autostop
autostop:
- limit(5m)
- http(4xx, 20%, 15s, case1)
- http(4xx, 5%, 5s, case2)
Такой автостоп остановит тест, если в течение 15 секунд количество ответов URI с тегом case1
с http-кодом 4xx
превысит 20%, или в течение 5 секунд количество ответов URI с тегом case2
с http-кодом 4xx
превысит 5%.