Comments 26
loginPage.loginField.enterText('login');
loginPage.passwordField.enterText('password');
loginPage.loginButton.click();
Проблема здесь в том, что, если процедура логина поменяется, то править нужно будет большое количество тестов. С этим нам и помагает бдд:
loginService.login('login', 'password');
Реализацией метода логин как раз и будет весь предыдущий код. Теперь изменения будут только в одном месте. Геркин тут не обязателен (а в моём мире ещё и нежелателен) ровно как и писать такие тесты до реализации кода, за что отвечает TDD подход. Миксовать их необязательно (но в моём мире желательно), т.к. они в принципе решают разные независимые друг от друга проблемы.
PS Я не утверждаю, что автоар не прав, но буду рад подискутировать, ибо в споре рождается истина.
И я не спорю, что научить можно кого угодно и чему угодно, весь вопрос в сроках и целесообразности.
По поводу сложности: действительно есть сложность в том случае, если аналитик не знает каким глоссарием оперировать. Если система разработки не подсказывает или не подсказывает утилита в которой есть список этих фраз, то шаги будут записаны в произвольной форме, и их нужно будет корректировать, но все же проще подкорректировать одну точку входа, чем синхронизировать тестовую документацию, описание требований и автотест.
Суть BDD как раз в том, что бы точка входа была одна, т.е. что бы требования соответствовали тому, как будет тестироваться. В вашем же случае возникат вопрос, документация требований, тестовая документация у вас ведется отдельно? И сами тесты никто не смотрит, кроме службы QA? Описанный Вами пример больше соответствует TDD, хотя упомянули то, что не пишете тест до разработки, получается TLD. Написание тестов на фреймворке jUnit с поведенческой точки зрения это логично, у нас тоже использовалось раньше и используется сейчас, но там нет связи с материалом, который поймет заказчик. Если взять частный случай, на примере нашей компании, то для обхода этой ситуации у нас есть решение. Для того что бы связать jUnit и читаемое любым человеком языком описание есть инструмент QA Lens, который мапит jUnit тесты на документацию.
Скажите, пожалуйста, если не серет, почему нежелательно писать текстовое описание, который поймет не технический специалист? И какой фреймворк использовался?
Единая точка входа — это, конечно хорошо, но только тогда когда тест кейсы написанные мануальщиком автоматически становятся авто тестами. Если их всё равно надо переписывать в авто тесты, то смысл пропадает. А именно так и происходит в 100% случаев, про которые я слышал и видел сам.
А сам кукмбер — это лишний слой абстракции, который накладывает значительные ограничания на архитектуру, которые надо как-то извращённо-костыльно решать.
По поводу костыелей при имплементации: это проблема. Контролы могут быть разные, технологи разные. Но мы как раз и упомянули в статье о проблемах реализации BDD, в некоторой степени нам помогла библиотека Masquerade, в некотрой степени изменение процесса.
Если стабильные степы (шаги) падают, то тут уже полет фантазии, если это связано с особенностью работы с новым функционалом, то возможно придется плодить несколько вариантов практически одного и того же, либо усложнять текущий.
выглядит так, как будьто программист на человеческом языке получил шаги, что надо сделать, и только перевел это в код
причем большая часть работы сделана уже до него
Ильдар, я не разбираюсь во фреймворке CUBA. Что изменится в ваших тезисах, если не использовать его, обходясь стандартными подходами и фреймворками?
Если я правильно понял вопрос - "что будет, если не использовать фреймворк masquerade, и пользоваться selenium для автоматизации CUBA проектов (или вообще)?", то ответ - суть не изменится, просто на разработку и поддержание тестов нужно будет закладывать больше времени, что имеет свои последствия - бюджет и целесообразность. Можно использовать BDD и на чистом Selenium без всяких селенидов и других библиотек, но без упрощения разработки и поддержки тестов все эти начинания часто теряют смысл.
Это называется "Открытие Америки" или "Изобретение велосипеда"
Статье больше двух лет. И - да - каждый из нас открывает для себя новые технологии и методики.
К примеру, на GitHub тысячи TIL-репозиториев (Today I Learned).
Поделитесь опытом - что открылось за пару лет? Или покажите TIL, которые не кажутся велосипедом.
Опыт использования BDD