Как хаос превратить в порядок |
13.07.2017 16:04 |
Автор: ведущий инженер по тестированию компании "Лаборатория качества" Юлия Бурматова Оригинал статьи: http://quality-lab.ru/transforming-chaos-into-order/ Проекты с идеальным порядком, к сожалению, встречаются крайне редко. Чаще всего мы сталкиваемся с хаосом разной степени беспорядочности: от «черт ногу сломит» до мелких проблем, лишь изредка дающих знать о себе (например, при появлении новых сотрудников). Но, закрывая глаза даже на совсем небольшие дефекты, мы все больше приближаемся к настоящему «апокалипсису», способному «убить» самые интересные и стабильные проекты. Все как в «теории разбитых окон»: чем чаще мы не замечаем проблемы – тем больше их становится, и тем прочнее они внедряются в нашу жизнь. Увы, по-другому не бывает. Я, как и многие другие, ни разу не видела идеальных проектов. Порой на попытки разобраться, что к чему, уходило совершенно неприличное количество времени, что сводило всю эффективность работы на нет. В этой статье я расскажу о различных оттенках хаоса, с которыми мне доводилось встречаться, а также поделюсь вариантами решения каждой из проблем. 7 оттенков хаоса, и как с ними бороться1. Плохо сформулированные требования. Пожалуй, это самая распространенная проблема. На мой взгляд, полностью соответствующее требованиям техническое задание (ТЗ) можно сравнить со снежным человеком: вроде бы, про него все слышали, но точных доказательств существования нет. Мне тоже не доводилось встречаться с этой «неведомой зверушкой», поэтому каждый проект приходится начинать с выяснения степени актуальности и полноты существующих требований. На одном из моих самых первых проектов требования были написаны абсолютно на каждую функциональность. К сожалению, они были сформулированы настолько непонятно, что разработчики, тестировщики и ПМ очень редко с первого раза одинаково понимали изложенное. И это было не единственной проблемой: ТЗ примерно на 80% состояло из устаревшей информации, так как аналитик практически никогда его не обновлял. В результате продукт получался совсем не таким, как задумывал заказчик. Правильность реализации каждой функциональности становилась предметом длительных обсуждений и споров между членами команды. Утомительный процесс постоянно приводил к срывам сроков разработки. Так что же делать в том случае, когда от требований больше проблем, чем пользы? В моей практике лучше всего себя зарекомендовали такие варианты:
Мы делали так: поскольку время на составление тестов было ограничено, ТЗ пристально рассматривалось уже в процессе подготовки чек-листов, а затем задавались вопросы аналитику. После выяснения всех моментов требования обновлялись, чек-листы согласовывались с аналитиком и предоставлялись на ознакомление разработчикам. Это пошло проекту на пользу: споров стало гораздо меньше, функциональности реализовывались в соответствии с видением заказчика, в процессе тестирования не нужно было выяснять, что и как должно работать. Разработчики все реже получали сюрпризы в виде рекомендации «надо было сделать совсем иначе».
2. Отсутствие требований. Проблема эта также встречается довольно часто, но, как мне кажется, отсутствие требований – это все-таки лучше, чем ТЗ сомнительного качества. Сделать все «с нуля» в разы легче, чем пытаться «распутать клубок» из замысловатого текста, устаревшей информации и сплошной недосказанности. Не так давно мне попался проект, в котором нужно было регулярно проводить тестирование новых функциональностей и заодно проверять старые «фичи». Очень важно было не пропускать баги, поскольку сайт давно попал в руки реальных пользователей, тративших свои деньги. При этом требования хранились в голове у менеджера, а разработчики все делали по задачам в багтрекере. Тестировать нужно было «здесь и сейчас», а потому писать ТЗ было просто некогда. К счастью, мне очень повезло: менеджер понимал необходимость документирования проверок и выделил время на составление тестов. Это стало моей «палочкой-выручалочкой». Итак, у проблемы отсутствия требований есть несколько путей разрешения:
Конечно, есть еще вариант «забить и тестировать по памяти», но многие знают, что память может подвести в любой момент, поэтому не будут полагаться на такой вариант. 3. Каждый оформляет документацию так, как хочет. Наличие документации на проекте – это само по себе уже замечательно. Но если каждый сотрудник составляет одни и те же документы по-своему, то в какой-то момент можно столкнуться с ситуацией, когда половина записанной в них информации станет либо совсем ненужной, либо мало кому понятной. Всегда проще разобраться в типовых по структуре документах, чем каждый раз пытаться вникнуть во что-то новое. Мне не раз приходилось сталкиваться с одними и теми же багтрекерами, где все дефекты заводились по-разному: в одних были шаги, в других – нет, где-то фактический результат стоял перед ожидаемым, а где-то – наоборот. Такая же ситуация могла сложиться и с чек-листами: один тестировщик разбивал проверки на группы и проставлял приоритеты, а второй записывал все подряд. Все это приводило к тому, что ценное время тратилось на попытки переключиться с одного вида изложения информации на другой. Такие сложности легко решаются наличием шаблонов документации, принятых внутри компании или на проекте. Это удобно по ряду причин:
Всегда проще взять готовый шаблон и наполнить его нужной информацией, чем создавать свой документ с нуля. 4. Непонятно, какие задачи выполнять, и что делать дальше. Для таких ситуаций всегда полезно иметь наготове список задач, которые можно выполнять независимо от релизов или спринтов. Есть такие варианты:
По клику на картинку откроется увеличенное изображение.
5. Непонятно, что и как тестировать. Еще один «всадник Апокалипсиса». Как сейчас, помню: открываешь задачу, хочешь проверить, но там вообще почти никакой информации, а разработчики общаются друг с другом кодом. Я прекрасно понимаю, что хороший тестировщик должен знать языки программирования, и не пренебрегаю этим навыком. Но ситуации бывают разные – например, появление новых сотрудников, что время от времени бывает на любом проекте. Да по прошествии времени гораздо легче понять, что было сделано в рамках давно забытой и протестированной задачи. Таким образом, для каждой задачи нужно иметь:
Такие задачи значительно облегчают работу тестировщику и экономят его время на попытках выяснить, что к чему. Намного проще придумывать сценарии проверки на основе описания функциональности, чем сначала собирать информацию по крупицам, а потом уже приступать к тестированию. Особенно остро проблема стоит в распределенных командах и при удаленной работе, когда нет возможности подойти к коллеге и решить вопрос за 5 минут. Кстати, связи между частями продукта легко отслеживать с помощью карты функциональностей. Такую «штуку» всегда полезно иметь под рукой. Допустим, разработчики исправили баги в каком-то модуле (а проблемы в итоге появились в другом) или добавили новую «фичу» (сразу понятно, что еще нужно проверить во время регрессионного тестирования). На карте можно увидеть, какие блоки имеет смысл проверить вместе с исправленной или новой функциональностью, а также какие есть связи и приоритеты. Это снимет целый ряд вопросов, поскольку все и так наглядно. Пример такой карты приведен ниже. На ней отображены разделы продукта, их функциональности и параметры. Красный цвет – высокий приоритет, оранжевый – средний, зеленый – низкий. Стрелки показывают связь между разными частями тестируемого приложения. По клику на картинку откроется увеличенное изображение. 6. Непонятно, кто и за что отвечает. Наверняка каждый сталкивался с ситуацией, когда было не очень понятно, к кому и с какими вопросами можно обращаться. Я – не исключение. Спросишь что-то у коллеги – а в процессе выясняется, что это обязанность совсем другого человека, к которому и нужно идти за ответом. Такое чаще всего бывает на новом месте работы, где многое еще непонятно. Да и в относительно стабильных коллективах периодически наступают перемены, когда инициируются какие-то перестановки и меняются или перераспределяются обязанности, – и вот уже даже опытный работник может запутаться. Для решения таких проблем необходимо сделать следующие шаги:
К примеру, таблица может выглядеть вот так: По клику на картинку откроется увеличенное изображение. 7. Непонятны статусы выполнения задач. Мне кажется, всем знакома такая ситуация: задачи распределены, все разошлись по своим рабочим местам и спокойно «фигачат», но проходит время, а статус выполнения заданий не ясен. Конечно, можно просто периодически устраивать опрос, но при этом существует риск получить «размытую» информацию, ничего в итоге не понять и, как следствие, увидеть проблему не сразу, а лишь когда начнут поджимать сроки. Я тоже спотыкалась об эти грабли, особенно когда на проекте трудилось очень много людей: в итоге я вообще не очень представляла, что происходит. Мне очень помогли справиться с этой ситуацией простые гуглотаблички. Как только начинается новый проект, я:
В процессе работы каждый сотрудник заходит в таблицу и проставляет статусы по мере выполнения. Это дает возможность оценить объем уже сделанного и понять, сколько еще осталось. Таким образом, появляется полная картина ситуации на проекте, и не приходится донимать людей вопросами. Помимо статусов и задач в табличку можно добавить колонки для комментариев и любой другой информации (на случай возникновения непредвиденных проблем): сразу будет видно, где именно и по какой причине выполнение задачи отложено или затруднено, а также что можно сделать в данном случае. А еще таблица не раз помогала мне легко и быстро предоставить информацию о статусе проведения работ руководителю, который внезапно озаботился состоянием проекта. Ниже можно посмотреть примеры таблиц, которые я часто использую в работе. Таблица1. По клику на картинку откроется увеличенное изображение. Таблица2. По клику на картинку откроется увеличенное изображение. Что в итоге?Наш мир, к сожалению, устроен так, что в нем никогда не бывает идеального порядка: мы часто не успеваем, забываем или просто ленимся что-то делать. Из-за этого срываются сроки и нарушаются обязательства, что влечет за собой и другие проблемы. И только в наших силах сделать так, чтобы беспорядок если и не полностью исчез, то хотя бы стал значительно менее ощутимым. Игнорируя проблемы, мы способствуем тому, что хаос, подобно сорняку, прочно врастает своими корнями в любой проект, нарушая его целостность и внутреннюю гармонию. Каждая из перечисленных рекомендаций опробована на моем личном опыте и на опыте моих коллег. На первый взгляд, эти советы очень просты и не содержат в себе каких-то особых премудростей, но именно простые варианты часто упускаются из виду. Мы нередко ищем какой-то сложный путь, не обращая внимания на то, что лежит на поверхности. Надеюсь, что те пути решения проблем, которые я предложила в статье, помогут вам справиться с зарождающимся или уже появившимся на проекте беспорядком. |