Когда заходит речь о чтении данных из CSV-файла для использования их в нагрузочных тестах на JMeter, то первая рекомендация - CSV Data Set Config. Для большинства сценариев его хватает и он работает ожидаемо и без ошибок. Однако, в некоторых специфических случаях его поведение оказалось для меня непредсказуемым и стоило мне нескольких часов отладки. В отладке сценариев JMeter незаменимый инструмент это Debug Sampler. Он помог мне выявить проблему - при последовательном чтении нескольких файлов с именами вида <filename>_N.csv, где N меняется от 1 до 5 (для примера) CSV Data Set Config вёл себя непредсказуемо. Если быть конкретным, то при работе CSV Data Set Config во вложенных Loop/While Controller некорректно формировалось имя следуюшего файла и были проблемы с определением момента окончания чтения файла текущего. Поиски в Google не дали результатов - все примеры были с более простыми сценариями. В результате пришлось написать свою реализацию чтения данных из CSV на BeanShell.
Дано:
Есть веб-приложение "Опросник" (пример выдуман). Каждый пользователь должен ответить на 5 наборов из Х вопросов в каждом (X для каждого набора разное). После ответа на все вопросы одного набора, нужно перейти на следующий. Для проведения нагрузочного тестирования были подготовлены CSV-файлы с ответами вида:
answer1,0
answer2,1
answer3,2
...
answerX,X-1
где в первом столбце записаны ответы (answer), а во втором номера вопросов в наборе (answerNum).
Общий сценарий тестирования:
- Начинаем отвечать на i-ый набор вопросов.
- Читаем данные из i-го файла с ответами (построчно)
- Если это не последняя строка, то отвечаем на j-ый вопрос
- Если это последняя строка, то i++ и переходим к следующему набору вопросов (п. 1)
Выполнена на встроенном в JMeter языке BeanShell. Для использования необходимо воспользоваться компонентом BeanShell Sampler. Сам код можно скачать по ссылке Manually read CSV data in JMeter witn BeanShell или посмотреть ниже:
Также можно скачать тест-план. Он нерабочий с точки зрения HTTP-запросов, но даёт представление об общей структуре теста.
За помощь в исследовании проблемы благодарю Илью Пономаренко.
Также можно скачать тест-план. Он нерабочий с точки зрения HTTP-запросов, но даёт представление об общей структуре теста.
За помощь в исследовании проблемы благодарю Илью Пономаренко.
Комментариев нет:
Отправить комментарий