КР
Тоже нет :)
> Андрей достаточно подробно описал настоящие, скрытые, проблемы процессов и некоторые методы их решения.
А почему это "проблемы процессов"? Больше похоже на проблемы людей.
> С другой стороны, некоторые он обошёл стороной, когда, к примеру, не поделился опытом или рекомендациями, как внедрить бдд правильно, раз это хорошая идея
Прежде чем что-то внедрять, стоит подумать какую проблему оно (может?) решить, и стоит ли оно того.
Общие мотивы доклада я выделяю не в "процессах", а в отношениях между людьми, идеях людей, и "оверинжиниринге". Стараются сделать сложнее/затратнее там где можно проще.
БДД это тоже затраты и повышение сложности. А нужно ли, в каком-то конкретном случае, оно вообще?
Я смотрел в этом году несколько презентаций Антона Семенченко + Николая Алименкова, -- по теме автопроверок и ООП. (По БДД ещё старенький доклад Андрея Дзыни)
Одна из основных мыслей докладов, перефразируя: разные подходы, в том числе и ООП и паттерны, применяются для заворачивания сложности и решения проблем.
Если у вас нет сложности или не надо решать проблемы, то и наворачивать никаких решений не надо.
Не ломалось — не чини, нет проблем — не решай.
А ещё, опять таки на COMAQA Minsk 2019 посетил доклад Александра Пушкарёва:
____
Test club: If you need a framework - you do it wrong
15:20 - 16:00
В тест автоматизации, мы все любим продвинутые фишки: Page Object, Visual Testing, Model-based testing, машинное обучение и даже искусственный интеллект. Но что, если мы все поняли не так, и попросту нарушаем принцип KISS?
⠀ Добро пожаловать в Тест-минималистический клуб.
⠀ Первое правило клуба - если вы создаете сложное решение тест автоматизации - вы что-то делаете не так.
____
Надо ещё сказать что "по классике" (по крайней мере если мне не изменяет память) Солнцев насчёт "поведений" не совсем прав. В классическом переводном изводе ООП говорилось об "отправке сообщения объектам", но никак не фиксации их поведения. Реализация через классы-объекты поведения -- это уже ближе к паттернам, причём не только лишь всем.
> По поводу паттерна Page Object и его реализации согласен, но в том числе возникает вопрос, а нужен ли он как концепция, именно в отношении страницы, а не, скажем, целиком веб-приложения.
> ... список локаторов объявляется единый для всего сайта/веб-приложения, поддерживается в одном месте и доступен всем тестам.
Тут полагается интересный вопрос о том какие проблемы мы решаем, с какими сложностями боремся, достаточно ли одного объекта для расфасовки нашей текущей сложности. Что если у нас на сайте сотни сущностей с разными локаторами и действиями?
> Есть иной вариант работы со страницей, и в нём BDD подход полезен -
Вопрос упаковки локаторов как бы не имеет никакого особого отношения к БДД, и вообще от Солнцева и Дзыни и Семенченко я скажу что БДД это подход фиксации определённых сценариев того ЧТО должно делать приложение (запечатляемая коммуникация, так сказать), а КАК оно будет записанные действия реализовывать — БДД не решает.
> Дальше в рамках хорошо работающего bdd подхода накапливается набор операций, если говорить термином из доклада, "поведений", которые можно выполнить где угодно и реализация которых не зависит от местонахождения.
Предположение о "накоплении" нахожу крайне спорным. В статьях о реализации в Альфа-Банке и Тинькоффе они наоборот, хотели сузить возможность выбора "поведений" (по факту возможных действий после других возможных действий).
> мы просто в сценарии знаем где мы находимся, читая описание сценария и выполняем действия, которые хотим. В таком случае, тесты накапливают информацию о продукте, а не скрывают её.
Как-то не понял этого тезиса. Запись сценария да, может быть описанием с информацией о продукте. А у проверочного сценария не та задача.
> потихоньку зеленеющий тест
"потихоньку зеленеющий?" :)
С финальной мыслью про грабли и пейджобжект согласен полностью, потому и предложил возможное "промежуточное" решение в виде единого списка локаторов, на моём опыте проектам бывает его достаточно для получения выгоды от централизованного хранения, чтобы менять всё в одном месте для всех тестов, и при этом не усложнять систему выше необходимого и не замедлять выполнение генерацией кучи объектов с дублированием. Очевидно, оно не всегда и всем подходит, но может пригодится кому-нибудь.