@qa_ru

Страница 352 из 1080
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
это понятно) но все равно непонятно, почему bdd абстракция на низком уровне есть, а на высоком ее быть не может
Ну, просто потому, что решение об использовании технологий принимают разные люди. Плюс, вероятно, людям лень писать документацию и юниты, они решили таким образом решить две проблемы.

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

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

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 абстракции или нет

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
товарищи, нужна помощь тех, кто ловит логи с андроид устройств через андроид студию, почему могут не отображаться отдельные процессы в студии с физического устройства? просто сыпят все логи с устройства

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

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
Да, и чем таких больше - тем больше надо дебажить.
мне вот называли в качестве аргумента, что неудобно ходить по функциям в IDE, но спасибо что есть плагины

Shoo
21.02.2017
12:57:40
мне вот называли в качестве аргумента, что неудобно ходить по функциям в IDE, но спасибо что есть плагины
Дело не в неудобно. Дело в том, что надо тебе расширить этот фреймворк - ты не только пишешь свою функцию, ты ещё и пишешь декоратор для неё. Дело в том, что надо отдебажить почему валидный тест падает - ты дебажишь на один уровень больше.

А профит довольно сомнителен при этом.

Dmitry
21.02.2017
12:58:16
Для них выключено логирование, например.
как то оно отдельно по приложениям не включается

Nikita
21.02.2017
12:59:09
Дело не в неудобно. Дело в том, что надо тебе расширить этот фреймворк - ты не только пишешь свою функцию, ты ещё и пишешь декоратор для неё. Дело в том, что надо отдебажить почему валидный тест падает - ты дебажишь на один уровень больше.
если у тебя падает тест, у тебя в методе проблема, сам фреймворк тебе ничем не мешает и малину не портит. зато пользуясь сущностями шаг/сценарий/тест-сьют можно удобно рулить определенными вещами и управлять состояниями

Shoo
21.02.2017
12:59:17
как то оно отдельно по приложениям не включается
Ну, вообще на стороне приложения включается. Т.е. приложение может сказать "не логируй меня".

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

Google
Polina
21.02.2017
13:00:10
я пишу полный цикл на бдд и люблю бдд) и на небдд тоже пишу
А можете привести пример наиболее типичного у вас теста? Какие там шаги и что проверяется?

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

Dmitry
21.02.2017
13:00:19
Ну, вообще на стороне приложения включается. Т.е. приложение может сказать "не логируй меня".
ну на виртуальных машинах все логируется, а с физического ни один процесс выбрать нельзя http://i.imgur.com/cTAZfDA.jpg

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

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

я встречал баги в кор либе в питоне, что ж теперь, мне на С переходить? :) (отредачено, в питоне пока не находил)

Polina
21.02.2017
13:02: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
то есть какая реальная задача, что надо именно на уровне селениума править ответ?
изоляция апи от фронта. Полезно в случае кучи 3rd party сервисов в проекте. Более быстрые тесты фронта.

Nikita
21.02.2017
14:02:04
изоляция апи от фронта. Полезно в случае кучи 3rd party сервисов в проекте. Более быстрые тесты фронта.
так а селениум тут причем? почему нельзя отдавать фронту мокнутые ответы с бэка?

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
а чего бы не замокать со стороны фронта? Аля конфижек, который говорит, что на тестовой штуке не стучить в 3дПарти, а бери данные вот здесь и забудь, что он есть.
в случае когда в проекте больше одной репы фронтов публикуются - не удобно мокать все в разных местах. Самое место этому либо в стороннем сервисе либо в самих тестах

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
ну так, не первый раз ведь задаются такой целью.

Страница 352 из 1080