![image](https://habrastorage.org/webt/3q/br/eb/3qbrebmmh_tlp8ohxvp07he8b6q.jpeg)
Доброго времени суток всем! Меня зовут Денис, я руководитель службы тестирования в «БАРС Груп». Это мой первый пост на Хабре.
Прочитав очень много интересных статей и почерпнув оттуда много полезной информации, захотелось что-то дать взамен. Тогда я начал анализировать темы: одни были уже озвучены, другие слишком просты («как войти в IT?»). P.S. ничьи чувства задеть не хотелось :)
Как высчитать время на тесты – проблема и решение
Как руководитель службы, я постоянно сталкиваюсь с вопросом от менеджеров: «Когда будет готово?» или «Сколько времени надо на тестирование?». Казалось бы что тут сложного, бери оценку по предыдущему проекту и плюс-минус тоже самое… но нет. Я понял, что задача не тривиальна и требует детальной проработки. И хочу поделиться ее решением.
В нашей компании много бизнес-центров и в каждом свой подход к разработке — преимущественно это Kanban и Scrum. Поэтому выделены команды автоматизаторов-тестировщиков, которые синхронизированы с командой разработчиков с их методологией.
Из-за разных подходов по управлению разработкой возникают сложности в единообразии формирования задач и планирования. Применение Kanban и Scrum в чистом виде не давало ответа, сколько времени уйдет на тестирование. В проектных решениях приходится каждый раз проводить оценку новому функционалу и покрытию его тестами. У меня на это уходило много времени на расчеты. Поэтому я решил взять методы оценки временных затрат по разработке ПО (на автоматизацию тестирования) за основу и модифицировать под свои реалии. В основу лег принцип средневзвешенной оценки и подсчет на основе типизирования. В качестве оценок будут выступать временные показатели по автоматизации типовых элементов системы, а в качестве весов — уровень подготовки специалистов. При формировании значений весов я выбрал точность оценки при выполнении задачи, т. е., чем опытнее специалист, тем меньше погрешность оценки. Получились следующие значения:
- «Senior» – 95% точность, коэффициент 1,05
- «Middle+» – 80% точность, коэффициент 1,2
- «Middle» – 70% точность, коэффициент 1,3
- «Junior+» – 60% точность, коэффициент 1,4
- «Junior» – 50% точность, коэффициент 1,5
Далее нам нужно будет перемножить временную оценку tn на соответствующий коэффициент Wn. Наш метод вычисления производится по формуле, где сумма весов не равно 1 (100%).
![image](https://habrastorage.org/webt/pu/3d/ee/pu3deewarxgtxzudhlhm0v2qdy8.png)
Wavg = (w1*t1 + w2*t2 … + wn*tn) / (w1+w2+ … + wn)
Для подсчета взял два тестирования – функциональное и UI тестирование, потому что они суммарно составляют около 85%.
Для получения итогового результата нам нужно собрать средневзвешенную оценку по каждому элементу в более крупный объект для расчетов — категорию.
UI тестирование
При тестировании UI требуется эмулировать работу пользователя через framework Selenium.Webdriver. При использовании такого подхода существуют сложно конструируемые элементы на формах: вкладки, документы с онлайн редактированием, огромные гриды со строками, древовидная структура и т. д. Помимо этих элементов есть еще факторы, которые влияют на время разработки тестов:
- Структура форм (типовая-конструктор или кастомная)
- AJAX запросы (их количество)
Исходя из этого было выделено 3 категории UI форм по их сложности реализации тестами:
1 категория
![](https://habrastorage.org/webt/ac/ch/0n/acch0n89hroparlnvr7ox3dh_h8.png)
2 категория
![](https://habrastorage.org/webt/e7/wn/5r/e7wn5r4enj31lzudh_fnd79zpum.png)
3 категория
![](https://habrastorage.org/webt/jm/cf/km/jmcfkmw4_ueicbsrb-j8cxfq4ss.png)
В итоге я получил следующие результаты, которые представил в таблице:
![](https://habrastorage.org/webt/c3/p9/5b/c3p95bislnw32sdtcf3qtunfe48.png)
Функциональное тестирование
Для функциональных тестов ситуация аналогична UI — выделены категории для систематизации кейсов. Помимо REST сервисов стоит сказать и о SOAP, он будет аналогичен 3 категории REST.
Интеграционное тестирование подразумевает тестирование нескольких методов в одном сервисе, для примерной оценки мы взяли наличие 5 методов из расчета на 1 сервис.
1 категория
![](https://habrastorage.org/webt/gf/v8/y9/gfv8y9ovlfestsjlt7qd8ba3tzo.png)
2 категория
![](https://habrastorage.org/webt/5y/zd/cd/5yzdcdiw86ikd7wrrfzzix_fgn8.png)
3 категория
![](https://habrastorage.org/webt/j7/2h/em/j72hemu9qxsmehrn4uh_e6d2evs.png)
Аналогично UI таблице:
![](https://habrastorage.org/webt/ub/er/hk/uberhkxn7nh4x-ji-38vqxyacya.png)
При интеграционном тестировании происходит проверка работы сервисов, построенных как на REST, так и на SOAP. При проектировании сервиса количество используемых методов внутри может разным. Для расчетов мы взяли среднее значение в 5 методов.
![](https://habrastorage.org/webt/-e/eb/za/-eebzanu09xx1zsmqnhf0ka4h0i.png)
При таком подсчете временных затрат на проект процент попадания в эту оценку составил 81.
Вместо заключения
Чтобы провести подсчет первый раз, понадобилась неделя плотной работы. Поэтому оценку делал уже после проведения тестирования и затем сравнил результаты с реальными временными затратами.
Основную работу достаточно проделать один раз и в дальнейшем считать уже по готовой «формуле». Но нужно учитывать факт, что уровень сотрудников растет, поэтому необходимо понимать вес каждого работника, чтобы знать, нужно ли пересчитывать показатели.
Все выше описанное является моим опытом и не претендует на истину.