Начали внедрять у себя в проекте Scrum для QA команды и столкнулись с проблемой непонимания со стороны “новобранцев” одного из ключевых определений в скраме — юзер стори. Или даже правильнее было бы сказать, что проблема в черезчур прямолинейном понимании данного определения. Например, они целиком и полностью уверены, что под понятием user story скрываются исключительно задания, которые вносят новую функциональность в продукт. Но ведь это не всегда верно, ведь в списке задач есть такие черезвычайно сложные и трудоёмкие задачи как рефакторинг, нагрузочное тестирование или же интеграция модулей в приложении. Отсюда напрашивается первый вывод - user story в реальной жизни содержат не только описания нового функционала видимого клиенту. Мало того, данные требования в сложных системах могут быть всего лишь вершиной айсберга по сравнению с огромным количеством скрытых задач по созданию сложных алгоритмов и настройке безотказной системы.
К тому же выяснилось, что в некоторых случаях обычный task принимают за user story. Но как же отличить эти два понятия? С ходу напрашивается ответ, что юзер стори агрегирует в себя такси, а следовательно таск, в отличии от юзер стори, сущность атомарная. Это утверждение не идеально, так как понятие атомарности, как показала практика, у каждого своё. Например, тестеру нужно написать автоматизированные тесты для приёмочного тестирования, вот он и создаёт у себя в беклоге юзер стори “create selenium tests” с единственным таском, аналогичного содержания и даёт оценку этой задаче в 10 идеальных часов (при условии что юзер стори оценена в 2 story point-а, а 1SP = 5 идеальным часам). При этом он утверждает, что на более мелкие куски разделить просто на просто невозможно. Но стоит задать этому человеку несколько наводящих вопросов и мы увидим, что перед нами появиться список с 5-тью задачами и эстимейшеном в 13 часов.
Итак, мысль номер два — юзер стори не предназначены для точной оценки времени и ресурсов, требуемых для решения возникшей задачи.
И теперь перейдём к последнему пункту, который отличает, на мой взгляд, task от user story (US). Любая US обязана содержать в себе элементы приёмочного тестирования. И если для команды разработчиков приёмочными тестами будут автоматизированные тесты, созданные коммандой QA, то для самой комманды тестеров эту роль уже будет играть успешное прохождение всех созданных ими тестов на continuous integration сервере.
Выходя из всего вышеперечисленного, хотелось бы дать своё определение user story.
User story — общее описание задачи, которое позволяет выполнить предварительную оценку сложности разработки (реализации) и является основой для приёмочного тестирования.
На этом спасибо и до новых встреч. Данное определение будет помещено на страницу Scrum терминологии.
9 Ответов для "Что такое user story?"
рекомендую взглянуть на статью, где я детально постарался объяснить суть и предназначение историй:
http://www.agileukraine.org/2007/04/user-stories-part-1.html?lang=ru
статья получила ряд позитивных отзывов, так что я надеюсь, она будет полезна всем
немного комментариев к этому посту (надеюсь, это натолкнет кого-то на понимание неявных проблем):
0. во-первых (хотел сказать “в-нулевых”), спасибо alexsun за пост. истории - это важная часть функционирования scrum проекта. так что здорово, что один из ранних постов на этом сайте посвящён как раз этой теме.
1. “Начали внедрять у себя в проекте Scrum для QA команды”
если QA не являются частью SCRUM команды, то скорее всего определить критерий done для разработчиков будет весьма тяжело, так как на выходе такой “подкоманды” вместо potentially shippable product increment мы получаем набор работ по тестированию, что противоречит основам SCRUM о результатах спринта.
если зайти слишком далеко, то спринты в этом случае могут выродиться в мини waterfall, со спринтами разработка-тестирование-фиксы-тестирование…
я ни в коем случае не хочу сказать, что в проекте alexsun всё было именно так. просто хочу заострить внимание читателей этого сайта на эту проблему, так как во время тренингов, которые мы проводим, люди часто задают вопрос на эту тему.
2. “…тестеру нужно написать автоматизированные тесты для приёмочного тестирования, вот он и создаёт у себя в беклоге юзер стори “create selenium tests” с единственным таском, аналогичного содержания… “
Похоже, понятие историй и задач немного перепутано.
Истории – это требования, высказанные от имени конечных пользователей, где понятно что должен делать пользователь в системе для реализации своих нужд.
Задачи – это шаги, которые необходимо предпринять конкретными членами команды для реализации той или иной истории. Они носят технический характер. Иногда задачи не являются явно частями какой-то конкретной истории.
Так “сreate selenium tests” – это суть задача.
3. “Итак, мысль номер два — юзер стори не предназначены для точной оценки времени и ресурсов, требуемых для решения возникшей задачи.”
Мысль верная. В product backlog может быть сто и более историй. Если команде для их оценивания придётся бить их на задачи, оценивать каждую и суммировать, то мы получим во-первых избыточно детальный план, которым будем сложно управлять; во-вторых – при изменении командой понятия done (читай добавления новых задач в каждую историю) придётся переоценить все истории; в-третьих – это просто займёт слишком много времени, которое чаще всего есть на что потратить хорошей команде да и не факт, что все истории беклога (ниже уровня текущего спринта) вообще будут реализованы.
То есть мы приходим к тому, что нужно иметь более быстрый способ оценивания историй, точности которого было бы достаточно для построения долгосрочных (release) планов. Story Points для этого идеально подходят.
Для краткосрочной оценки (планирование текущего спринта) использование подхода разбития истории на задачи работает отлично. Так как он помогает команде обсудить и синхронизировать технические детали реализации, тестирования и приёма истории.
4. “Любая US обязана содержать в себе элементы приёмочного тестирования. И если для команды разработчиков приёмочными тестами будут автоматизированные тесты, созданные командой QA, то для самой команды тестеров эту роль уже будет играть успешное прохождение всех созданных ими тестов на continuous integration сервере.”
То что любая история должна содержать элементы приёмочного тестирования – это на 100% верно. Каждая история должна быть I.N.V.E.S.T.: Independent, Negotiable, Valuable, Estimatable, Testable и Sized properly.
Не могу согласиться с тем, что для различных частей SCRUM команды для одних и тех же историй приёмочные тесты будут разными.
Команда (разработчики + тестировщики) работает над одним и тем же набором историй. У них одна цель – разработать истории, которые будут удовлетворять (читай приняты) заказчиком. Отсюда вывод: и для разработчиков, как и для тестировщиков приёмочными тестами будут тесты, согласованные с заказчиком на этапе формирования и планирования истории на текущий спринт.
Мышление типа “моя история прошла мои тесты, пройдёт ли она твои меня не касается” - вредно для команды.
Удач.
SCRUMguides.
Утверждение “сreate selenium tests – это задача” верна в случае, если тестер является членом scrum комманды, но в случае если он учасник QA комманды - это уже user story.
не могу согласиться
см моё изложение по поводу мини-водопадов. не должен qa быть другой командой. не хорошо это.
а про формат истории я вообще молчу. где упоминание про юзера? про пользу ему от действия?
я видел другие проекты, где утверждалось, мол “мы используем истории”. на деле же там и близко словом user не пахло.
так и водопад скрамом недалеко обозвать.
Мы уже переросли эту идею что “QA неотьемлемая часть команды”. И речь уже не идёт про осмысление нужен ли QA процесс для проекта или нет (это и так понятно что нужен), речь идёт про утилизацию времени всех тестеров в проекте, чтобы уменьшить простои из-за блокеров и не завершённого нового функционала.
Приведу наглядный пример. Представь что ты - прораб у небольшой команды строителей и вы купили перформатор, ну, и соответственно используете его 1 раз в две недели чтобы на начальном этапе раздолбать пару стенок, а я начальник строительной компании - и у меня 12 команд строителей. Так вот мои команды используют этот перформатор каждый день.
А да, забыл скзать, что на каждом девелоперском скраме QA участвует лишь в роли стейкхолдера. В данный момент это уже новый уровень построеная скрам комманд, это так сказать уже scrum 2.0.
п.с. следующим коментом отвечу тебе про формат юзер стори
Относительно юзер стори в формате “As … I want to …”. Это всего лишь совет как лучше всего создавать external user story, которые приходят от зачазчика. Это хороший совет, но далеко не всегда уместный для написания юзер стори. Я не отношусь к Typhoid Scrum-boy (то есть не следую фанатично за всеми книжными законами) и по прежденему воспринимаю скрам как фреймворк.
на счёт типов скрам (A,B,C) а также версионности (1.0, 2.0) у Майка Кона есть отличная шутка:
If not, let’s not talk about Type A Scrum unless we also want to talk
about Type W Scrum, which is more commonly called Waterfall.
Думаю, что тебе не мешало бы почитать один из докладов с Agile Conference 2005. Потому как, в отличии от главной героини фильма “Москва слезам не верит”, котороя считала, что научившись управлять тремя людьми, можно с такой же лёгкостью справиться с тысячей, enterprise agile (Scrum 2.0) требует дополнительных практик и подходов для достижения успеха.
п.с. думаю ты также согласишься, что эта фраза появилась на свет в результате битвы титанов (Кон vs Сазерленд)
Комментарии Кена Шуейбера на тему “Скрам версия 2″
http://groups.yahoo.com/group/scrumdevelopment/message/14788
Швебер привёл отличный пример, сравнив скрам с игрой в футбол. Да вот только, если опираться на его трактовку (If there is a next version of Scrum it won’t be Scrum), то такие направления как минифутбол, футзал и пляжный футбол - вообще нельзя считать футболом. А ведь это футбол! Так что и понятие Enterprise Scrum (он же Scrum 2, который появиля с лёгкой руки того же со-основателя скрама - Джефа Сазерленда) - это новые тенденции в Scrum-e. Просто многие ждут пока про это напишут серьёзные дяди в своих серьёзных книгах …
Написать комментарий