Зачастую основные ошибки/недочеты/неточности обнаруживаются в критериях приемки к требованиям, хотя именно в них отражается основная информация для разработчиков и тестировщиков.
Это встречается у молодых специалистов, где оценка качества юзер стори заканчивается на проверке формулировки самой юзер стори. Но в большинстве случаев этого недостаточно.
Привет, меня зовут Алёна, я бизнес-аналитик в Red Collar. В этой статье я собрала частые ошибки при написании критериев приемки к пользовательской истории. Предлагаю советы, которые стоит учесть при при разработке требований.
1. Идём от общего к частному
Определяем блоки функциональности, из которых будет состоять продукт, затем определяем конкретные функции. После чего пишем истории и критерии приемки к ним. Нет смысла закапываться в детали продукта на этапе дискавери или этапе определения видения и границ проекта.
Антипример: На первом созвоне с клиентом выяснять, какого цвета кнопку «Купить» он хочет видеть на сайте своего магазина.
Пример: Определить, что вообще будет уметь система, очертить границы. После чего приступить к подробной проработке каждой функциональности и описанию требований и критериев приемки.
2. Не используем в требованиях слова, отражающие субъективную оценку (небольшой/хороший/яркий и т д)
Антипример: «Заголовок должен быть кратким».
Пример: «Заголовок должен быть длиной не более 20 знаков с пробелами».
3. Описываем подробности только по согласованию с заказчиком, дизайнером и разработчиком. Если не знаем — ставим «TBD (To Be Determined)» и идем узнаем
Антипример: «При нажатии кнопки “Создать заказ” открывается всплывающее окно розового цвета с фанфарами и песней Валерия Меладзе на фоне».
Пример: При нажатии кнопки «Создать заказ» появляются поля создания заказа. Формат TBD.
4. Дотошность и внимательность — главные друзья БА
Часто в ПО с несколькими похожими экранами/функциональностями возникает ситуация, когда требования отличаются по тексту крайне незначительно. Бывает удобно скопировать уже написанное подобное требование и просто внести правки в отличающиеся пункты.
Важно внимательно вычитать все скопированное и убрать «лишние» слова из других требований. В работе БА количество требований и скорость их написания ничего не значат, если в итоге в требованиях много ошибок и опечаток, которые могут повлиять на разработку конечного продукта.
5. Пишем названия юзер стори (чтобы при беглом взгляде на заголовок понять, о чем речь)
Антипример: User Story №1. Как клиент магазина бытовой техники, я хочу зарегистрироваться на сайте магазина, чтобы оформить онлайн заказ.
Пример: US1 - Регистрация. Как клиент магазина бытовой техники, я хочу зарегистрироваться на сайте магазина, чтобы оформить он-лайн заказ.
6. Не смешиваем разные функциональности
В каждом требовании должен быть результат, который завершает юзер стори и начинает новую. При изменении каких-то параметров требований актуализировать их будет гораздо проще, когда каждая функциональность описана отдельно, а связанные требования просто ссылаются на нее. Избегаем ненужного дублирования и раздувания документации.
Антипример: В US про регистрацию написать: «После нажатия кнопки “Зарегистрироваться” открывается личный профиль клиента. Профиль состоит из …».
Пример: В US про регистрацию написать: «После нажатия кнопки “Зарегистрироваться” открывается личный профиль клиента. Функциональность профиля клиента описана в US2 - Профиль».
7. Не дублируем одну и ту же информацию
Ситуация аналогична предыдущему пункту. В случае внесения каких-то изменений, допустим, в правила валидации, не придется искать все требования, в которых они были указаны. Снижается риск что-то пропустить и оставить требования неактуальными.
Антипример: Повторно описывать правила валидации параметров, которые уже были описаны в другой US.
Пример: Сослаться на другую US или сделать отдельную страницу для всех валидируемых полей и всегда ссылаться на нее.
8. Описываем результаты как положительного сценария, так и отрицательного
Антипример: «При заполнении всех полей в соответствии с правилами валидации, указанными в таблице 1, после нажатия кнопки “Создать” открывается окно создания заказа».
Пример: «При заполнении всех полей в соответствии с правилами валидации, указанными в таблице 1, после нажатия кнопки “Создать” открывается окно создания заказа. При заполнении хотя бы одного поля не в соответствии с правилами валидации после нажатия кнопки “Создать” появляется сообщение об ошибке. Возможный текст:…».
9. Добавляем диаграммы, схемы, вайрфреймы, но только если они несут ценность для понимания данной US
У оформления критериев приемки нет четких правил. Вы можете описывать функциональность, как считаете нужным, но только если это действительно важно для понимания принимающей стороной
Антипример: «US1 Регистрация. Диаграмма движения популяции морских котиков прилагается».
Пример: «US1 Регистрация. Диаграмма процесса регистрации с учетом интеграций со сторонним сервисом прилагается».
10. Добавляем ссылку на дизайн или прототип, обновляем по мере готовности
Антипример: Мысли разработчика при виде требований без ссылок на визуал: «Гора текста, ниче не понятно, еще и картинки нет».
Пример: Мысли разработчика при виде требований со ссылками на прототип: «Гора текста, ниче не понятно, хоть картинка есть, слава Богу».
11. Всегда думаем головой в каждом конкретном проекте
Антипример: «В статье читал(а), что можно только так, поэтому лучше напишу, как там было указано».
Пример: «Автор статьи не видит этот конкретный проект и, если мне кажется, что здесь стоит применить другой подход, но я не уверен(а), стоит посоветоваться с коллегами».
Выводы: всегда есть место развитию
Вероятно, у каждого бизнес-аналитика есть свой арсенал подобных критериев. Такие вещи приходят с опытом. Предполагаю, что и я с годами дополню этот список советами, которые упростят жизнь мне и многим начинающим специалистам в сфере бизнес-анализа и технического писательства.
Данные пункты «не высечены в камне»: в разных компаниях в зависимости от уровня специалистов и других критериев подобный список может меняться. Надеюсь, что рекомендации помогут вам избежать ошибок при разработке требований к ПО и стать тем самым аналитиком, работать с которым на проекте — одно удовольствие!
Комментарии (14)
bySawko
25.08.2022 15:15Мне кажется, что user story читабельнее, если отрицательные сценарии указывать отдельно
Пример: «
Основной сценарий
...
При заполнении всех полей в соответствии с правилами валидации, указанными в таблице 1, после нажатия кнопки “Создать” открывается окно создания заказа».
....
Алтернативные сценарии
Про ошибке валидации (ссылка на таблицу 1) появляется сообщение об ошибке. Возможный текст:…
lxsmkv
25.08.2022 17:09+4Как клиент магазина бытовой техники, я хочу зарегистрироваться на сайте магазина, чтобы оформить он-лайн заказ.
Это то, как не надо писать юзер стори. Почти все в этой шаблонной формулировке сущее вранье. Пользователь не хочет регистрироваться на сайте магазина, чтобы оформить заказ.
Пользователь хочет оформить заказ и, как правило, вынужден для этого проходить процесс регистрации. Не он хочет этого, этого хочет магазин. Для того чтобы выслать товар клиенту, владелец магазина хочет получить от клиента адресные данные и данные по оплате. (Для этого регистрация кстати не нужна). А регистрация нужна для того, чтобы хранить адресные данные и данные по оплате для последующих заказов. Либо же там есть какие-то удобные функции (типа истории заказов) которые привязаны к учетной записи. И эти случаи все нужно четко разграничить. Тогда у нас получатся разные истории: я новый клиент и хочу быстро оформить заказ, я постоянный клиент и при оформлении заказа не хочу каждый раз вводить одни и те же данные.Юзер стори не содержит деталей реализации. Одна из функций юзер стори это, грубо говоря, прояснить в голове заказчика, а как же у него бизнес работает и как он взаимодействует с пользователем, зачем и почему, а также инициировать процесс осмысления и обсуждения.
Я понимаю, что это "всего лишь пример, и вообще не про это, а про именование", но из таких неверных примеров потом мы имеем тонны шаблонно написаных юзер стори от которых ни тепло ни холодно. Кстати и именование я бы сделал исходя из пользователя, а не функции. "новый клиент", "постоянный клиент". А для различения лучше написать отличительную особенность этой истории вместо цифр и аббревиатур, которые не несут в себе никакой полезной информации, кроме того что по цифрам можно сортировать в экселе. Для группировки по тематической области лучше потом уже к карточке "тег" прикрепить.
Adgh
Что означает «TBD»?
PrinceKorwin
To Be Done очевидно
georgeshereshev
И вовсе не очевидно. Гугл считает, что "TBD" это "to be determined". А вообще, это минус автору за использование аббревиатур без расшифровки.
Dteta
Поддерживаю. Первый раз встретился с аббревиатурой ''TBD'' в книге Карла Вигерса и Джона Битти "Разработка требований к программному обеспечению", в которой она расшифровывается как «To Be Determined» и служит меткой в системе управления требованиями с помощью которой можно сначала пометить требования, в которых при первичной формализации возникли вопросы и непонимания, требующие дополнительных размышлений, поиска, сбора и анализа информации и. соответственного, последующей выработки решения, а затем быстро отобрать такие требования из списка, чтобы вернуться к работе над ними.
redcollar Автор
Респект за Вигерса, полностью согласны с комментарием! :)
redcollar Автор
Спасибо всем за внимательность! Расшифровку добавили в текст. В нашем случае имелось в виду «To be determined», но все варианты могут быть применимы.
shaykemelov
to be determined
consalt
To be discussed
MK1301
Думаю. что то из этого: To be determined, or "to be decided" or "to be declared".
i_petrov
To be discussed
khuzhinru
To be defined