
Shoo
21.02.2017
12:27:58
но почему тогда рспек
Ещё раз. БДД есть на уровне юнитов. Потому что это документация кода. Именно фактической его работы.
Помогает при ревью и входе в проект.
Ну, и просто потому, что разработчики выбрали комфортный им инструмент и решили юзать.
Колются но жрут.
На уровне функциональных тестов bdd нет, bdd оберток тоже нет.
Просто потому, что там и не надо.

Nikita
21.02.2017
12:28:51
интересно)

Google

Nikita
21.02.2017
12:29:16
а что, по тдд реально удобно работать?
на более-менее сложных задачах?

Shoo
21.02.2017
12:30:22
Ну, у нас биллинг, процессинг и вот это всё. Им норм. :)

Nikita
21.02.2017
12:33:28
это понятно) но все равно непонятно, почему bdd абстракция на низком уровне есть, а на высоком ее быть не может
у вас разработчики разве код читать не умеют?)

Shoo
21.02.2017
12:35:46
Проблемов с чтением тестов на капибаре у них, AFAIK, не возникает. :)

Ivan
21.02.2017
12:40:32
в общем, я не хочу говорить об абстракции более. слишком абстрактное понятие

Nikita
21.02.2017
12:42:42
хоть ты и не мне реплаил
то есть от факта группировки у тебя паттерна реализованного не появляется

Shoo
21.02.2017
12:46:57

Slow
21.02.2017
12:47:35
PageObject? А что с ним не так?)

Google

Shoo
21.02.2017
12:47:55
Тут люди БДД с ПейджОбжектом сравнивают.

Ivan
21.02.2017
12:48:01
да тут спор, добавляет PageObject абстракции или нет

Nikita
21.02.2017
12:48:27

Ivan
21.02.2017
12:48:31
и в рамках этого сравниваем BDD vs PageObject - кто больше абстракции и необходимой поддержки
но если ты вынес локаторы из тестов в другой файл - это абстракция
если ты вынес ещё и методы по работе с этими локаторами в ещё один файл - то это ещё один уровень и так далее, или я не прав?

Slow
21.02.2017
12:49:25
PageObject , это вы в каком средстве с ним работаете?

Nikita
21.02.2017
12:49:30
ну так то ты можешь навернуть пейдж обджект в BDD, так что у тебя там будет комбобрейкер

Shoo
21.02.2017
12:49:43
что для тебя уровни взаимодействия с объектами? желательно с примером
Окей, взаимодействовать с элементом напрямую через вебдрайвер - это один уровень взаимодействия.
Взаимодействовать с ним через селениум, который внутри себя дергает вебдрайвер - это другой уровень.
Взаимодействовать через Селениду, которая включает первые два, это третий уровень.

Nikita
21.02.2017
12:50:18
тогда каким образом БДД это дополнительный уровень абстракции? в питоне все реализации БДД это просто декораторы над функциями

Ivan
21.02.2017
12:50:24
ну это один уровень абстракции, я согласен. но на него ты не повлияешь.

Shoo
21.02.2017
12:50:51
Йеп. И вот эти декораторы, между твоей логикой теста, и тем что делается под капотом - это ещё одна обвязка.

Nikita
21.02.2017
12:50:53
у тебя вместо бдд может быть питест/юниттест/что угодно

Shoo
21.02.2017
12:52:04
Т.е. так у тебя есть:
логика теста -> методы тестового фрейморка -> вебдрайвер.
В случае бдд у тебя есть:
логика теста -> логика псевдонатурального языка -> методы тестового фреймворка -> вебдрайвер.
thats it.

Dmitry
21.02.2017
12:52:47
товарищи, нужна помощь тех, кто ловит логи с андроид устройств через андроид студию, почему могут не отображаться отдельные процессы в студии с физического устройства? просто сыпят все логи с устройства

Shoo
21.02.2017
12:53:16

Nikita
21.02.2017
12:53:18
не вижу проблемы) они очень дешево стоят и дают читаемость и натуральность теста. тебе не нужно их мейнтейнить, потому что это просто текст декоратора

Shoo
21.02.2017
12:53:30

Nikita
21.02.2017
12:53:31
а вообще мне всегда забавно что те, кто говорит что уровень абстракции лишний, забывают, что в джаве без 100500 классов не написать хеллоуворлд

Shoo
21.02.2017
12:53:40
И если что-то идет не так - тебе надо это дебажить.

Google

Nikita
21.02.2017
12:53:41
и типо все норм и никто не жалуется)

Shoo
21.02.2017
12:54:18
Ага, или криво написанный декоратор для этого метода.

Nikita
21.02.2017
12:54:34

Polina
21.02.2017
12:55:13

Shoo
21.02.2017
12:55:22
Всмысле "что ещё?"
Я уже описал, у тебя, по сути, есть цепочка из 4 уровней взаимодействия.
На каждом уровне взаимодействия что-то может пойти не так.

Nikita
21.02.2017
12:55:42
а что еще может пойти не так с декоратором самим?

Shoo
21.02.2017
12:55:55
Да, и чем таких больше - тем больше надо дебажить.

Polina
21.02.2017
12:55:57
Большинство людей, которые активно выступают за бдд, сами не пользовались такими инструментами. Ну или пользовались, но писали только код на этом псевдоязыке

Nikita
21.02.2017
12:56:37

Shoo
21.02.2017
12:57:40
А профит довольно сомнителен при этом.

Dmitry
21.02.2017
12:58:16

Nikita
21.02.2017
12:59:09

Shoo
21.02.2017
12:59:17
Думаю если вы правда в это верите, то дискуссию можно закрыть.

Nikita
21.02.2017
13:00:04

Google

Polina
21.02.2017
13:00:10

Shoo
21.02.2017
13:00:11
А я встречал.

Dmitry
21.02.2017
13:00:19

Nikita
21.02.2017
13:01:31
А я встречал.
тогда давайте закроем тему, ваша мысль понятна и не лишена здравого смысла
я встречал баги в кор либе в питоне, что ж теперь, мне на С переходить? :) (отредачено, в питоне пока не находил)

Polina
21.02.2017
13:02:59
Ну то есть тест проверяет что-то типа "в такое-то поле вводим такое-то значение, нажимаем на кнопку, -> на странице в таком-то поле выводится такое-то другое значение"?

Dmitry
21.02.2017
13:02:59

Nikita
21.02.2017
13:03:59

Admin
ERROR: S client not available

Shoo
21.02.2017
13:05:49

Nikita
21.02.2017
13:07:02
ну может когда-нибудь у вас получится их приготовить так, чтобы оно было расширяемо, и вы измените мнение)
у меня есть 2 позитивных опыта внедрения из двух) xUnit в рамках питеста тоже не могу назвать плохим)

Shoo
21.02.2017
13:32:50
Примерно как интерпритатор питона.

Nikita
21.02.2017
13:41:44
скорее как непонимание, каких задач нельзя решить из-за нерасширяемости фреймворков

Shoo
21.02.2017
13:50:55
Ну, выше был пример с селениумом. Перехватить request\response, дополнить body нужным контентом, прокинуть дальше на клиент.
Но это всё детали. Рассчитывать, что вы не упретесь в ограничения фреймворка - довольно самонадеянное занятие.
У них цель - сделать базовые вещи, ваша цель - сделать вполне конкретные.

Nikita
21.02.2017
13:53:46
вы в любом случае используете какой-то фреймворк. юниттест, джангораннер, что угодно – вы не запускаете голые тесты в вакууме
кстати, как решили такую задачу с перехватом request/response? проксей какой-то?)

Shoo
21.02.2017
13:58:08

Google

Shoo
21.02.2017
13:58:29
Благо там это был довольно изолированный кусок тестов, где этот костыль мог жить и не мешать остальным.

Nikita
21.02.2017
13:58:37
а зачем вообще так делать?
то есть какая реальная задача, что надо именно на уровне селениума править ответ?

Andrey
21.02.2017
14:00:49

Nikita
21.02.2017
14:02:04

Shoo
21.02.2017
14:02:36
Можно.

Andrey
21.02.2017
14:02:42
В тесте можно сказать какой мок использовать
Самообеспечение опять же
не все бекенды доступны для внесения изменений в них

Ivan
21.02.2017
14:04:43
а чего бы не замокать со стороны фронта? Аля конфижек, который говорит, что на тестовой штуке не стучить в 3дПарти, а бери данные вот здесь и забудь, что он есть.

Nikita
21.02.2017
14:04:57
она тебе всегда отдаст определенный ответ. или в зависимости от запроса ответ, или в зависимости от урла ответ)
ну просто мне кажется, что тюнить селениум для этих целей более оверхедно, нет? в конце концов есть hoverfly

Andrey
21.02.2017
14:06:16

Shoo
21.02.2017
14:07:02
Мокать хорошо работает когда тебе нужно получить полностью искусственный респонз
Когда тебе надо модифицировать только конкретный кусок - неочень

Ivan
21.02.2017
14:07:34
ну так замокайте все внешние на всех сразу, мы же один раз настраиваете тестовый контур.
или это "ни в жизнь не обращусь за помощью к этим надменным разработчикам?"))

Andrey
21.02.2017
14:07:56

Ivan
21.02.2017
14:08:47
костылями и подпорками :)

Andrey
21.02.2017
14:10:04
костылями и подпорками :)
https://github.com/oesmith/puffing-billy
https://github.com/vcr/vcr
неплохие репы то, для костылей и подпорок

Ivan
21.02.2017
14:10:34
ну так, не первый раз ведь задаются такой целью.