Александра Ковалева. Планирование трудозатрат на тестирование |
01.10.2014 10:16 |
Доклад Александры Ковалевой на конференции SQA Days-15, 18-19 апреля 2014, Москва, а 14-15 ноября пройдёт следующая 16-ая конференция SQA Days в Питере - присоединяйтесь. Я занимаюсь оценками рисков в компании. За последний период, работая тест-лидом, я занимаюсь глобальным планированием. Однако не во всех компаниях, планированию уделяют много времени. Мы как раз поговорим о том, что с этим делать. Мастер класс будет состоять из 2-х частей: 1. Теоретической – понятие оценки и планирования. Роли и задачи. 2. Практической – пример управление ресурсами (можно посмотреть на видео) Итак, что же такое планирование? Это настолько глобальное понятие, что его можно применить к любой области жизни. Планирование как вид деятельности – это процесс выработки действий по достижению цели. «Бизнес-планирование» Кушнир И.В. Как пример, когда вы утром едите на работу и думаете пойти вечером в кино – вы занимаетесь планированием! Также и на работе! Несмотря на то, что вас не спрашивают о планирование, вы планируете, так как должны примерно знать, когда вы сможете закончить свою работу и передать результаты команде. В других случая, вы точно называете дату релиза, спланировав его сроки, которые зачастую переносятся из-за того, что вы не попадаете в указанные в плане даты. Планирование – очень широкое понятие. И прежде чем говорить о планировании на этапе тестирования, нужно знать, что это слово означает для других членов компании и особенно для менеджмента. Но в планирование участвует команда, а команде это не нужно, они не хотят этим заниматься. Такая проблема возникает из-за менеджмента. Менеджер постоянно общается с заказчиком, который хочет знать время. НО это не время, потраченное на разработку, а дату, когда он получит готовый продукт, и сколько времени на это нужно. В таком случае деньги и время очень взаимосвязано, особенно, если нарушаются сроки релиза продукта. Может быть, он не требует от вас отчетности, но он связан с другими специалистами: маркетологами (рекламная компания), финансистами (выделение бюджета). Последнее звено в выпуске продукта – тестирование, поэтому на нем стараются экономить. Мы поговорим о планирование в прогнозирующих методологиях, потому что в них есть время попланировать до того, как проект начался. В гибких же методологиях все происходит «здесь и сейчас»: не только регулярный planning, но и initial planning, как правило, им занимается менеджмент. Это отдельная тема. Если мы говорим о прогнозирующих методологиях, то здесь могут быть целые этапы, которые вы можете наблюдать на слайде. Вот, к примерe, первый этап - Incention – он может занимать до полугода. И это период, когда не программируют и толком не занимаются требованиями. Кто может согласиться на то, когда нам платят, а мы толком ничего не делаем? Это может быть военная, медицинская промышленность. Это могут быть глобальные проекты, от которых зависит жизнь людей, и период разработки примерно составляет от 2-ух до 5-7 лет. Обычно же на планирование уходит около 2-ух недель, но зачастую это просто «завтра». Что такое планирование тестирования? Для тест-лида, это не только время, но и что, как и где тестировать. Планирование тестирования: 1. Определение требований к тестам 2. Оценка рисков 3. Разработка стратегии тестирования 4. Определение ресурсов 5. Разработка Тест Плана 6. Создание графика работ Каждый этот вопрос достоин рассмотрения. Но мы поговорим о маленьком пункте «Создание графика работ». Конечно, о тестирование можно просто сказать, но лучше показать и как-то формализовать свою аргументацию. Сейчас поговорим именно об этом. Конечно, планирование не возможно без оценки результатов – это и есть наша основная проблема. «Мы не умеем оценивать!» - команда может вам заявить такое, что джуниор, что опытный специалист. Причину видят в отсутствие определенных методов. Это очень большое заблуждение. Методы есть: Требующие детальной математической проработки: 1. Метод Дельфи; 2. Метод трех точек (последовательный расчет); 3. Метод анализа функциональных точек/точек тестирования; 4. Метод оценки точек вариантов использования; 5. COCOMO (COnstructive COst MOdel) – модель издержек; 6. Генетическая модель оценки; Это математические методы, но я не видела ни одной компании, которая бы использовала их. Их основные минусы: 1. Они занимают много времени 2. Они трудоемкие 3. Они не дают результат. Почему? Потому что планирование должно быть гибким. Потому что сложно рассчитываемый план может нарушиться только из-за того, что кто-то не пришел или заболел. Пересчитывать? Вряд ли! Поэтому мы поговорим о методах, которыми вы уже пользуетесь, но не всегда осознаете! Наиболее простые в использовании: 1. ПВН (пальцем в небо), или метод проб и ошибок; 2. Специальный метод; 3. Аналогии и рекомендации экспертов; 4. Структура декомпозиции работ; 5. Процентное отношение к разработке; 6. Метод процентного распределения; Наше любимое – метод проб и ошибок. Все мы им часто пользуемся. Нужно понимать, чем он отличается от метода экспертных оценок. Если вы уже работали с проектом, он вам знаком и что-то тестировали, то вы уже делаете как эксперт. Если вы не делали это для тестирования, не работали с проектом и никогда не сталкивались с этой областью или заказчиком, то вы оцениваете полностью пальцем в небо. В этом большая разница. Мой любимый метод – структура декомпозиции работ. Это наименее трудоемкий, но формализованный метод для оценки. Что подразумевается? Вам нужно просто дробить вашу работу до той минимальной, которую очень легко оценить и даже учиться этому не нужно. Например, протестировать авторизацию. Буква «о» не проходит – можно сходу сказать 5 мин для себя. Это минимальная единица. Такое может определить даже человек, который работает всего пару месяцев. Плюс в таком методе – вам сложнее что-то забыть. Обратите внимание на диаграмму, здесь приведена статистика для сайтов от полугода – года. Программирование занимает от 20% до 40% разработки, это не тоже самое что 20-40% от проекта, это в среднем 15% от проекта. Тестирование никогда не занимает 15% от продукта. Если у вас не закладывают столько время для тестирования, то закладывайте хоть сколько-нибудь. Желательно выяснить статистически какой процент от проекта занимает тестирование и это применимо, если у вас стабильные версии релизов, постоянный объем продуктов один и тот же. Решение проблемы 1. Обучаем новичков:
2. Создаем универсальный Estimation Check List для портфеля проектов; 3. НЕ ругаем за ошибки в оценках; Для этого не нужно ходить на тренинги, как-то же оцениваете, запишите свои оценки и посмотрите, сколько это заняло времени реально. Помогают разные трейлеры/приложения, которые помогают записывать время. Или примерно в днях запоминайте. Когда вы сами поймете, сможете научить свою команду. Очень важно, когда вы пытаетесь уговорить команду оценивать, очень важно не ругать ее за эти оценки. Чаще всего люди не хотят оценивать, потому что боятся, что вы можете к ним придраться. Пока не зафиксировано все, они вам ничего не должны. Объясните своим сотрудникам, что любая неправильная оценка лучше чем ее отсутствие. Иначе вы как тест-лид не знаете ничего, не можете соотносить ресурсы и так далее. Хвалите, если они даже ошиблись. Скажите: «Ты ошибся в 2 раза. а я ошибся в 3!». Но ошибки не пропускайте, сядьте и сравните, сколько запланировано было, сколько времени потребовалось в реальности, где был big fail, и на что потребовалось больше всего времени. Самое важное – этот анализ, когда человек сам осознает, что он не учел. Тут как раз и нужна декомпозиция работ, чтобы ничего не забыть. Тут нам может помочь – «незабудка для тестировщика». 1. Ознакомление/исследование; 2. Ревизия спецификации; 3. Написание тестовой документации (чек-лист, тест кейсы); 4. Подготовка данных; 5. Выполнение тестов + рекомендации от программистов; 6. Буфер/Риски; Первое, что мы сделали повесили это каждому на рабочее место. Она подходит для оценки баги и оценки задач. Она верхнеуровневая и подходит для глобальных задач. И вот это уже для тест-лидов и экспертов, которые оценивают очень большие задачи, особенно, когда до завтра нужно оценить проект из крупных 20 задач. Вы не пойдете ко всем тестировщикам, вы пойдете к первому опытному и спросите: «Давайте оценим – сколько этой займет». Такой Istimation чек-лист (чек-лист по оценке), чтобы ничего не забыть. Для каждого проекта он свой. Накидайте список всех видов и типов тестирования, которыми вы пользуетесь, потому учтите, на что вы тратите время – время на анализ требований, общение с клиентами, программистами, на документирование, создание тест-кейсов, тест-планов. А потом проставляйте в чек листе, что вам нужно и не нужно. Следующая проблема – мы не хотим оценивать. Что делать с этими людьми, а вам очень нужно? Сделайте все оценки сами и используйте их для планирования. Повышайте свои скилы + это интересно знать, насколько хорошо, вы можете прогнозировать. Смотрите на задачу и оценивайте, чем лучше вы оцениваете, тем важнее вы для вашего тест-лида. Удивите свою команду и покажите, что вы можете предсказать то, что команда не знает! Давайте примем для себя, что планирование – это оптимальное распределение ресурсов, кроме оценки. Без оценки – планирование не имеет смысла. Планирование – оптимальное распределение ресурсов для достижения поставленных целей, совокупность процессов, связанных с постановкой задач и действий в будущем. (с) Википедия. Важно кто выполняет оценки. На вас и вашего тест-лида, менеджера и продакт менеджера очень сильно влияет неопределенность, вот эти все факторы влияют на время завершения проекта. Вы скажите, как я как тест-лид, отвечаю за финансы? Все очень просто. Если вы включите 4 тестировщика в проект, то зарплату надо платить четверым, если троим, то соответственно, меньше. Это банальный уровень, но вот если ваша компания заключает договора о штрафах за просроченный проект, то там финансовые показатели очень большие. Поэтому каждый из этих показателей влияет на время окончания проекта. Поэтому каждый из этих показателей влияет на время окончания проекта. И в таких условиях хотелось бы иметь что-то, что помогало бы отвечать на такой сложный вопрос. Тут нам поможет сетевой график работ и Диаграмма Ганта.
Вот на слайде сейчас график работ, который состоит из периода и задач. Это диаграмма для визуализации ваших работ, чтобы не нужно было всматриваться в табличку. Удобнее посмотреть на красивую диаграмму, с которой проще работать. Все это вместе поможет нам создать метод критического пути. Есть теория графов – это метод прохождения пути с наиболее тяжелыми весами. В данном случае «весы» – это оценки. Путь состоит из работ. Если аксимировать это на как управление проектами, то это будет набор задач от начала проекта до конца проекта, которые не имеет запаса по времени. Красненькое – это критический путь. Если вы нарушите сроки выполнения этих работ хоть на час, то релиз задержится на час, если на 2 дня, то значит на 2 дня задержится релиз. Зачем это нужно? Вам важно понимать какие задачи лежат на этом пути, потому что приходит к вам на середине пути тестировщик просит выходной, но оказывается он выполняет работу на критическом пути и от того, что его не было, релиз сдвинулся на 1 день. Метод Критического пути дает нам возможность предвидеть наступление таких критических работ, осознавать, что происходит в проекте. Давайте опишем основные шаги, которые мы делаем для составления плана. 1. Решить, что будем тестировать; 2. Сделать оценки; 3. Заполнить сетевой график работ, построить Диаграмму Ганта; 4. Проставить логические связи между работами; 5. Назначить ресурсы; 6. Определить Критический путь; 7. Проставить ресурсные связи; 8. Оптимизировать ресурсы (количество исполнителей); Это очень важно понять. Зачастую именно такой график позволяет понять взаимосвязь ресурсов и невозможность выполнения 400 часового плана сотней тестировщиков за 4 часа. Время тратится на подготовку данных, изучение проекта, анализ требований, общения с программистами. Варианты графиков в различных программах. Все ли мы учли? Если нет, то что осталось и где это учитывать? Не забываем: Отпуска, праздники; Баги
Буфер
Риски; Исполнители;
Если версия не первая; Менеджер это учитывает в своем буфере. Туда может войти и то, что нет тестового окружения, программист использовал другую технологию, время на заведение багов. Часто встречается проблема, когда проект для тестирования уже отдается без буфера, поэтому рассчитывайте буфер для программистов и тестировщиков отдельно, тогда будет ясно, кто его использовал. Те, кто уже планирует, обратите внимание, что нельзя применять Диаграмму Ганта для группы проектов, если у вас общие ресурсы. Если у вас общий архитектор, и он нужен на все проекты, то такое может не сработать. Его преимущества, когда у вас ресурсы не пересекаются сразу во всех проектах. Их много, так вы можете управлять своими ресурсами, понимать, где они находятся. Но вам важно, имеет ли это смысл для вашей компании. Преимущества
Если заказчик заинтересован в использовании наглядных графиков, то вы можете говорить о том, что так вам легче соблюдать обязательства перед ним, у вас будет четкий аргумент. Если заказчик заинтересован:
Это будет полноценное время для качественного тестинга, и вы отдадите такой продукт, за который не будет стыдно. Если заказчик НЕ заинтересован:
Вы можете повышать качество, тратить время на совершенствование вашей команды, пригласить кого-то из тест-клуба, внутренний проект по обучению, наконец, заняться документацией. Нужно очень четко это контролировать. Сколько по времени занимает модификация этого плана? Это гибкий план, поэтому изменения должны производиться раз в неделю. Если это автоматизировано, то ваше время будет уходить только на оптимизацию. В компаниях, где этот процесс не автоматизирован, выясняют один вопрос: «Сколько времени осталось на задачу?». Им не интересно, что помешало, важно сколько времени осталось, и как поменять план. Следовательно, если у вас 20 тестировщиков, то придется менять 20 строк. Ну и выводы: 1. Планирование – совокупность процессов по:
2. Оценка трудозатрат и оценка сроков – не одно и тоже; 3. Большинство этапов можно автоматизировать. Планирование это здорово, так как все можно автоматизировать, помните, что планирование сроков т оценка трудозатрат не одно и тоже. |