Отличный доклад!
Совершенно замечательный.
Но не без лукавства, когда за "провокационными" заголовками стоит описание другой проблемы. Мне кажется он будет очень полезен тем, кто из исполнителя конкретных задач тестирования хочет перейти к рациональной организации процесса тестирования, даже не обязательно автоматизированного.
Андрей достаточно подробно описал настоящие, скрытые, проблемы процессов и некоторые методы их решения.
С другой стороны, некоторые он обошёл стороной, когда, к примеру, не поделился опытом или рекомендациями, как внедрить бдд правильно, раз это хорошая идея, а только порекомендовал не внедрять его неправильно и "для галочки". Хотя это конечно тоже экономит ресурсы, вместо затрат их впустую на бурную деятельность.
По поводу паттерна Page Object и его реализации согласен, но в том числе возникает вопрос, а нужен ли он как концепция, именно в отношении страницы, а не, скажем, целиком веб-приложения.
Видел реализации этого паттерна, в которых совершенно одинаковая кнопка "далее" и её аналоги типа "войти" для каждой страницы сайта в объекте этой страницы описывались заново. Само название слегка подталкивает людей к таким решениям, тоже по сути создавая проблему процесса.
Есть иной вариант работы со страницей, и в нём BDD подход полезен - список локаторов объявляется единый для всего сайта/веб-приложения, поддерживается в одном месте и доступен всем тестам. Таким образом получаем заявленную простоту поддержки "меняем локатор один раз" и уменьшаем дублирование при этом.
Ограничение - осмысленное, понятное участникам процесса название элементов, чтобы тесты были не write and forget, а читабельные, причём не только автором. Построение такого процесса тестирования ощутимо затратно, и не всегда оправдано, например, если проект предстоит небольшой.
Дальше в рамках хорошо работающего bdd подхода накапливается набор операций, если говорить термином из доклада, "поведений", которые можно выполнить где угодно и реализация которых не зависит от местонахождения. Не требуется инициализация объектов страниц, если мы не работает с объектами, мы просто в сценарии знаем где мы находимся, читая описание сценария и выполняем действия, которые хотим. В таком случае, тесты накапливают информацию о продукте, а не скрывают её.
Но подход требует реального взаимодействия команды из разных ролей, а не сидящих порознь отделов разработки/аналитики/тестирования/бизнеса, о чём как раз говорил Андрей.
Так же - использования TDD разработчиками, тогда у них появляется мотивация помогать тестированию, а взамен - потихоньку зеленеющий тест, который помогает им самим в разработке и рефакторинге. Разумеется всё это в рамках "пирамиды тестирования".
По других поводу технических моментов Андрей очень хорошо рассказал, имел удовольствие пользоваться селенидом, среди java инструментов он показался мне наилучшим вариантом для работы без бойлерплейта.
Но у меня всегда есть вопрос: зачем на проекте автотестов выбирать java?
Это же "энтерпрайзный" язык, полный этого самого бойлерплейта на все случаи жизни, для тестовых сценариев, которые по самой своей сути должны быть конечны и детерминированы.
Банальный python или любой другой более "легковесный" язык, на мой взгляд, для этих целей подходит куда лучше.
> Совершенно замечательный.
Тоже нет :)
> Андрей достаточно подробно описал настоящие, скрытые, проблемы процессов и некоторые методы их решения.
А почему это "проблемы процессов"? Больше похоже на проблемы людей.
> С другой стороны, некоторые он обошёл стороной, когда, к примеру, не поделился опытом или рекомендациями, как внедрить бдд правильно, раз это хорошая идея
Прежде чем что-то внедрять, стоит подумать какую проблему оно (может?) решить, и стоит ли оно того.
Общие мотивы доклада я выделяю не в "процессах", а в отношениях между людьми, идеях людей, и "оверинжиниринге". Стараются сделать сложнее/затратнее там где можно проще.
БДД это тоже затраты и повышение сложности. А нужно ли, в каком-то конкретном случае, оно вообще?
Я смотрел в этом году несколько презентаций Антона Семенченко + Николая Алименкова, -- по теме автопроверок и ООП. (По БДД ещё старенький доклад Андрея Дзыни)
Одна из основных мыслей докладов, перефразируя: разные подходы, в том числе и ООП и паттерны, применяются для заворачивания сложности и решения проблем.
Если у вас нет сложности или не надо решать проблемы, то и наворачивать никаких решений не надо.
Не ломалось — не чини, нет проблем — не решай.
А ещё, опять таки на 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 подхода накапливается набор операций, если говорить термином из доклада, "поведений", которые можно выполнить где угодно и реализация которых не зависит от местонахождения.
Предположение о "накоплении" нахожу крайне спорным. В статьях о реализации в Альфа-Банке и Тинькоффе они наоборот, хотели сузить возможность выбора "поведений" (по факту возможных действий после других возможных действий).
> мы просто в сценарии знаем где мы находимся, читая описание сценария и выполняем действия, которые хотим. В таком случае, тесты накапливают информацию о продукте, а не скрывают её.
Как-то не понял этого тезиса. Запись сценария да, может быть описанием с информацией о продукте. А у проверочного сценария не та задача.
> потихоньку зеленеющий тест
"потихоньку зеленеющий?" :)