Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Генерация или добавление тестовых данных / 22 сообщений из 22, страница 1 из 1
06.08.2015, 14:34
    #39024386
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
Подскажите что лучше использовать для добавления или генерации тестовых данных в БД? Интересуют инструменты и сам процесс работы с тестовыми данными.
...
Рейтинг: 0 / 0
06.08.2015, 15:09
    #39024417
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
z3r9Подскажите что лучше использовать для добавления или генерации тестовых данных в БД? Интересуют инструменты и сам процесс работы с тестовыми данными.

junit тесты

http://www.mkyong.com/spring/spring-embedded-database-examples/
...
Рейтинг: 0 / 0
06.08.2015, 16:54
    #39024512
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
Atum1, а вы у себя тоже скриптом просто импортируете данные? Будет ведь проблема синхронизации структуры данных реальных и тестовых. И к тому же добавляешь какую-нибудь штуку новую и придется все эти скрипты заново создавать.

И что с генерацией данных? Например тест сервиса регистрации пользователя и метод добавления пользователя в БД. Оба принимают entity Account и логично было бы его генерировать.
...
Рейтинг: 0 / 0
06.08.2015, 17:27
    #39024546
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
z3r9,
не знаю, насколько у вас промышленные масштабы.
Обычно когда пишешь код. То по 100 раз на дню добавляешь сам данные.
Или у вас код вставки пишет один, а показ данных другой?
...
Рейтинг: 0 / 0
06.08.2015, 18:22
    #39024596
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
Petro123, Масштабы не промышленные но хотелось бы узнать как это делать более правильно.

авторОбычно когда пишешь код. То по 100 раз на дню добавляешь сам данные.

Просто на основе этих данных писать тесты не очень стабильное решение получится. Через месяц забудешь зачем добавлял, удалишь и тест лег.

авторИли у вас код вставки пишет один, а показ данных другой?

Да хотя бы и для себя, чтобы через месяц было понятно откуда ты взял эти данные для теста. А так получается они только в тесте существуют.
...
Рейтинг: 0 / 0
06.08.2015, 19:02
    #39024619
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
z3r9,
бенератор
http://habrahabr.ru/post/169713/
Там внизу есть минусы твоих хотелок.
...
Рейтинг: 0 / 0
07.08.2015, 00:03
    #39024696
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
Petro123, видел эту штуку, как-то не очень понравилось. Лучше наверное в ручную добавить данные и не парится и просто сделать дамп на черный день.
...
Рейтинг: 0 / 0
07.08.2015, 09:02
    #39024761
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
z3r9,
ну и сказал бы чем не понравилось. А то, увидел большое решение и испугался).
Понятно, что тестированием пусть тестировщики занимаются и админы.
А программисту некогда - ему писать надо).
...
Рейтинг: 0 / 0
07.08.2015, 11:52
    #39024904
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
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.
 @BeforeClass
    public static void setUpClass() {
    }
    
    @AfterClass
    public static void tearDownClass() {
    }
    
    @Before
    public void setUp() {
}

 @After
    public void tearDown() {
    }

    @Test
   public void test() {}
...
Рейтинг: 0 / 0
07.08.2015, 12:36
    #39024963
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
Petro123ну и сказал бы чем не понравилось. А то, увидел большое решение и испугался).
А я и написал что мне наверное лучше будет создать данные в БД по умолчанию. И просто их не изменять, используя транзакции для отката. Так наверное проще всего тестировать методы работы с БД.

Вот только такое не прокатит когда нужно получить в цикле данные для проверки (по дате проверки), проверить их и изменить дату. Получится зацикливание поскольку изменения откатятся.

Atum1с генерацией - junit тесты - пишите предтест , который создает в n потоков объекты и сохраняет их в вашу БД.
потом так же удаляете , либо перед каждым тестом либо после всех ...

Да, так лучше получится чем в каждом методе создавать новые данные для теста. Пока вижу смысл в смешанном использовании данных по умолчанию и такого варианта.
...
Рейтинг: 0 / 0
07.08.2015, 13:13
    #39024999
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
z3r9И просто их не изменять, используя транзакции для отката
да. Так не выйдет, т.к. тестируем не откат, а живую работу.
Если у заказчика есть уже заполненная БД, то просто берём его дамп на тестовый сервак или машину.
Если заказчик новый, то нужно тестировать _первый_ ввод сущности. Т.к. она может не ввестись при отсутствии FK (напр. валюты в спр. валют).
Так что при тестах - 2 вар-та, в зав-ти от продакшен БД.
Для нагрузочного - БД под завязку и нагрузку.
Объять необъятное вряд ли возможно.
...
Рейтинг: 0 / 0
12.08.2015, 00:52
    #39027507
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
Petro123, если по умолчанию нельзя добавить данные и потом их откатывать. То тогда вопрос как лучше добавлять такие данные. Понятно что перед тестом при помощи @Before можно инициализировать добавление. Но вопрос у меня в том а как это самое добавление делать. Через обычную вставку хибернейтом. Просто когда у таблиц много связей то эти все каскады надоест прописывать. Чтобы создать комментарий к примеру на этом форуме нужно создать пользователя, категорию, тему и комментарий.

В репозитории сделать метод создания тестового комментария наверное нельзя, поскольку DI я думаю не сработает. Придется делать отдельный слой (service) и в нем создавать тестовые данные. Еще есть вариант сделать фабрику тестовых данных. Но в этом всем есть проблема что постоянно при добавлении новых полей в БД тесты будут рушатся. По этому мне и интересно кто и как добавляет тестовые данные.

И чего в том же хибернете например не сделать чтобы анотациями в сущности указываешь шаблон для генерации и данные сами бы генерировались. Может что-то подобное есть и я не знаю просто об этом.
...
Рейтинг: 0 / 0
12.08.2015, 08:00
    #39027548
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
z3r9,
Ты не путай unit тестирование и другие виды.
Комплексное тестирование вообще снаружи java идет.
При unit ты тестируешь кусок кода. А не БЛ.
У тебя наверно там просто ты один программист на все случаи в жизни.
...
Рейтинг: 0 / 0
12.08.2015, 11:12
    #39027644
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
Petro123, все равно ведь стоит вопрос добавления тестовых данных. Чтобы протестировать обновление комментариев то нужно сначала все эти каскады данных добавить.
...
Рейтинг: 0 / 0
12.08.2015, 11:23
    #39027658
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
z3r9Чтобы протестировать обновление комментариев
давай конкретно.
- на чём тестить?
- какой код для тестов?
- тебе Atum1 дал ссылку - разобрал?
- твоя девелопер БД на твоей машине? В сети? Права на неё какие? Админские?
ЗЫ.
Ввод коммента на sql_ru это insert в одну таблу IMHO. Какой каскад?
...
Рейтинг: 0 / 0
12.08.2015, 11:28
    #39027662
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
z3r9,
про теорию.
Какой именно тест тебе нужен? Т.к. тест выше модульного тут всего раз-два в году тема проскакивает.
...
Рейтинг: 0 / 0
12.08.2015, 17:40
    #39028083
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
автор- твоя девелопер БД на твоей машине? В сети? Права на неё какие? Админские?
На моей машине с правами администратора.

автор- на чём тестить?
Я TestNG + Махито использую.

автор- какой код для тестов?
Берем с БД записи с датой обновления более N дней.
Проверяем через интернет значение (Махитой эмулирую).
Добавляем обновленное значение в БД и меняем дату.

автортебе Atum1 дал ссылку - разобрал?
Смотрел. Решение очень простое но если добавить ячейку в БД то тесты посыпятся.

авторВвод коммента на sql_ru это insert в одну таблу IMHO. Какой каскад?
Ну это потому что есть пользователь, раздел, тема. Но ты ведь когда будешь добавлять данные не факт что это будет, и нужно весь каскад данных добавлять.
...
Рейтинг: 0 / 0
12.08.2015, 17:55
    #39028093
z3r9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
авторКакой именно тест тебе нужен? Т.к. тест выше модульного тут всего раз-два в году тема проскакивает.
Это больше похоже на модульный тест чем на интеграционный поскольку я махитой эмулирую работу другого модуля и остается обработка значений БД в цикле.
...
Рейтинг: 0 / 0
12.08.2015, 18:56
    #39028127
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
автор не факт что это будет, и нужно весь каскад данных
@BeforeSuite?
...
Рейтинг: 0 / 0
12.08.2015, 19:06
    #39028132
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
Перед unit тестом или любым другим должно быть создано окружение...вплоть до локали.
Методов валом:
- из кода @xxxx на java
- вне java ссылка выше
- батник/скрипт и дамп @impdb zzzzz
...
Рейтинг: 0 / 0
12.08.2015, 19:58
    #39028141
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
z3r9, посмотри в сторону Liquibase
...
Рейтинг: 0 / 0
12.08.2015, 20:48
    #39028164
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация или добавление тестовых данных
z3r9,
http://jailer.sourceforge.net/
только не затягивай тесты дольше разработки))
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Генерация или добавление тестовых данных / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]