Вторая часть нашей статьи о разработке, основанной на поведении, с JUnit 5.

От анализа требований к критериям приемлемости

Для компании, использующей приложение для управления полетами, одной из бизнес-целей, которую мы можем сформулировать, является «Увеличение продаж за счет предоставления более качественных общих услуг по управлению полетами». Это очень общая цель, и ее можно детализировать с помощью требований:

  • Предоставьте интерактивное приложение для выбора рейсов.
  • Обеспечьте интерактивное приложение для смены рейсов.
  • Предоставьте интерактивное приложение для расчета кратчайшего маршрута между источником и пунктом назначения.

Чтобы клиент был доволен, функции, созданные в результате анализа требований, должны достигать бизнес-целей клиента или создавать ценность для бизнеса. Первоначальные идеи необходимо описать более подробно. Один из способов описать предыдущие требования:

Как пассажир
Я хочу знать рейсы в заданный пункт назначения за определенный период времени
Чтобы выбрать рейс(ы), которые соответствуют моим потребностям

or

Как пассажир
Я хочу иметь возможность изменить свой первоначальный рейс(ы) на другой(е)
Чтобы Я могу следить за изменениями в своем расписании

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

Предыдущую функцию можно разбить на более мелкие истории, например следующие:

Найти прямые рейсы, которые соответствуют моим потребностям (если есть).
Найти альтернативные рейсы с пересадками, которые соответствуют моим потребностям.
Найдите рейсы в одну сторону, которые мне подходят.
Найдите рейсы туда и обратно, которые мне подходят.

Как правило, конкретные примеры используются в качестве критериев приемлемости. Критерии приемлемости выражают то, что заставит заинтересованную сторону согласиться с тем, что приложение работает должным образом.
В BDD критерии приемлемости определяются с помощью ключевых слов Given/When/Then:

Учитывая ‹контекст›

Когда ‹происходит действие›

Затем ‹ожидайте результата›

Вот конкретный пример:

Учитывая рейсы, выполняемые компанией

Когда я хочу поехать из Бухареста в Лондон в следующую среду

Тогда мне должны быть предоставлены 2 возможных рейса: 10:35 и 16:20

Преимущества и проблемы BDD

Вот некоторые преимущества подхода BDD:

  • Удовлетворяет потребности пользователей. Пользователи меньше заботятся о реализации и в основном заинтересованы в функциональности приложения. Работая в стиле BDD, мы приближаемся к решению этих задач.
  • Обеспечивает ясность — сценарии поясняют, что должно делать программное обеспечение. Они описаны простым языком, понятным как техническим, так и нетехническим людям. Неоднозначности можно прояснить, проанализировав сценарий или добавив другой сценарий.
  • Поддерживает изменения. Сценарии представляют собой часть документации по программному обеспечению: это живая документация, поскольку она развивается одновременно с приложением. Это также помогает обнаруживать входящие изменения. Автоматизированные приемочные тесты препятствуют введению регрессий при внесении новых изменений.
  • Поддерживает автоматизацию. Сценарии можно преобразовать в автоматизированные тесты, поскольку этапы сценария уже определены.
  • Сосредоточен на добавлении ценности для бизнеса — BDD предотвращает внедрение функций, которые не являются полезными для проекта. Мы также можем расставить приоритеты по функциям.
  • Снижает затраты — приоритизация важности функций и отказ от ненужных предотвратит растрату ресурсов и сконцентрирует эти ресурсы на выполнении именно того, что необходимо.

Проблемы BDD заключаются в том, что он требует участия, тесного сотрудничества, взаимодействия, прямого общения и постоянной обратной связи. Это может быть проблемой для некоторых людей и, в контексте современной глобализации и распределенных команд, может потребовать языковых навыков и управления часовыми поясами.

Заинтересованы в JUnit? Посетите наши тренинги.

Каталин Тудоуз
Эксперт по Java и веб-технологиям

Первоначально опубликовано на https://www.luxoft-training.com.