K6 Load Testing - Как сделать последовательный идентификатор для всего тестового прогона - PullRequest
0 голосов
/ 07 августа 2020

У меня есть конечная точка api, в которой каждый запрос должен иметь другой идентификатор, но как сделать глобальное и последовательное приращение идентификатора для каждой итерации, совместно используемой для всех VU, как первичный ключ в таблице базы данных.

Пример:

request 1 : <id>400</id> VU :1
request 2 : <id>401</id> VU :1

request 1 : <id>402</id> VU :2

request 3 : <id>403</id> VU :1
request 4 : <id>404</id> VU :1

request 2 : <id>405</id> VU :2
request 3 : <id>406</id> VU :2

Есть ли способ объявить переменную, которая используется для всего теста? Настройка и инициализация предназначены для каждого ЦТ и не могут обмениваться данными согласно документации.

1 Ответ

1 голос
/ 07 августа 2020

Это нелегко, потому что каждый VU работает на отдельной JavaScript виртуальной машине, и память между ними не распределяется. Подробнее см. документацию по жизненному циклу теста . Это сделано для того, чтобы тестовые прогоны могли быть распределены по экземплярам k6, поэтому для синхронизации данных между ними потребуется внешнее решение.

Один из подходов, который вы можете использовать, - это отслеживать и увеличивать идентификатор в веб-сервисе, который ваш сценарий k6 может запросить, чтобы получить следующий идентификатор. Redis может хорошо служить этой цели, см. этот ответ для идей. Но учтите, что любое такое решение повлияет на ваши показатели теста в конце теста и на производительность самого теста, поэтому оно не идеально, но я не вижу лучшего подхода.

...