Суть проблемы Сейчас много материала по модульному и нагрузочному тестированию.
Тесты пишут все, код создается исключительно через ТДД , использовать jmeter/ab .
Однако все испытания очень тесно связаны с тестовыми данными.
И их нужно сгенерировать/записать.
Для юнит-тестирования проблема не актуальна — бросил мок, запустил и забыл.
А как насчет нагрузочного тестирования? Когда мне нужно не 1-2-5-10 объектов, а миллионы ?
Большинство (php) разработчиков, с которыми я встречался, когда сталкивались с задачей нагрузочного тестирования своего кода, вручную создают несколько фикстур и форсируют их ( аб/джметр ).
Полученный результат теста недостоверен, но об этом не задумываются.
Более продвинутые пишут скрипты для генерации данных, закидывают их в базу и потом начинают играть.
Это похвально, но их существенно меньше, да и сам метод мне не кажется идеальным - другой программист может не понять хреновый код родовых фикстур (ведь создатель написал его быстро и в утилитарных целях) и рано или поздно все либо пойдут по первому пути, либо начнут писать новую генерилку.
Ценность правильного создания светильников сейчас недооценена; многие просто пренебрегают этим из-за сложности такой работы (представим себе 15-25 связанных таблиц, написать скрипт генерации фикстур будет очень, кхм, интересно).
Я прекрасно понимаю, почему разработчики так делают, и когда возникла такая же проблема, я решил не биться головой об стенку, а поискать инструменты для нормальной генерации.
связанный данные.
Я был очень удивлён, но ничего вразумительного не нашлось, сложилось ощущение, что этот вопрос просто никого не интересует и мне придётся всю жизнь писать кривые скрипты с кучей циклов.
Однако подходящий инструмент был найден, мы успешно опробовали его в своей работе, и теперь я хочу представить его вам.
Бенератор данных - FTW!
Генератор (да, забавное название) служит двум целям: генерации данных и анонимизации.Последнее выходит за рамки данной статьи, но тоже очень правильная и полезная вещь (модификация дампа базы данных с производства с целью вырезания личных данных пользователей и номеров их кредиток).
Toolza использует то, что вы написали XML скрипт для генерации CSV/XML или экспортируйте непосредственно в базу данных.
По сути, он работает везде и поддерживает следующие базы данных:
- Оракул
- DB2
- MS SQL-сервер
- MySQL
- PostgreSQL
- HSQL
- Н2
- дерби
- Жар-птица
Звучит просто, но есть нюансы.
Это обзорная статья, я не буду пытаться описать все возможности этого инструмента, не буду переводить всю многостраничную документацию, моя задача показать способ решения классических случаев и тем самым заинтересовать тех, кто нужно это.
Теперь я попробую пошагово описать процесс от загрузки до получения данных в Postgres. Предполагается, что у вас уже установлен Postgres :)
Распаковка/Установка
Распаковка архив продукции и добавим его в конец ~/.bash_profile :
export BENERATOR_HOME=/path/to/unpacked/benerator
export PATH=$PATH:$BENERATOR_HOME/bin
Мы делаем: chmod a+x $BENERATOR_HOME/bin/*.
sh
Первый сценарий
Для начала нам необходимо познакомиться с основными структурами скрипта, как он устроен и из чего состоит. Сгенерируем 5 пользователей с несколькими полями и отправим их в консоль.
Создайте собственную папку и сохраните в ней benerator.xml со следующим содержимым: benerator.xml <Эxml version="1.0" encoding="UTF-8"?>
<setup xmlns=" http://databene.org/benerator/0.7.6 "
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
xsi:schemaLocation="http://databene.org/benerator/0.7.6 benerator-0.7.6.xsd"
defaultEncoding="UTF-8"
defaultDataset="US"
defaultLocale="us"
defaultLineSeparator="\n">
Теги: #databene #benerator #тестирование #фикстуры #пользовательские данные #тестирование ИТ-систем
-
Три Основные Причины Утечки Данных Из Облака
19 Dec, 24 -
Adobe Выпустила Flash Lite 3
19 Dec, 24