Тестировщики и требования: непараллельные прямые |
12.07.2011 11:29 |
Автор: Наталья Руколь Внимание! В этой статье будет много буковок и советов о том, как вы можете повысить эффективность своей работы и проекта в целом в условиях нехватки требований. Если вы привыкли жаловаться на нехватку требований и не хотите ничего менять, статья к прочтению не рекомендуется. Роль требований в процессе разработкиТребования похожи на единорогов. Такие же прекрасные мифические создания, несущие людям счастье В ~99% проектов, с которыми я сталкивалась, требования:
Выбирайте любые пункты из трёх, а иногда и все вместе. При этом моя религия утверждает, что хорошие, полные, детально проработанные требования – залог успеха не только тестирования, но и проекта в целом. Что же делать, если мы входим в статистическое большинство, и удовлетворительных требований у нас нет? Как всегда, у нас есть выбор. Вариант #1 – подождать: а вдруг появятся? Чтобы ожидание не было скучным, можно разбавлять его регулярными жалобами на нехватку требований и байками из серии «а вот в нормальных компаниях…». И есть вариант #2 – построить процесс таким образом, что у вас появятся требования. Именно об этом варианте мы и поговорим в статье. Проектные цели – источник требованийНачнём с азов: каждый проект преследует свою цель. В долгосрочной перспективе все коммерческие проекты создаются для заработка денег, но в краткосрочной перспективе цели рознятся. Для тиражного продукта целью может быть захват рынка, вывод продукта требуемого качества или просто «релиз до рождественских каникул в USA». Для заказного это может быть выполнение SLA, эффективная презентация прототипа заказчику или успешное внедрение. В этом контексте можно сказать, что: Требования – это перечень того, что необходимо продукту для достижения текущей проектной цели. Исходя из выявленных проектных требований, строится весь последующий процесс: планирование, проектирование, разработка, тестирование. Требования – это фундамент для построения успешного продукта. Если требования изначально не соответствуют цели, не выявлены, не согласованы между участниками проекта, то даже самая слаженная работа проектной команды не приведёт проект к успеху. При некорректных требованиях вы можете долго и упорно тестировать продукт, находить дефекты, проявлять активность, что-то заводить, исправлять, проверять… Но проекту это пользы не принесёт! Что может сделать тестировщик?Если бы эта статья была написана для аналитиков и РМов, всё было бы просто. Литературы про сбор и анализ требований предостаточно, различные методологии подробно разбирают, как их необходимо выявлять, документировать, отслеживать изменения. Моей задачей было бы сказать «Чуваки, это очень-очень важно, поймите это наконец-то!», привести пару примеров неудачных проектов, которые были провалены из-за неграмотной обработки требований, и на этом статья бы завершилась. Убедила, мотивировала, идите наконец-то работать. Но с тестированием ситуация немного другая. Формально требования вне нашей зоны ответственности, и их качество от нас не зависит. Мы лишь используем их в своей работе. Что же мы можем сделать? Ниже я структурирую советы по работе с требованиями, которые подходят или не подходят в зависимости от того, «насколько у вас всё запущено». 0. Узнаём бизнес-цели проектаЕсли вы их не знаете – вы работаете в темноте, да ещё и с завязанными глазами. Что важно проекту? Сроки, бюджет, качество? Какой результат и когда нужен? Как измерить успешность проекта? Только зная эти параметры, вы сможете работать с требованиями. Кстати, не удивляйтесь, если РМ не сможет с первой попытки вразумительно ответить на эти вопросы – в российском ИТ-бизнесе это далеко не редкость. Спрашивайте, понимайте, пока у вас не появится чёткой картины проекта и понятных, измеримых критериев его успешности. 1. Выявляем требованияИногда требований нет. При этом, я не имею в виду, что они не задокументированны – в небольшой проектной команде бывает достаточно проговорить общие требования вслух. Но бывают ситуации, когда их и впрямь нет. Недавно я участвовала в подобном проекте. Со стороны это выглядело следующим образом: «Разрабатываем систему видеовещания!». Какую? Зачем? Для кого? Кто целевая аудитория (ЦА)? Какие критерии успеха проекта? Ответов на эти вопросы не было. В итоге, разработчики несогласованно пилили модули, исходя из того, как они понимают слово «видеовещание». Дизайнеры рисовали интерфейс «симпатичный», а не «удовлетворяющий нашу ЦА». Результат предсказуем: срывы сроков, непрерывные переделывания, исправления, низкое качество результата. Что в этой ситуации может сделать тестировщик?1. Создать структуру требований. Если вы не просто кликаете на кнопочки, а технологично подходите к тестированию, проектируете тесты, исследуете продукт с точки зрения пользователей, то вы в любом случае проводите его анализ и выявляете требования. Чаще всего, результат фиксируется в виде тестов, чек-листов, а иногда просто в голове в формате «это нужно бы проверить». Давайте попробуем выписать структуру требований самостоятельно? Это можно сделать, используя разные инструменты:
Результат у всех будет разным, но залог успеха – иерархичность требований, переход от большего к меньшему. К примеру, мы разрабатываем форум тестировщиков. Какие в нём будут требования? Аутентификация пользователей, создание тем, поиск, модерация. Что будет в аутентификации? Регистрация, вход, выход. Какие требования к регистрации? Проверка валидности е-мейла, проверка что не робот и т.д. И так мы постепенно от большего к меньшему, циклично выписываем требования. Не надо описывать детали, это пока не нужно. Главное – структура. 2. Согласовать структуру требований. Для этого нужен аналитик или РМ. Отказывающийся от написания требований, он врядли откажется от согласования. Спросите, полна ли ваша структура требований, есть ли в ней всё, что он ждёт от продукта? 3. Определить приоритеты. Попросите РМа/аналитика определить приоритеты. Не просите проставлять циферки в табличке, проведите это совместно, устно. Спрашивайте, почему приоритет именно такой? Если услышите обоснованные ответы – хорошо. Не услышите – выясняйте, докапывайтесь. Вы должны хорошо понимать пользователя, эта информация необходима в тестировании. Если РМ не понимает сам – вы дадите правильный толчок к выяснению пользовательских ожиданий. На этапе определения приоритетов вам очень поможет видение бизнес-целей проекта, с которых мы только начали работу с требованиями. Проводите требования через фильтр бизнес-целей, чтобы понять: правда ли они нужны и насколько сильно? 4. Расширить требования нефункциональными аспектами. По каждому пункту ваших требований уточняйте: сколько пользователей? Как быстро? Какие объёмы данных? Какие ограничения? Постарайтесь собрать максимум информации, ведь без неё вы всё равно не сможете результативно тестировать свой продукт. В результате, получится приблизительно следующая табличка: Кажется, пришло время для двух сакральных вопросов: где тестировщику найти время на ведение требований и почему он должен это делать? Начнём с первого: если вы хотите грамотно тестировать свой продукт, то без такой информации вам в любом случае не обойтись, и вы всё равно её собираете. Если вы не знаете точно, как что должно работать у конечного пользователя, то и протестировать это «что-то» вы не сможете. Покликать по кнопкам – да, протестировать – увы. Могу поделиться своим опытом: создание структуры требований на продукт, состоящий из 2 млн. строк кода, заняло около двух дней в фоновом режиме. Требований получилось около 700. Что же касается второго вопроса (почему он должен это делать?), ответ простой: «Колхоз – дело добровольное». Конечно, проявлять эту инициативу вовсе не обязательно, но если вы этого не сделаете – велик риск, что проект не достигнет своих целей, и как бы вы не старались с тестированием, существенная часть выполненных вами работ окажется никому не нужной. 2. Детализируем требования.Структура требований – это уже очень хорошо. Допустим, её составил аналитик или вы, воспользовавшись стратегией из пункта 1. Но что вам даёт требование «Проверка валидности e-mail»? Оно может быть реализовано по-разному, с разными проверками, по-разному отображаться в пользовательском интерфейсе. Получается, наша структура – это только заголовки требований, описаний к которым пока что нет. На этом этапе для нас важнее всего общее понимание «как это должно быть реализовано» всеми участниками проекта, и при этом мы должны быть уверены, что именно эти способы реализации приведут наш проект к достижению бизнес-целей. Как мы можем этого достичь? Из своего опыта я могу предложить несколько вариантов действий. 1. Описать самим. Для выполнения этого чудо-действа вам придётся побыть аналитиком. Выяснять, анализировать, документировать, структурировать, согласовывать результат с РМ, а потом ещё и поддерживать созданные документы. Этот вариант можно расценивать всерьёз только при достижении следующих условий:
К огромному сожалению, я не сталкивалась с ситуациями, в которых представители отдела тестирования соответствовали бы всем пяти вышеперечисленным критериям. У меня есть опыт, в котором отдел тестирования по согласованию с РМ взял на себя документирование требований, но, к сожалению, нехватки знаний в области бизнеса и в области методологий системного анализа привели к очень невысокому качеству результата. Это значительно лучше, чем ничего – но до идеала далековато. Поэтому, переходим к следующему варианту. 2. Инициировать общепроектное согласование требований. В моей практике это выглядело следующим образом: берём структуру требований, запираем основных участников проекта (со стороны разработки, аналитики, тестирования и проектирования интерфейсов) в переговорке, и по каждому пункту обсуждаем: как оно должно работать? Каждый согласованный пункт, по которому мы приходим к общему мнению, помечаем зелёным плюсиком, галочкой, сердечком – кому как больше нравится. В этом варианте вам не придётся документировать и поддерживать требования, при этом их проработка будет качественнее: архитекторы и дизайнеры будут задавать абсолютно разные вопросы, которые вам бы и в голову не пришли. Такая многосторонняя проработка будет и глубже, и качественнее. Но и в этом случае есть необходимые условия для успеха мероприятия:
Если внедрить согласование требований как привычный процесс, то все последующие итерации пойдут легко и просто, главное – чтобы требования или изменения в них не проходили «мимо» этого процесса. 3. Собрать статистику по требованиям и убедить в необходимости их создания Тестировщик, выпрашивающий требования, давно стал собирательным образом с ярко выраженной негативной оценкой. Во многих компаниях тестировщики утверждают, что тестирование проводится неэффективно именно из-за отсутствия требований и настоятельно просят эти самые требования в конце-то концов предоставить. С одной стороны, это действительно так: тестирование очень сильно зависит от требований, и без них мы часто не понимаем что, как и в какой последовательности тестировать. Но с другой стороны баррикад наши просьбы требований часто выглядят как перебрасывание ответственности, этакий офисный пинг-понг. Если варианты 1 или 2 по каким-то причинам не получились (а чаще всего это значит, что не удалось заручиться поддержкой РМа), то вместо жалоб на нехватку документации вы можете пойти на «крайние меры»: собрать статистику по наличию требований. Имея структуру, созданную ещё на первом этапе, вы можете проставить плюсики и минусики: какие требования понятны и ясны, а какие – нет. В моей практике статистика «90% требований реализованы, из них 14% понятны участникам проекта» производила магическое действие на команду – конечно, не в случае, когда вы хотите заставить работать других людей, а когда и сами готовы проявить инициативу. 3. Тестируем требованияПри желании вы легко найдёте критерии, по которым обычно проводится тестирование требований: полнота, непротиворечимость, атомарность, тестируемость и т.д. О том, как проводить тестирование требований, легко и доступно написано в книге Ron’a Patton’a “Software Testing”, поэтому повторяться я не буду. Хочется лишь добавить важный момент, усвоенный на практике через набивание шишек: если вы хотите, чтобы результаты тестирования требований приносили пользу проекту, обсудите этот процесс с РМом заранее. Договоритесь заводить на требования такие же полновесные баги, как и на код. Танцуйте, прыгайте с бубном, проводите презентации, учитесь активным продажам – сделайте всё, чтобы объяснить важность требований на проекте и заручиться поддержкой. Выводы
* В этой статье местами осознанно нарушена терминология для удобства восприятия. Скорее всего, неосознанные нарушения, связанные с нехваткой знаний в области анализа, тоже присутствуют, за что заранее прошу прощения. ** Все советы, данные в этой статье, благополучно протестированы на практике и показали свою эффективность. *** Несмотря на то, что автор исповедует религию проактивности и инициативы, он признаёт наличие «неисправимых» проектов Обсудить в форумеОб авторе: Наталья Руколь, Лаборатория Качества Ближайшие онлайн-тренинги автора:
|