|
|
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
Подскажите что лучше использовать для добавления или генерации тестовых данных в БД? Интересуют инструменты и сам процесс работы с тестовыми данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2015, 14:34 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
z3r9Подскажите что лучше использовать для добавления или генерации тестовых данных в БД? Интересуют инструменты и сам процесс работы с тестовыми данными. junit тесты http://www.mkyong.com/spring/spring-embedded-database-examples/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2015, 15:09 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
Atum1, а вы у себя тоже скриптом просто импортируете данные? Будет ведь проблема синхронизации структуры данных реальных и тестовых. И к тому же добавляешь какую-нибудь штуку новую и придется все эти скрипты заново создавать. И что с генерацией данных? Например тест сервиса регистрации пользователя и метод добавления пользователя в БД. Оба принимают entity Account и логично было бы его генерировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2015, 16:54 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
z3r9, не знаю, насколько у вас промышленные масштабы. Обычно когда пишешь код. То по 100 раз на дню добавляешь сам данные. Или у вас код вставки пишет один, а показ данных другой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2015, 17:27 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
Petro123, Масштабы не промышленные но хотелось бы узнать как это делать более правильно. авторОбычно когда пишешь код. То по 100 раз на дню добавляешь сам данные. Просто на основе этих данных писать тесты не очень стабильное решение получится. Через месяц забудешь зачем добавлял, удалишь и тест лег. авторИли у вас код вставки пишет один, а показ данных другой? Да хотя бы и для себя, чтобы через месяц было понятно откуда ты взял эти данные для теста. А так получается они только в тесте существуют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2015, 18:22 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2015, 19:02 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
Petro123, видел эту штуку, как-то не очень понравилось. Лучше наверное в ручную добавить данные и не парится и просто сделать дамп на черный день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2015, 00:03 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
z3r9, ну и сказал бы чем не понравилось. А то, увидел большое решение и испугался). Понятно, что тестированием пусть тестировщики занимаются и админы. А программисту некогда - ему писать надо). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2015, 09:02 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
z3r9Atum1, а вы у себя тоже скриптом просто импортируете данные? Будет ведь проблема синхронизации структуры данных реальных и тестовых. И к тому же добавляешь какую-нибудь штуку новую и придется все эти скрипты заново создавать. И что с генерацией данных? Например тест сервиса регистрации пользователя и метод добавления пользователя в БД. Оба принимают entity Account и логично было бы его генерировать. с генерацией - junit тесты - пишите предтест , который создает в n потоков объекты и сохраняет их в вашу БД. потом так же удаляете , либо перед каждым тестом либо после всех ... и ничего создавать заново не нужно ... новые поля бина можно заполнять через рефлексию - всяким мусором рандомно или по правила - как например для email адресов. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2015, 11:52 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
Petro123ну и сказал бы чем не понравилось. А то, увидел большое решение и испугался). А я и написал что мне наверное лучше будет создать данные в БД по умолчанию. И просто их не изменять, используя транзакции для отката. Так наверное проще всего тестировать методы работы с БД. Вот только такое не прокатит когда нужно получить в цикле данные для проверки (по дате проверки), проверить их и изменить дату. Получится зацикливание поскольку изменения откатятся. Atum1с генерацией - junit тесты - пишите предтест , который создает в n потоков объекты и сохраняет их в вашу БД. потом так же удаляете , либо перед каждым тестом либо после всех ... Да, так лучше получится чем в каждом методе создавать новые данные для теста. Пока вижу смысл в смешанном использовании данных по умолчанию и такого варианта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2015, 12:36 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
z3r9И просто их не изменять, используя транзакции для отката да. Так не выйдет, т.к. тестируем не откат, а живую работу. Если у заказчика есть уже заполненная БД, то просто берём его дамп на тестовый сервак или машину. Если заказчик новый, то нужно тестировать _первый_ ввод сущности. Т.к. она может не ввестись при отсутствии FK (напр. валюты в спр. валют). Так что при тестах - 2 вар-та, в зав-ти от продакшен БД. Для нагрузочного - БД под завязку и нагрузку. Объять необъятное вряд ли возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2015, 13:13 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
Petro123, если по умолчанию нельзя добавить данные и потом их откатывать. То тогда вопрос как лучше добавлять такие данные. Понятно что перед тестом при помощи @Before можно инициализировать добавление. Но вопрос у меня в том а как это самое добавление делать. Через обычную вставку хибернейтом. Просто когда у таблиц много связей то эти все каскады надоест прописывать. Чтобы создать комментарий к примеру на этом форуме нужно создать пользователя, категорию, тему и комментарий. В репозитории сделать метод создания тестового комментария наверное нельзя, поскольку DI я думаю не сработает. Придется делать отдельный слой (service) и в нем создавать тестовые данные. Еще есть вариант сделать фабрику тестовых данных. Но в этом всем есть проблема что постоянно при добавлении новых полей в БД тесты будут рушатся. По этому мне и интересно кто и как добавляет тестовые данные. И чего в том же хибернете например не сделать чтобы анотациями в сущности указываешь шаблон для генерации и данные сами бы генерировались. Может что-то подобное есть и я не знаю просто об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 00:52 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
z3r9, Ты не путай unit тестирование и другие виды. Комплексное тестирование вообще снаружи java идет. При unit ты тестируешь кусок кода. А не БЛ. У тебя наверно там просто ты один программист на все случаи в жизни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 08:00 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
Petro123, все равно ведь стоит вопрос добавления тестовых данных. Чтобы протестировать обновление комментариев то нужно сначала все эти каскады данных добавить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 11:12 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
z3r9Чтобы протестировать обновление комментариев давай конкретно. - на чём тестить? - какой код для тестов? - тебе Atum1 дал ссылку - разобрал? - твоя девелопер БД на твоей машине? В сети? Права на неё какие? Админские? ЗЫ. Ввод коммента на sql_ru это insert в одну таблу IMHO. Какой каскад? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 11:23 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
z3r9, про теорию. Какой именно тест тебе нужен? Т.к. тест выше модульного тут всего раз-два в году тема проскакивает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 11:28 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
автор- твоя девелопер БД на твоей машине? В сети? Права на неё какие? Админские? На моей машине с правами администратора. автор- на чём тестить? Я TestNG + Махито использую. автор- какой код для тестов? Берем с БД записи с датой обновления более N дней. Проверяем через интернет значение (Махитой эмулирую). Добавляем обновленное значение в БД и меняем дату. автортебе Atum1 дал ссылку - разобрал? Смотрел. Решение очень простое но если добавить ячейку в БД то тесты посыпятся. авторВвод коммента на sql_ru это insert в одну таблу IMHO. Какой каскад? Ну это потому что есть пользователь, раздел, тема. Но ты ведь когда будешь добавлять данные не факт что это будет, и нужно весь каскад данных добавлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 17:40 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
авторКакой именно тест тебе нужен? Т.к. тест выше модульного тут всего раз-два в году тема проскакивает. Это больше похоже на модульный тест чем на интеграционный поскольку я махитой эмулирую работу другого модуля и остается обработка значений БД в цикле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 17:55 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
автор не факт что это будет, и нужно весь каскад данных @BeforeSuite? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 18:56 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
Перед unit тестом или любым другим должно быть создано окружение...вплоть до локали. Методов валом: - из кода @xxxx на java - вне java ссылка выше - батник/скрипт и дамп @impdb zzzzz ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 19:06 |
|
||
|
Генерация или добавление тестовых данных
|
|||
|---|---|---|---|
|
#18+
z3r9, посмотри в сторону Liquibase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2015, 19:58 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39027658&tid=2125061]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
189ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 513ms |

| 0 / 0 |
