@spbpython

Страница 306 из 785
Aleksandr
01.03.2017
16:02:19
Я не транслитирировал с русского языка

GNU/Docker
01.03.2017
16:02:27
еще раз. функциональные тесты, интеграционные, но не юнит.
Ещё раз. Юниттесту нужен стейт. И ты либо мокаешь код и базу, либо у тебя реальная база. Чем тест становится не юнит от этого?

Aleksandr
01.03.2017
16:02:42
Юни-тест изолирован

И у него нет сайд эффектов.

Google
GNU/Docker
01.03.2017
16:03:11
Ну, база чистится между кейсами.

Aleksandr
01.03.2017
16:03:15
f(x) -> y.

Serge
01.03.2017
16:03:18
Nikolay
01.03.2017
16:03:32
Я не транслитирировал с русского языка
с любого языка, где есть буква х :)

Serge
01.03.2017
16:03:43
Класс. Это в фп.
там нет внешних вызовов

Aleksandr
01.03.2017
16:04:00
Ну просто в ФП можно все легко заюниттестить

ПОтому что нет сайдэффектов и все про дай функции аргумент, получи резалт

GNU/Docker
01.03.2017
16:04:23
Если нет сайд эффектов то да.

Aleksandr
01.03.2017
16:04:39
Без этого юнит-тест уже не юнит-тест

Serge
01.03.2017
16:04:39
максимум, что может быть - это состояние инстанса, у которого ты вызываешь метод. но в питоне, это такой же явный вход для метода

GNU/Docker
01.03.2017
16:04:44
но облако это сплошной сайд эффект(

Google
Aleksandr
01.03.2017
16:05:21
Ну так признайся, что пишешь системные/функциональные тесты и живи спокойно )

GNU/Docker
01.03.2017
16:05:29
У него есть сети, девайсы, волюмы.

Ну лан

Serge
01.03.2017
16:06:10
У него есть сети, девайсы, волюмы.
и что? это некий вход. вот этот объект - это входные данные.

GNU/Docker
01.03.2017
16:06:47
Это буквоёбство уже.

Serge
01.03.2017
16:06:48
вход, внешние вызовы, выход. замокал вызовы - получил юниттест;)

Ну лан
вот и молодец:)

GNU/Docker
01.03.2017
16:07:05
У нас есть функциональные тесты и они ходят в облако по API.

Это уже другое)

Nikolay
01.03.2017
16:07:31
Serge
01.03.2017
16:07:32
У нас есть функциональные тесты и они ходят в облако по API.
это интеграционные и эксплуатационные

Nikolay
01.03.2017
16:07:34
это интеграционные тесты

GNU/Docker
01.03.2017
16:08:00
Чего это?

Serge
01.03.2017
16:08:05
Это буквоёбство уже.
нет. важно понимать что ты делаешь, тогда легче понять зачем и как извлечь из этого пользу.

GNU/Docker
01.03.2017
16:08:20
Боюсь это не поможет тебе ничем.

Serge
01.03.2017
16:08:21
Чего это?
ну так исторически сложилось:)

GNU/Docker
01.03.2017
16:08:44
То тест который ходит в сервис по апи это не функциональный тест?

Nikolay
01.03.2017
16:08:45
Чего это?
взаимодействие с внешним компонентом тестируется потому что

Google
Nikolay
01.03.2017
16:09:00
если апи не реальный и замоканный - тогда да

GNU/Docker
01.03.2017
16:09:10
Nikolay
01.03.2017
16:09:19
Aleksandr
01.03.2017
16:09:23
Которые не имеет взаимодействия с внешними системами?

Т.е. неИНТЕГРИРУЕТСЯ :)

GNU/Docker
01.03.2017
16:09:36
Какими внешними системами

есть облако, чёрный ящик.

Aleksandr
01.03.2017
16:09:46
Облако твое епт )

Nikolay
01.03.2017
16:09:47
Какими внешними системами
api - это внешняя система

Aleksandr
01.03.2017
16:10:53
Хотя справедливости ради, функция логин, которая ходит во внешний авторизационный сервис несет функционал “авторизация”, который хотелось бы протестить. Значит тестируя функцию логин мы делаем функциональный тест )

Лишь пасконное знание о том, что внутри эта функция идет куда-то в какой-то API делает тест интеграционным? ?

Aleksandr
01.03.2017
16:12:12
Тогда это фуонкциональный? Я не понял :)

Serge
01.03.2017
16:12:27
Тогда это фуонкциональный? Я не понял :)
то что я написал делает интеграционный функциональным

Nikolay
01.03.2017
16:12:31
Aleksandr
01.03.2017
16:12:33
Т.е. если я подниму у себя амазон - мой код, который создает инстансы, станет функционльным

И похер что он ходит во внешний API ? :)

Google
Aleksandr
01.03.2017
16:12:52
Значит определение “интеграционный если ходит во внешний мир” неточно

Nikolay
01.03.2017
16:12:57
который может вообще ничего не делать

Aleksandr
01.03.2017
16:12:59
А, это другая история

Serge
01.03.2017
16:13:08
Aleksandr
01.03.2017
16:13:33
Тогда значит если я подниму контролируемо полноценный амазон запуская тест — он станет функциональным :)

Admin
ERROR: S client not available

Serge
01.03.2017
16:13:58
Тогда значит если я подниму контролируемо полноценный амазон запуская тест — он станет функциональным :)
если ты будешь выставлять состояние твоего амазона перед каждым тестом - да

Aleksandr
01.03.2017
16:14:01
Иначе любой тест вокруг кода использующий БД является интеграционным ...

Nikolay
01.03.2017
16:14:14
но если тебе для одного теста нужен весь спектр амазона - это херово написанный тест)

Aleksandr
01.03.2017
16:14:15
Ну ок, fair enough :)

Serge
01.03.2017
16:14:33
Иначе любой тест вокруг кода использующий БД является интеграционным ...
ну вот, имея подготовленную фикстурами для теста БД, ты делаешь функциональный тест

Aleksandr
01.03.2017
16:14:37
Вроде пронесло на этот раз

Nikolay
01.03.2017
16:15:03
ну вот, имея подготовленную фикстурами для теста БД, ты делаешь функциональный тест
не совсем, там есть еще варианты поймать дедлоки в транзакциях и прочую пургу

на уровне базы

Google
Nikolay
01.03.2017
16:15:37
а функциональные тесты должны функциональность сервиса, а не базы, тестировать

Serge
01.03.2017
16:15:41
не совсем, там есть еще варианты поймать дедлоки в транзакциях и прочую пургу
и зафейлить тест. этой базой должен пользоваться только ты. в смысле только конкретный тестран

а функциональные тесты должны функциональность сервиса, а не базы, тестировать
ну типа да, т.е., вообще говоря, им тоже надо очень аккуратно подсовывать всё, и кое-что можно и мокать. это уже вопрос изоляции теста. главное, что у тебя серый ящик - ты знаешь про API приложения в общем, а не на уровне классов и методов.

понятие функционального теста больше связано с QA уже, а не с разработкой, тогда как юниты - это чисто качество конкретного кода

Andrey
01.03.2017
16:53:04
и зафейлить тест. этой базой должен пользоваться только ты. в смысле только конкретный тестран
я как-то так рэйс обнаружил. именно потому что одновременный запуск тестов падал

Serge
01.03.2017
16:55:02
я как-то так рэйс обнаружил. именно потому что одновременный запуск тестов падал
ну, одно другому не мешает;) ты же понимаешь, для начала надо юнит-тестами исключить логические и прочие ошибки в коде.

Andrey
01.03.2017
16:56:24
Serge
01.03.2017
16:59:57
я скорее за то, чтобы тест максимально возможный спектр ошибок покрывал
это сложно запускать, обычно. надо от простого к сложному идти. я знаю этот подход, типа тестировщик же проверил, что аутентификация работает, на фига еще юниты на модуль аутентификации писать. успешная аутентификация и проверка на запрет входа по плохому паролю все же покрывают уже

большой тест неудобно, потому что через пару месяцев уже сложно понять почему конкретно этот тест упал и надо заново копать

Serge
01.03.2017
17:01:35
если бы упало пару юнитов, сразу всё ясно бы было

я скорее к тому, что нет смысла прикладывать дополнительные усилия к тому, чтобы на какой-то класс ошибок тест не реагировал
это правда, но частично мокать надо не для защиты от других ошибок, а чтобы не поднимать весь зоопарк, ради этого теста, например.

ну и для изоляции от других стори - тоже полезно.

ну т.е. это же всё про изоляцию на разных уровнях с постепенным уменьшением изоляции и увеличением интегрированности в остальные компоненты

Andrey
01.03.2017
17:03:42
ну и для изоляции от других стори - тоже полезно.
ну вот с рейсом у меня так было, что были два теста на один модуль, которые по отдельности прекрасно работали, а вместе падали. если бы там моки базы были отдельные, рейс бы не нашелся

Serge
01.03.2017
17:05:20
ну вот с рейсом у меня так было, что были два теста на один модуль, которые по отдельности прекрасно работали, а вместе падали. если бы там моки базы были отдельные, рейс бы не нашелся
а если бы там был тест на паралелльное исполеннения разных наборов действий, то было бы четко понятно всё:) и при этом была бы уверенность, что дело не в коде отдельных компонентов, ну ты же понимаешь о чем я

Andrey
01.03.2017
17:08:18
а если бы там был тест на паралелльное исполеннения разных наборов действий, то было бы четко понятно всё:) и при этом была бы уверенность, что дело не в коде отдельных компонентов, ну ты же понимаешь о чем я
поскольку тот, кто тот модуль писал, и не подумал, что там кто-то может кого-то другого затереть, то и теста на параллельность там не было. а если бы мысль такая была, то и баг сразу при написании был бы пофикшен.

т.е. тут тебе повезло найти, а могло и не повезти
все так, повезло. я до того видел, как чувак, который там был до меня просто списал такое поведение теста на какие-то флуктуации и забил

Aleksandr
01.03.2017
17:24:58
Т.е. сразу хардкор

Страница 306 из 785