
Roman
19.06.2017
12:49:02
а по другому хз как сделать

Shoo
19.06.2017
12:50:02
А в коде приложения у вас тоже слипы стоят?

Pavel
19.06.2017
12:50:11

Roman
19.06.2017
12:51:12

Google

Roman
19.06.2017
12:52:42

Pavel
19.06.2017
12:55:17
Может так случиться что допустим тестовая реплика лагнет из-за каких-то космических лучей, тест упадет, вы будете думать что все пропало, а на самом деле это просто случайность.
Начнете искать ошибку в коде, потратите кучу времени.
А если есть набор тестов которые тестируют только бизнес-логику на максимально цельном стенде (без реплик и других сетевых сервисов), то вы будете уверены что сам код написан правильно, и уже тогда можно гнать тесты с примесью инфраструктуры.

Shoo
19.06.2017
12:58:35
потому что все понимают, что false negative падения - нормальная история.

Pavel
19.06.2017
12:59:39

Shoo
19.06.2017
13:00:28
У вас какое-то больное представление об SRP.

Pavel
19.06.2017
13:00:35
NO U

Shoo
19.06.2017
13:00:48
Там нет ничего про дублирующийся код, который проверяет одно и то же на разной инфраструктуре.
Это примерно как мейнтейнить отдельный набор тестов под каждый браузер.

Google

Pavel
19.06.2017
13:01:24
Там про то что тесты проверяющие бизнес логику не должны еще отвечать за косяки инфраструктуры.
А как это все мейтейнить - вопрос отдельный уже. Возможно стоит написать просто тест который тестирует запись любых искусственных данных с репликой. + добавить задержки искусственные.

Evgeniy
19.06.2017
13:07:46
у меня на тесте 2 аплликейшен экспресс ноды JS фреймворка
ставить их продакшн-лайк на 8 - нет никакого смысла
есть вещи, которые должны чекаться внутренними тестами

Shoo
19.06.2017
13:09:21

Pavel
19.06.2017
13:14:44
> Бизнес логика завязана на инфраструктуру.
Это утверждение - оно обобщенное или про что? Всегда завязана? При любых условиях? Или в нашем конкретном обсуждаемом примере? По другому быть не может? Гексагональная архитектура миф?

Nikita
19.06.2017
13:16:15
да, инфраструктура очень важна и тестировать лучше всего ближе к продакшн-инфраструктуре.

Pavel
19.06.2017
13:18:05
Вот у нас например инфраструктура в амазоне сидит и конечно мы не строим аналогичную тестовую. Это не наш уровень ответственности и сделать мы ничего не можем. Мы тестируем просто бизнес логику проектов на одной маленькой виртуалке.

Nikita
19.06.2017
13:19:39
это не всегда возможно и не всегда оправдано, но лучше

Pavel
19.06.2017
13:19:58
Согласен

Nikita
19.06.2017
13:20:29
потому что если у тебя дев инстансы сильно отличаются от прода, ты огребешь проблем, инфа сотка

Pavel
19.06.2017
13:20:31
Ну то есть утверждение странное: лучше, но не всегда :)

Evgeniy
19.06.2017
13:20:37
попытка "продакшн-лайк" тестировать абстракцию конфигурации сервера - значит ставить под сомнение труд других 3rd party сервисов.
согласен с Павлом

Pavel
19.06.2017
13:21:35
Ну тут все с какой-то своей колокольни правы.
Ну вот в моем случае вообще не вижу смысла строить тестовое окружение на 30ти инстансах и кучей всяких VPC правил маршрутизации и т.п. Это тогда надо еще парочку людей на фултайм брать.

Google

Nikita
19.06.2017
13:22:53
но иногда дешевле в проде поправить, чем все это накручивать и тестировать

Evgeniy
19.06.2017
13:24:28

Nikita
19.06.2017
13:25:13
нет

Evgeniy
19.06.2017
13:25:19
приди к продакту и скажи " мы хотим продакшн-лайк тестировать, дайте нам фьюжны, 1тб РАМ и 32ядерный процессор"

Nikita
19.06.2017
13:25:43
если у тебя железозависимые вещи – как еще?

Shoo
19.06.2017
13:29:30
Если ты можешь обосновать профиты от такого инстанса - выдадут.

Evgeniy
19.06.2017
13:30:06
бизнес не всегда может выделить сто тыщ баксов на сервер. когда разрабочтики могут сделать конфиг с менее жирными настройками
изначально вопрос был в том, что ты хочешь тестировать в тестовом контуре: как шардинг разработчики настроили?

Shoo
19.06.2017
13:31:50
Бизнес, продакшен инстанс которого стоит сто тыщ баксов, в 99.9% случаев может себе позволить ещё сто тыщ, если поймет зачем это надо.
Задача команды разработки понять, нужно ли это и если нужно - донести эту мысль, со всеми необходимыми аргументами.
The end.
Тестить на локальной макминьке работу сервиса, который на продакшене занимает половину сраного датацентра это то же самое, что проверять работспособность продукта юниттестами.

Evgeniy
19.06.2017
13:33:31

Filipp
19.06.2017
13:33:45

Shoo
19.06.2017
13:34:22
Не, погодите, посоны, там выше писали, что пофигу на чем проверять бизнес логику, потому что она от инфраструктуры не зависит.

Evgeniy
19.06.2017
13:34:42
просто это тут в чате категоричность, а когда нужно сервак выбить, Шу умеет стать елейным :D

Shoo
19.06.2017
13:35:05

Evgeniy
19.06.2017
13:35:06

Nikita
19.06.2017
13:35:24
продакшн лайк это класс эквивалентности, не больше и не меньше

Roman
19.06.2017
13:35:31
а нагрузочное тестирование, например, как делать если у вас нет денег на второй сервак прод лайк?

Google

Nikita
19.06.2017
13:35:32
никто не говорит что инстанс должен быть таким же

Roman
19.06.2017
13:36:00

Pavel
19.06.2017
13:36:57
Ну вот допустим запилил ты реплику на тестах. Тест у тебя в один момент упал. Ты запустил второй раз и он не упал. Что из этого следует? А ничего.

Nick
19.06.2017
13:36:57

Filipp
19.06.2017
13:37:18
Не, погодите, посоны, там выше писали, что пофигу на чем проверять бизнес логику, потому что она от инфраструктуры не зависит.
Если, например, размеры базы на деве и проде соответствуют разнице производительности, то можно вполне корректно проверить много что. Ну и наезд на юниттесты вообще зря, там, где они были, тестированию было лучше жить

Shoo
19.06.2017
13:37:27

Pavel
19.06.2017
13:38:15
На тестах нагрузка как правило намного меньше чем на проде, да и сами серваки тоньше, поэтому тестировать скорость работы репликации так себе идея.

Admin
ERROR: S client not available

Shoo
19.06.2017
13:38:19
Если, например, размеры базы на деве и проде соответствуют разнице производительности, то можно вполне корректно проверить много что. Ну и наезд на юниттесты вообще зря, там, где они были, тестированию было лучше жить
Если, например, объемы данных на деве и проде качественно отличаются, то это только вопрос времени когда вы будете поднимать продакшен со словами "ой, а на деве работало".

Nikita
19.06.2017
13:38:22

Roman
19.06.2017
13:38:46

Shoo
19.06.2017
13:39:31
Юниттесты отличная штука. Они проверяют, что код выполняется более-менее предсказуемо.
Они не говорят о работоспособности продукта примерно ничего, в этом проблема.

Pavel
19.06.2017
13:40:33
То есть прям ничего ничего? Может их тогда выкинуть?

Filipp
19.06.2017
13:40:35

Shoo
19.06.2017
13:40:53
Т.к. производительность - история не линейная и количество точек отказа тоже довольно велика.

Filipp
19.06.2017
13:41:44

Shoo
19.06.2017
13:42:56
То есть прям ничего ничего? Может их тогда выкинуть?
Я понимаю, что читать буковки сложно. Повторю ещё раз.
Юнит тесты проверяют работоспособность кода.
Работоспособность кода != работоспособности приложения.
Одно не заменяет другое, они используются в разных условиях и для разных целей.

Google

Pavel
19.06.2017
13:43:41
Сложно читать категоричные обобщенные утверждения и взаимоисключающие параграфы. А буковки норм.

Shoo
19.06.2017
13:44:04
Давай подробнее про взаимоисключащие параграфы, пожалуйста.
С пруфами там, и вот это всё.

Pavel
19.06.2017
13:44:48

Nikita
19.06.2017
13:44:55
нет, не следует)

Shoo
19.06.2017
13:45:00
Нет, не значит.

Evgeniy
19.06.2017
13:46:36
а что считает "работоспособен"? кривой билд программы который выпустили разработчики - принес деньги
при этом забили на красные "пока что" юниттесты
работоспособный ли он?

Shoo
19.06.2017
13:47:25
Если продукт выполняет бизнес-функцию -> работоспособен.

Evgeniy
19.06.2017
13:47:46
слишком много если. Юнит тест может быть написан на критическую ф-сть

Pavel
19.06.2017
13:48:07
We need to go deeper. Где критерии выполнения бизнес-функции? ?

Shoo
19.06.2017
13:49:56
Критическая функциональность довольно редко укладывается в пределы одного модуля, конечно, но ладно.
Проблема в том, что прохождение юнит-теста не дает никакой гарантии того, что продукт работает. Просто потому, что вряд ли пользователь будет взаимодействовать с критической функциональностью изнутри инстанса приложения, как это делает юнит тест.
В то время как падение этого теста будет означать, что _возможно_ он не работает.
Это не значит, что юнит тесты не нужны или не приносят пользы.
Юнит тесты это быстрый healthcheck приложения + пара дополнительных приятностей в процессе их написания и поддержки.
Их падение сигнализирует, что _возможно_ вы что-то сломали, но их прохождение категорически не говорит об обратном.

Pavel
19.06.2017
13:52:29
Ты лучше скажи, поднимать ему реплику на тестах или нит?

Shoo
19.06.2017
13:54:23
Я уже ответил выше.
Если есть высокий багрейт на уровне "локально работает, а продакшен в огне" - то имеет смысл об этом задуматься, оценить cost vs value и решить.
Если на текущий момент таких проблем нет - то поднимать реплику ради реплики так себе идея.

Pavel
19.06.2017
13:54:55
?

Nikita
19.06.2017
13:56:08
ну да, все верно. у меня так было – на деве все огонь, а каждый деплой в продакшен был тяжелым, потому что то пакет забыли, то миграцию, то неправильно перенастроен сервак.
когда вынесли тестирования деплоя в отдельную процедуру на полную копию прода – сразу стало не больно

Pavel
19.06.2017
14:40:23
Шайтаны, у нас из-за вас сейчас залагал прод.

Andrei
19.06.2017
14:44:02
проявились слабые места. Это же хорошо ?

Евгений
19.06.2017
15:05:11
А кто-то пробовал делать интеграцию Джиры, Зефира и Дженкинса для записи автотестов через Зефир и дальнейшей автоматической сборки и прогона?

Shoo
19.06.2017
15:06:25
Зефир как джироаддон или как отдельный инстанс?