Как оценить время на тестирование

Оценка трудозатрат в тестировании

Как правильно оценивать время на тестирование?

Оценка трудозатрат на тестирование — это время в часах, днях, необходимое для проведения работ по тестированию программного обеспечения.

Оценка нужна для определения трудозатрат по времени, которое необходимо для того, чтобы в полной мере провести все работы по тестированию программного продукта.

Оценка время — один из трех показателей, влияющих на качество выпускаемого продукта

Оценка времени на тестирование состоит из различных аспектов, таких как:

Если с 1-6 пунктов все более-менее прозрачно, то с риски — это отдельная проблема, требующая индивидуального анализа на каждом проекте.

Важно понимать специфику проекта и учитывать риски, которые могут сработать.

Для этого можно составить матрицу рисков, примерно оценить важность каждого риска, чтобы понимать, насколько сильно он может отклонить нас по времени от конечной цели.

Абстрактный пример матрицы рисков

Также отмечу, если оценка работает на одном проекте, то на другом проекте она может быть совершенно не применима.

Менеджеров в команде интересуют сроки поставки готового функционала на продуктивный стенд (заказчику).

Какие перекосы по оценке времени могут быть в команде:

Случай 1. Разработчики пишут код быстрее, чем тестировщики успевают тестировать код. В данном случае может возникнуть простой у разработчиков и большая нагрузка на тестировщиков. Эта ситуация встречается на большинстве проектов, особенное если в команде тестирование меньше человек, чем в команде разработчиков или не соблюдается баланс на 2 разработчиков 1 тестировщик. В данном случае необходимо увеличить трудозатраты по тестированию.

Случай 2. Тестировщики простаивают без новых задач на тестирование, так как разработчики занимаются написанием нового кода или исправлением дефектов. В данном случае можно направить силы команды тестирования на проведение регрессионных тестов или написание тестовой документации.

Случай 3. Аналитики не успевают писать техническую документацию по разработке системы, тогда простаивают и разработчики, и тестировщики. Здесь необходимо увеличить ресурсы по аналитике, так как без требований вся команда будет простаивать.

Случай 4. Приоритеты по задачам постоянно меняются, команда переключается с одной функциональности на другую, в итоге не выпуская ничего из запланированного на текущую итерацию. Необходимо четко сосредотачиваться на том, что важно для пользователя, приступать к новым задачам только после окончания текущих.

Оценку по тестированию можно и нужно формировать по различным видам тестирования:

Примеры оценок по видам тестирования:

Какую пользу приносит проекту оценка по тестированию:

Важно также понимать, что оценка не обязательно может выражаться в часах или раб.днях. Например, в методологии разработки Scrum применяется оценка в story-point с планнинг покером.

Источник

Оценка тестирования: как высчитать точное время на тестирование системы или «Когда тесты будут готовы?!»

Как оценить время на тестирование

Доброго времени суток всем! Меня зовут Денис, я руководитель службы тестирования в «БАРС Груп». Это мой первый пост на Хабре.

Прочитав очень много интересных статей и почерпнув оттуда много полезной информации, захотелось что-то дать взамен. Тогда я начал анализировать темы: одни были уже озвучены, другие слишком просты («как войти в IT?»). P.S. ничьи чувства задеть не хотелось 🙂

Как высчитать время на тесты – проблема и решение

Как руководитель службы, я постоянно сталкиваюсь с вопросом от менеджеров: «Когда будет готово?» или «Сколько времени надо на тестирование?». Казалось бы что тут сложного, бери оценку по предыдущему проекту и плюс-минус тоже самое… но нет. Я понял, что задача не тривиальна и требует детальной проработки. И хочу поделиться ее решением.

В нашей компании много бизнес-центров и в каждом свой подход к разработке — преимущественно это Kanban и Scrum. Поэтому выделены команды автоматизаторов-тестировщиков, которые синхронизированы с командой разработчиков с их методологией.

Из-за разных подходов по управлению разработкой возникают сложности в единообразии формирования задач и планирования. Применение Kanban и Scrum в чистом виде не давало ответа, сколько времени уйдет на тестирование. В проектных решениях приходится каждый раз проводить оценку новому функционалу и покрытию его тестами. У меня на это уходило много времени на расчеты. Поэтому я решил взять методы оценки временных затрат по разработке ПО (на автоматизацию тестирования) за основу и модифицировать под свои реалии. В основу лег принцип средневзвешенной оценки и подсчет на основе типизирования. В качестве оценок будут выступать временные показатели по автоматизации типовых элементов системы, а в качестве весов — уровень подготовки специалистов. При формировании значений весов я выбрал точность оценки при выполнении задачи, т. е., чем опытнее специалист, тем меньше погрешность оценки. Получились следующие значения:

Как оценить время на тестирование

Для подсчета взял два тестирования – функциональное и UI тестирование, потому что они суммарно составляют около 85%.

Для получения итогового результата нам нужно собрать средневзвешенную оценку по каждому элементу в более крупный объект для расчетов — категорию.

UI тестирование

При тестировании UI требуется эмулировать работу пользователя через framework Selenium.Webdriver. При использовании такого подхода существуют сложно конструируемые элементы на формах: вкладки, документы с онлайн редактированием, огромные гриды со строками, древовидная структура и т. д. Помимо этих элементов есть еще факторы, которые влияют на время разработки тестов:

Как оценить время на тестирование

Как оценить время на тестирование

Как оценить время на тестирование

В итоге я получил следующие результаты, которые представил в таблице:

Как оценить время на тестирование

Функциональное тестирование

Для функциональных тестов ситуация аналогична UI — выделены категории для систематизации кейсов. Помимо REST сервисов стоит сказать и о SOAP, он будет аналогичен 3 категории REST.

Интеграционное тестирование подразумевает тестирование нескольких методов в одном сервисе, для примерной оценки мы взяли наличие 5 методов из расчета на 1 сервис.

Как оценить время на тестирование

Как оценить время на тестирование

Как оценить время на тестирование

Аналогично UI таблице:

Как оценить время на тестирование

При интеграционном тестировании происходит проверка работы сервисов, построенных как на REST, так и на SOAP. При проектировании сервиса количество используемых методов внутри может разным. Для расчетов мы взяли среднее значение в 5 методов.

Как оценить время на тестирование

При таком подсчете временных затрат на проект процент попадания в эту оценку составил 81.

Вместо заключения

Чтобы провести подсчет первый раз, понадобилась неделя плотной работы. Поэтому оценку делал уже после проведения тестирования и затем сравнил результаты с реальными временными затратами.

Основную работу достаточно проделать один раз и в дальнейшем считать уже по готовой «формуле». Но нужно учитывать факт, что уровень сотрудников растет, поэтому необходимо понимать вес каждого работника, чтобы знать, нужно ли пересчитывать показатели.
Все выше описанное является моим опытом и не претендует на истину.

Источник

Как посчитать время на тестирование

Как оценить время на тестирование

… Или, другими словами, как посчитать время на тестирование так, чтобы все поверили? Ведь на самом деле у нас обычно — две цели. Первая — посчитать время так, чтобы не ошибиться и правильно распределить ресурсы — скорее всего, поначалу сделать это хорошо все равно не получится. Вторая цель более реальна: посчитать время на тестирование так, чтобы доказать кому-то, что вам нужны еще люди в команде, объяснить, почему вы не успеваете и т. д. Как ни странно, после того, как раз 50 сделаете второе, то и первое будет получаться!

Давайте теперь посмотрим, как считать время на тестирование, на конкретных примерах.

Случай 1: «Вот ТЗ, сколько времени уйдет на написание тестовых случаев?»

Допустим, приходит нам приходит объемная папка с хорошо прописанным техническим заданием (ТЗ). Нас спрашивают, сколько времени уйдет, чтобы написать тестовые сценарии (ТС) ко всему этому делу.

Прежде чем мы сможем ответить на этот вопрос, нам хорошо бы знать:

От ответов на все эти вопросы зависит, сколько времени уйдет на написание одного позитивного тестового случая — T1. Также стоит учитывать время на написание одного негативного ТС (он будет обозначаться как T-1). Мой опыт говорит, что негативные ТС обычно пишутся дольше — также их обычно нужно больше. Конечно, здесь бывает по-разному, но мне кажется, что, чем лучше мы знаем предметную область, чем лучше разбираемся в приложении, чем лучше понимаем, где и как оно может упасть, тем больше у нас будет негативных ТС. Если у вас, например, на три позитивных ТС приходится один негативный, возможно, вы недопонимаете приложение. Если на один позитивный вы можете придумать 500 негативных ТС, это — хорошая работа. У меня соотношение позитивных и негативных ТС — обычно от ½ до 1/5.

Т. ч. нам нужно посчитать время на написание позитивного ТС, прикинуть соотношение позитивных и негативных, и посчитать время целиком.

Варианты оценки:

X тестовых случаев на страницу, T1 минут на ТС, Y страниц (T-1 – негативный ТС)

Написание тестовых случаев Y времени от времени на тестирование

Как оценить время на тестирование

Пример

Давайте теперь посмотрим, как работают эти методики, на конкретном примере. Например, мы пишем социальную сеть для домашних питомцев. У нас есть ТЗ на эту соцсеть, всего 47 страниц. Допустим, мы его разбили на однородные части. Вот что мы в итоге имеем:

Комментарий: мы потратили час на аккаунт хозяина, успели покрыть половину страницы, а этих половин у нас 10 (1×10). Мы потратили 3 часа на профиль животного, за три часа покрыли одну страницу (3×15). Мы потратили 6 часов на покрытие одной страницы фото/видео (так много потому, что тут, допустим, всё очень сложно). 2 часа потратили на друзей и сделали за это время пол страницы (2×16). 1 час потратили на сообщения, сделали за час пол страницы (1×10). Нефункциональные требования мы тут решили смотреть не по страницам, а по самим требованиям: потратили 3 часа на одно требование (3×12). Всё это заняло у нас 16 часов — значит, за 2 дня мы оценили время в 205 часов.

Оценки у нас не сходятся, но это нормально — по крайней мере, мы сумели посчитать примерно. А если у нас достаточно времени на оценивание, можем сделать оценку несколькими способами.

Считаем время при использовании Agile

Теперь поговорим о гибких методологиях разработки, когда нет технического задания. Тут не очень понятно, как оценивать, но все же можно выделить кое-какие подходы. Например, можно:

Отступление для QA-менеджеров

Теперь небольшое отступления для QA-менеджеров, менеджеров проектов. Все действия по созданию и по запуску тестовых случаев мы можем разделить на следующие компоненты:

СОЗДАНИЕ ТС

ЗАПУСК ТС

Подготовка среды (TCenv)

Выполнение предусловий (TRprec)

Подготовка структуры ТС (TCstr)

Запуск регрессионных тестов (TRreg)

Создание ТС для готовой функциональности (TCbase)

Запуск тестов для новой функциональности (TRnew)

Создание ТС для новой функциональности (TCnew)

Сборка новых конфигураций (Cnew)

Автоматизация созданных тестов (TCa)

Количество конфигураций (Qconf)

Изменение созданных ТС (TCchng)

Повторный тест после исправления багов (TRrtst)

Итог: ΣTC = TCenv + TCstr + TCbase + TCnew

+ (TCbase + TCnew) x TCa + TCchng

Итог: ΣTR = (TRprec + TRreg + TRnew) x Qconf + TRrtst x Qconf + Cnew

Сколько всего времени тогда занимает тестирование, мы видим в формулах внизу таблицу — в них все понятно и без комментариев.

Случай 2: «Вот кусок функционала, сколько времени уйдет на тестирование?»

Сколько времени уйдет на тестирование той или иной части функционала? Чтобы это прикинуть, есть разные способы:

Как оценить время на тестирование

Как оценить время на тестирование

Что в данном случае важно помнить? Что новый функционал может снова затребовать время на подготовку среды. Важно помнить о существовании коэффициента на знакомство с системой: больше времени на тесты уходит, если прогоняешь их в первый раз, чем если ты их прогоняешь второй или третий раз. Но если второй раз наступает через месяц, то ты его всё равно прогоняешь, как будто в первый раз — впрочем, это у каждого по-своему.

Случай 3: «Почему вы ничего не успеваете?!»

Следующий, весьма распространенный вопрос, который задают тестировщикам: «а что это вы вообще делаете, почему вы ничего не успеваете, почему вам нужно помогать с автоматизацией, почему вы не хотите, чтобы мы каждый день выпускали новые версии — ведь багов-то новых нету. »

Чтобы показать, чем мы занимаемся, можем для каждого проекта выписать все-все задачи, которые выполняются за один спринт, и расписать их по дням: посчитать, сколько времени уходит на каждую задачу в тот или иной день. Так можно увидеть среднюю, максимальную и минимальную загрузку.

Пример такой таблицы:

Как оценить время на тестирование

Когда я её сделал, я увидел, что не всегда нагрузка может быть оптимально распределена — иногда загрузка большая, а иногда пол дня вообще нечего делать. Это позволяет сделать определенные выводы и как-то оптимизировать процесс, распределить нагрузку — например, какие-то вещи делать заранее, даже если это не совсем согласуется с логикой процесса. Например, если в начале спринта у нас много свободного времени, мы можем уже начать писать пользовательские истории к следующему спринту. Хоть мы и не знаем структуру следующего спринта, все же мы, скорее всего, можем предугадать, что вот эти вот две-три истории в него точно войдут — обычно они самые критичные, обычно их все равно приходится переписывать, поэтому это хорошее упражнение.

Получили загрузку в часах по дням. И если получается, что каждый день нужно 24 часа тестирования, а у нас всего два человека… Значит, однозначно нужен третий тестировщик!

Случай 4.1: «Выпускаем сборку в пятницу, а то и раньше — так сколько вам нужно времени на тестирование»?

В таком случае процесс тестирования строится так:

Тесты на полную регрессию по платформам проводятся в этом случае следующим образом (Cr, FF и т. д. здесь — разные платформы, в данном случае — браузеры):

Источник

Тестирование ПО

Алгоритм оценки времени на тестирование

Как оценить время на тестированиеОценка времени на работу – сложная задача и многое тут зависит от опыта. Однако, используя необходимые принципы и подходы можно оценить (хотя бы приблизительно) время на выполнение даже новой и неизвестной задачи. Существует множество различных методов оценки от применения математических моделей до комбинирования мнений экспертов. В этой статье я опишу алгоритм оценки, который сформирован на моем опыте работы в QA.

Как оценить время на тестирование

Предлагаю следующий алгоритм для оценки трудозатрат на тестирование ПО:

1. Декомпозиция требований и определение количества тестов, чтобы их покрыть

2. Определить среднее время на разработку и выполнение 1 теста

3. Определить количество возможных ошибок и время на работу с 1 дефектом

4. Учесть возможные дополнительные затраты времени и риски

5. Получить суммарную оценку, с учетом предыдущих шагов

Далее рассмотрим каждый шаг подробно. При этом в качестве примера возьмем функциональность, для которой по алгоритму будем определять время на тестирование. В качестве функционала рассмотрим простую web форму со строкой ввода, которая позволяет складывать 2 числа:

Требования к системе следующие:

а) Должны суммироваться 2 числа от 0 до 100

б) Для сложения между числами необходимо ввести знак «+»

в) Результат сложения должен отображаться под строкой ввода после нажатия «Calculate»

г) При некорректном вводе и попытке вычисления, под строкой ввода должно появляться сообщение «Ошибка вычисления»

Для упрощения примера мы не будем рассматривать и проверять как и где запускается эта форма, не будем тестировать браузеры, настройки системы и сети, взаимодействие с базой и т.п. В данном примере мы проверяем только ввод\вывод значений и выполнение операции сложения.

Проведем оценку времени на тестирования для нашего примера:

1. Декомпозиция требований и определение количества тестов, чтобы их покрыть

Как оценить время на тестированиеИтак, начнем с анализа и декомпозиции требований. Как это обычно бывает, не все требования явно прописаны в ТЗ, определенная часть условий будет являться следствием перечисленных. Что в итоге мы фактически должны проверить? Ниже я сразу буду указывать краткое описание, какие требования мы проверяем, какие для этого использует тесты и количество необходимых тестов:

2. Определить среднее время на разработку и выполнение 1 теста

Как оценить время на тестированиеКоличество тестов мы получили, теперь нужно определить сколько времени потребуется на то чтобы:

б) Выполнить проверку по тест-кейсу

3. Определить количество возможных ошибок и время на работу с 1 дефектом.

Как оценить время на тестированиеНа этом этапе нам необходимо спрогнозировать:

а) С каким примерно количеством ошибок мы можем столкнуться

б) Сколько времени необходимо на регистрацию дефекта

в) Сколько времени уйдет на проверку исправлений

4. Учесть возможные дополнительные затраты времени и риски

Как оценить время на тестированиеОценка этого шага очень сильно зависит от специфики работы\системы\процессов и будет отличаться для каждого частного случая. Поэтому здесь я укажу только варианты направлений и областей, где может теряться дополнительное время:

Допустим, что для нашего примера мы заложили следующее дополнительное время:

Итого, получаем дополнительно 24*3=72 минуты

5. Получить суммарную оценку, с учетом предыдущих шагов

Как оценить время на тестированиеИтак, теперь посмотрим, какие оценки у нас получились на каждом шаге:

В сумме получается: 480+1920+100+200+72=2772 минуты или 46 часов. При этом к общей сумме уже можно не прибавлять какие-то дополнительные риски, т.к. мы их учли на отдельных шагах.

Вот так на проработку простейшего функционала запланирована целая рабочая неделя! Хотя на первый взгляд и может показаться, что работы там максимум на 1 час. Но когда мы приступим к реальной задаче, начнем прорабатывать требования, оформлять тест-кейсы и дефекты, станет очевидно, что оценка в 46 часов гораздо ближе к действительности.

Источник

Оценка сроков на разработку и тестирование задачи (не нужна)

Я в тестировании 12 лет, работал в Naumen и Яндексе. Сейчас руковожу отделом тестирования из 150 человек в Контуре и продолжаю работать тестировщиком в одной из команд.

После полугодовых performance review менеджеры из разных команд рассказали, какие цели поставили своим тестировщикам. У каждого пятого была такая: «Научиться оценивать сроки на тестирование задач». Часто такой «оценки сроков» хотят не только от тестировщиков, но и от разработчиков.

Как оценить время на тестирование
Оценка сроков в 95 % случаев. Спасибо, xkcd.

Я считаю абсолютно вредной практику, когда исполнитель оценивает сроки на выполнение отдельной задачи. Это напрямую связано с отсутствием системного образования и низкими требованиями к менеджерам.

Сейчас объясню, как это работает.

О трудах классиков

Максим Дорофеев — Эффект выпрямления сроков

Цитирую по книжке «Джедайские техники», хотя можно было и закон Паркинсона процитировать:

К нам приходит человек, ставит задачу и спрашивает, сколько времени может занять ее выполнение. Оценивая задачу, мы, конечно же, хотим назвать тот срок, к которому точно успеем, а так как многое может случиться (и мы подозреваем, что что-то наверняка случится), мы закладываем в оценку некий запас времени.

Вместо того чтобы сразу же приступить к выполнению задачи, мы «разбираемся со срочным», так как «эта задача пока не горит» — у нас же есть вышеупомянутый запас.

Задача начинает «дымиться», и мы приступаем к ней. Если ничего не случилось, то мы успеваем вовремя, а вот если что-то случилось… Резерв мы на это «что-то» уже потратили и в итоге опаздываем.

В итоге любой названный в качестве дедлайна срок становится сроком, раньше которого задача выполнена не будет. К особо неприятным последствиям это приводит при командной работе, когда для выполнения одной задачи или проекта требуется сотрудничество разных специалистов и разных отделов.

Как оценить время на тестирование
Человек как выпрямитель (и диод) — иллюстрация из «Джедайских техник». Видео тоже есть.

Том Демарко — Человеческий фактор

В пятой части первой главы есть ссылки на исследования о зависимости производительности от того, кто выполнял оценку сроков.

Как оценить время на тестирование

Коротко: сам факт оценки влияет на сроки в худшую сторону примерно на 40 %.

Рекомендую прочесть. Все факторы, перечисленные в пятой главе, релевантны до сих пор.

Деминг и Нив — Эксперимент с красными бусинами

За последний год я дважды слышал от менеджеров: «Мы научились выдерживать сроки по оценкам задач, теперь такой-то программист или тестировщик совсем не нарушает сроки, которые назвал».

Я считаю, это крайне серьезная проблема, так как это означает, что этот программист или тестировщик системно и сознательно завышает сроки, работает на расслабоне и лжет менеджеру. В мире присутствуют вариации и ненарушение оценок конкретных задач означает, что оценка такого человека всегда правее кривой распределения фактического срока работы.

Упомянутые в заголовке авторы говорят, что единственно верный способ оценки сроков — статистический. Должен оцениваться пакет типовых задач. «У нас все задачи разные»? Это ложь. На промежутке в год будет уже не очень много разных задач. Как правило, такое заявление является признаком отсутствия рефлексии над процессом и невыполнения упражнений: декомпозиция, MVP, прототипы, стандартизация.

О заказчиках, которые требуют сроки

Во-первых, надо заметить, что чаще всего — и это само по себе забавно — от ответа исполнителя не зависит ничего, потому что сроки уже есть. Менеджер интересуется не сколько времени мы будем делать задачу, а успеем ли мы к заданному сроку и что именно успеем. Это разные вопросы и отвечать на них нужно по-разному.

Как правило, ответом на вопрос «успеем ли мы к заданному сроку» является аналитика и MVP, качественная инфраструктура разработки и размер технического долга, а именно сложность проведения рефакторинга и наличие автоматических тестов на регрессию.

Ещё раз: оценка сроков мешает исполнителю успеть к дедлайну.

Во-вторых, есть серия упражнений в разработке. Не все из них простые. Они напрямую не дают ответ на вопрос «когда фича будет готова». Однако они уменьшают размер поставки, снижают сложность разработки и тестирования и в итоге уменьшают вариативность сроков.

Если команда выполняет эти упражнения, а менеджер квалифицирован, то для ответа заказчикам ему не нужно требовать от исполнителей назвать срок. Если упражнения не выполняются, то скорее всего любой названный менеджером срок будет ложью.

О некомпетентных менеджерах

Очень легко перепутать оценку сроков (когда задача будет сделана) и оценку трудозатрат (сколько нужно времени, чтобы разработать фичу). Оценка сроков, как мы уже разобрались, если не вредна, то по крайней мере бессмысленна. А вот оценка трудозатрат — довольно полезное упражнение.

Необходимость оценить трудозатраты, когда задача будет сделана, заставляет делать перечисленные выше полезные упражнения: главным образом, декомпозицию этой задачи.

Но надо помнить, что оценка трудозатрат в команде с некомпетентным менеджером очень легко превращается в оценку сроков. Тут замешан миллион когнитивных искажений и непонимание, как устроены цепочки производства.

Пример из жизни:
— Сколько времени ты потратишь на эту фичу?
— Полторы недели буду писать и дня три фиксить баги.
— То есть через 3-4 недели будет готово?

То есть разница между «я потрачу на эту задачу день» и «задача будет готова через день» многократна и принципиальна.

Ты учишь жизни, а чего добился сам?

Да, давайте поговорим обо мне и моей команде. Некоторые из перечисленных упражнений мы успешно делаем, какие-то учимся делать. Какие-то нет, и это печально.

Думаю, что мы научились ограничивать недоделанную работу, делать предварительные релизы рефакторинга и отделять важные баги от неважных.

Оценку сроков на тестирование мы делаем так. Делим задачи на мелкие, большие и остальные. Мелких задач примерно половина, их делает дежурный тестировщик в свободное время. Мелкая задача помечена в YouTrack тегом «на час» и делается за один подход (от получаса до двух часов), если не возникли осложнения.

Большие задачи помечены тегом «проект», и по ним сразу понятно, что просто не будет. У каждой большой задачи есть фича-лид, задача которого — сделать так, чтоб были проделаны упражнения из списка выше.

Остальные задачи никак не помечены. Упражнения из списка начинают проделываться, если время работы над ней превышает произвольно выбранную и варьируемую границу в 2 недели.

Если в очередь попала срочная задача, надо всё бросить и делать её. Оценивать не нужно. Впрочем, будет полезно уточнить дедлайн, чтобы понять, с какими дефектами и недоработками можно будет выпустить. Таких срочных задач — меньше десяти процентов.

В последний раз я задерживался на работе по просьбе менеджера, чтобы выпустить срочную задачу, больше двух лет назад. До этого пару раз, в 2015 и в 2016 году.

P.S. Один из наиболее важных навыков в нашей работе — не делать ненужной херни. В том числе не заниматься «оценкой сроков» и самообманом. Чего и вам желаю.

(Подпишитесь на наш канал в Телеграме, там неплохо.)

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *