http://hawkhouse.ru/wp-content/uploads/2017/06/21-06-17-hawkhouse01-01.jpg		

Автоматизированное тестирование: зачем нужно и сколько стоит?

captcha

Создание идеального программного продукта – это, как правило, не результат озарения разработчиков. Чаще всего это итог упорной работы, в том числе и над ошибками.

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

Что именно скрывается за термином «тестирование»? Эксперт компании Hawk House Integration Алексей Ломаев дает простое определение: «Тестирование представляет собой процесс, позволяющий понять, работает ли продукт так, как задумывалось на стадии формулировки технического задания для разработчиков».

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

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

Нагрузочное тестирование

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

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

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

Конвейерная лента
Автоматизация многократно повторяемых простых операций – стандартная практика не только в IT-индустрии

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

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

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

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

  • Модульное функциональное тестирование – анализируются отдельно взятые элементы (модули) программного продукта, на которые тот разбивается для удобства в процессе разработки.
  • Интеграционное функциональное тестирование – анализу подвергается то, насколько эффективно модули взаимодействуют между собой или со сторонними продуктами.

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

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

Автоматизация тестирования: в каких случаях необходима, а в каких противопоказана?

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

Случай первый

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

Случай второй

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

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

Автоматизация тестирования – это вложение на перспективу

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

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

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

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

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

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

Здание корпорации Microsoft
Гиганты IT-индустрии вроде Microsoft выверяют каждый свой шаг – цена ошибки слишком высока

Разумеется, лидеры рынка, работающие с огромными объемами данных, стремятся по максимуму использовать автоматизацию тестирования.

Заключение

Эксперт компании Hawk House Integration отмечает также, что регулярное и грамотное тестирование не только снижает риск непредвиденных сбоев, но и развязывает руки разработчикам, что позволяет активно экспериментировать в процессе модернизации продукта.

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