Перейти к содержимому

Фотография

Хороший Gherkin как путь к хорошей автоматизации


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 baranceva

baranceva

    Профессионал

  • Admin
  • PipPipPipPipPipPip
  • 4 150 сообщений
  • ФИО:Баранцева Наталья


Отправлено 27 января 2020 - 07:21

Автор: Энджи Джонс (Angie Jones)
Оригинал статьи
Перевод: Ольга Алифанова

 

Разработка на основе поведения, также известная как BDD – это основанная на примерах методология для разработки ПО. Ключевой момент в BDD – это совместная деятельность Бизнеса, Разработки и Тестировщиков. Эти участники также известны как "Три товарища".

 

Начиная работу над новой фичей, три товарища собираются вместе и пишут примеры использования этой фичи. Обсуждая эти примеры, они приходят к общему пониманию того, как фича должна себя вести в различных сценариях.

 

Читать статью полностью...


  • 0
Наталья Баранцева
Тренинги по тестированию ПО

#2 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 27 января 2020 - 07:26

Пока еще ни разу не видел эффективно работающий BDD.

Коллеги, если вдруг кто-то смог у себя внедрить и это прям действительно помогло - поделитесь опытом.


  • 0

#3 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 27 января 2020 - 08:42

 

Пока еще ни разу не видел эффективно работающий BDD.

Коллеги, если вдруг кто-то смог у себя внедрить и это прям действительно помогло - поделитесь опытом.

да, так и есть

 

единственно возможный БДД это когда БДД используется прямо в коде, типа "create.client.with.name("Вася")"

 

остальное типа "Создать клиента с именем Вася" это полностью нерабочий вариант

 

а внедрить многие "смогли" и это будто им "помогло". Но если посчитать вкачанные ресурсы то это окажется полным провалом


  • 0

#4 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 29 января 2020 - 07:48

Я думаю, если бы это работало, то все бы на это перешли уже давно, а в реальности всё идёт ещё к большему разделению и отделению автоматизаторов.


  • 0

#5 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 29 января 2020 - 10:02

Это работает в тех случаях когда делается для достижения цели, а не потому что кто-то сказали что это хорошо.
Я видел доклад о большом и успешном внедрении не BDD, а keyword driven testing, что близко. И там все было логично и обоснованно

Я внедрял БДД на проект со сложной бизнес логикой и сложноподчиненными структурами данных. Это был прорыв уже в тот момент когда была написана только генерация тестовых данных.

+ был доклад про проект с БДД и что это мягкий вход в автоматизацию. Разумеется уже полностью готовый фреймворк. то есть на геркине писали "ручные" тестировщики. если они хотели, то у них была возможность спустится на уровень ниже и написать недостающий шаг, или еще ниже, написать недостающий метод.
И да, я был на проекте где БДД использовали для тестирования API, просто потому что так сказал заказчик и это был отстой. Но это не потому что БДД плох, а потому, что это не тот уровень тестирования.

БДД имеет свой оверхэд. Если писать на нем 1000 тестов, то вы получите этот оверхед в тысячекратном размере. Если вы за этот оверхед не решили никаких проблем то это не в БДД проблема.

 

ЗЫ: BDD здесь используется в смысле фреймворка а не процесса.


  • 0

#6 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 29 января 2020 - 11:24

вообще БДД и Геркин это разные вещи

 

БДД это может быть и "create.client.with.name("Вася")" и "Создать клиента с именем Вася"

а Геркин это только "Создать клиента с именем Вася"

 

большие проекты на БДД возможны и хороши, если используется нормальный Язык Программирования, чтобы строки выглядели типа "create.client.with.name("Вася")". Всё будет реально понятно даже ручным тестировщикам

 

но большие проекты на Геркине не рекомендуются даже создателями Кукумбера в их книге. Создатели рекомендуют использовать Кукумбер на Геркине ТОЛЬКО для приёмочного тестирования, где небольшое количество достаточно простых тестов

но вот про это ограничение все почему-то забывают(и даже те кто пытается протолкнуть Геркин, особенно стараются забыть) и пытаются создать большие проекты на Геркине, для которых он абсолютно не предназначен

 

а по факту получается, что если на Геркине можно создать только маленький проект без возможности расширения, то это сильно ограниченный фреймворк

 

если сравнить с фреймворком на нормальном ЯП, то инвестиции во фреймворк на Геркине больше в разы, из-за их "слоёного пирога", но нет расширяемости и есть ад с поддержкой и развитием тестовой инфраструктуры


  • 0

#7 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 29 января 2020 - 12:41

BDD не может быть "create.client.with.name("Вася")".
BDD - это Методология Разработки Через Описание Поведения Системы. В которой зафиксированное описание служит и постановкой задачи на разработку и тестовыми сценариями.
BDD возможно без автоматизации тестирования вообще.

А вот для автоматизации тестирования в BDD есть язык gherkin.

Причем обратите внимание, описание поведения системы никогда не описывает вещей вроде ньюансов поведения интерфейса, защиты от sql-инъекций, валидации ввода и тому подобных мелочей.
Поэтому описание поведения является функциональным позитивным тестированием, что по факту является UAT.
Правда я не видел ни одного формата ТЗ прописывающего валидации полей, безопасность и пр. так что BDD тут не исключение.

То есть, сюрприз-сюрприз. BDD не исключает анализа и дизайна тестов совсем. Просто дает набор приемочных тестов бонусом.


  • 0

#8 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 29 января 2020 - 12:54

 

 

А вот для автоматизации тестирования в BDD есть язык gherkin.

но он там не обязателен, можно использовать и фреймворки на нормальных языках программирования, чтобы не создавать все эти "слои"

 

 

 

BDD - это Методология Разработки Через Описание Поведения Системы. В которой зафиксированное описание служит и постановкой задачи на разработку и тестовыми сценариями.

это ещё TDD делал, где есть тесты с заранее описанным поведением системы

 

а вот в BDD тесты уже пишутся намного более понятным языком, тесты более нацелены на юзера


  • 0

#9 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 29 января 2020 - 13:42

 

А вот для автоматизации тестирования в BDD есть язык gherkin.

но он там не обязателен, можно использовать и фреймворки на нормальных языках программирования, чтобы не создавать все эти "слои"

 

То есть, вы предлагаете сделать описание поведения системы, а потом им не пользоваться?
Как говорят наши вежливые заокеанские коллеги "интересная идея"

 

BDD - это Методология Разработки Через Описание Поведения Системы. В которой зафиксированное описание служит и постановкой задачи на разработку и тестовыми сценариями.

это ещё TDD делал, где есть тесты с заранее описанным поведением системы
 
а вот в BDD тесты уже пишутся намного более понятным языком, тесты более нацелены на юзера

 

TDD делает не это.


  • 0

#10 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 29 января 2020 - 14:17

 

А вот для автоматизации тестирования в BDD есть язык gherkin.

но он там не обязателен, можно использовать и фреймворки на нормальных языках программирования, чтобы не создавать все эти "слои"

 

То есть, вы предлагаете сделать описание поведения системы, а потом им не пользоваться?
Как говорят наши вежливые заокеанские коллеги "интересная идея"

Геркин не обязателен для БДД, ведь Геркин это только один из возможных языков

 

имею ввиду что можно и нужно выбрать нормальный язык программирования, и на нём писать БДД тесты. Есть много фреймворков для БДД для каждого языка программирования

 

 

 

BDD - это Методология Разработки Через Описание Поведения Системы. В которой зафиксированное описание служит и постановкой задачи на разработку и тестовыми сценариями.

это ещё TDD делал, где есть тесты с заранее описанным поведением системы
 
а вот в BDD тесты уже пишутся намного более понятным языком, тесты более нацелены на юзера

 

TDD делает не это.

сделал тест, и только потом написал программу - вот это ТДД

сделал тест который написан понятным языком и нацелен на юзера - вот это БДД


  • 0

#11 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 29 января 2020 - 14:34

Нет, BDD это не это. BDD это вообще не про тестирование.


  • 0

#12 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 29 января 2020 - 18:10

У меня был только один проект с BDD (насколько я понимаю, это когда аналитики на этапе проектирования системы описывают бизнес требования в виде кейсов на геркине), но там аналитики не стали поддерживать эту систему а фигачили по старому, и получилось что эти БДД, геркины и т.п. остались на уровне отдела тестирования, что конечно не сильно облегчило жизнь в процессе отслеживания изменений в требованиях. И это осталось только для мягкого подвода ручных тестеров в автоматизацию, что на мой взгляд очень трудоёмко (получается что надо подготовить прослойку на всю систему! перевода текста в методы), хотя проще уж всех зарядить писать просто код (не всё сразу но чтобы уже могли читать, дописывать), который для примера показал ув. товарищ Спок. И будет уже экономия в размере и времени написания кода. Взяли требования в любом виде - зафигачили код теста - тест должен крутиться всегда (важен же сам процесс подвержения что б. требование выполняется). А то что между этими шагами "требование - проверка" можно нахерачить ещё слоёв - ну мало таких заказчиков, которые будут оплачивать эту пирамиду. Поэтому БДД только для отдела тестирования и автоматизации в нём - это оверхед. Если требования изначально пишутся в БДД-стиле - то тут уж да, надо прикручивать ещё один слой (что будет плюсом в плане автоматического контроля требований).


  • 1

#13 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 30 января 2020 - 14:11

То есть, мы дружно пришли к выводу, что если следовать некоторой практике ради самой практики, а не получения профита, то затраты на эту практику с большой вероятностью пользы не принесут.

 

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


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных