Автоматизация тестирования при разработке ПО
Журнал: Научный журнал «Студенческий форум» выпуск №16(109)
Рубрика: Технические науки
Научный журнал «Студенческий форум» выпуск №16(109)
Автоматизация тестирования при разработке ПО
Одно из самых ранних упоминаний автоматизированного тестирования встречается во всем нам известной книге Ф. Брукса «Мифический человеко-месяц». Ф. Брукс считает, что на тестирование следует выделять ¼ от времени, выделенного на весь проект. Так ли это на сегодняшний день? Что изменилось со времени написания так любимой нами книги?
Существующие на сегодняшний день средства разработки дают возможность разработчикам достаточно быстро справиться с задачей создания каркаса приложения, но вопрос качества ПО остается всё так же актуален. Пользователь программного обеспечения хочет получить качественный продукт и гарантию качества, а разработчик обязан максимально обеспечить выполнение этих условий. Добиться этого без тестирования невозможно. С развитием автоматизации тестирования, с несколько иными, современными подходами, времени на тестирование, конечно, можно затратить несколько меньше, чем ¼ от времени, взятого на разработку всего проекта, однако объём работ и качество тестирования никак не должны быть уменьшены, а, скорее, увеличены. Ведь с каждым днём системы становятся всё сложнее и требуют всё больших интеграций, соответственно всё более качественного тестирования. Итак, что же такое тестирование и автоматизация тестирования. Г. Майерс даёт следующее довольно широкое и объемное определение понятию «тестирование»: «Тестирование ПО – это процесс выполнения программы с целью обнаружения ошибок». Тогда автоматизация тестирования – это процесс выполнения программы с целью обнаружения ошибок автоматически с помощью специализированных инструментов. Т.е. автоматизированное тестирование функционально идентично ручному тестированию, однако выполняется программой, но не человеком.
При регулярном тестировании на этапе разработки программного обеспечения у разработчика будет гарантия того, что приложение работает именно так, как он рассчитывает, особенно при применении практики continuous delivery. Но на сколько может затянуться работа над проектом сложной многофункциональной системы, и во сколько могут увеличиться затраты, если при каждой интеграции проводить ручное тестирование? Кроме этого, регулярное и широкое использование автоматического тестирования позволяет построить гибкую слабосвязанную архитектуру, что даст хороший плюс при сопровождении, модернизации и консолидации программного обеспечения.
Таким образом, можно сделать вывод, что основными целями автоматизации тестирования есть: снижение и оптимизация затрат на тестирование, сокращение времени на разработку и выпуск релизов, при этом не теряя в качестве, уменьшение количества ошибок, минимизация рисков и улучшение архитектуры. В чём же преимущества автоматизированного тестирования по сравнению с ручным тестированием? А это: снижение временных затрат без потери качества, исключение «человеческого фактора», снижение затрат на поддержку скриптов, автоматизация рассылки и сохранения отчётов, возможность использования человеческих ресурсов во время проведения тестов в других задачах, возможность распределения нагрузки на ресурсы. Однако, также стоит учитывать и недостатки автоматизации: повторяемость тестов, затраты на поддержку при изменении ПО, затраты на разработку автоматизированных тестов, стоимость инструментов для автоматизации, пропуск ошибок, на которые тест не запрограммирован, трудоемкость автоматизации. Отсюда можно сделать вывод, что автоматизация оправдана и необходима при работе над долгосрочными проектами с частыми релизами. Основными этапами автоматизации тестирования при разработке программного обеспечения являются: подготовка, проведение тестирования и отчёт. Автоматизацию тестирования условно разделяют на две основных категории: тестирование на уровне кода (unit testing) и тестирование пользовательского интерфейса (GUI-тестирование). Также разделяют направления автоматизации тестирования: веб-сервисов, мобильных приложений, десктопных приложений, баз данных, веб-приложений.
Для достижения высокого результата организация и проведение процесса автоматизации должна проходить системно и планомерно, важно подобрать продуманную стратегию тестирования. Повысить эффективность автоматизации позволит разработка тест-планов и тест-кейсов. В самом начале разработки важно четко определить функциональные и нефункциональные требования к ПО и иметь эталоны для сравнения текущего функционирования системы с эталонным.
Автоматизацию тестирования часто представляют в виде пирамиды, в основании которой лежит модульное тестирование, на следующем уровне – интеграционное тестирование, уровнем выше – приемочное тестирование, выше – тестирование пользовательского интерфейса и на вершине пирамиды – мануальное тестирование. При автоматизации тестирования необходимо использовать стандарт IEEE 829-1983, который описывает планирование, спецификацию тестов и отчёты и пр. Безусловно, для автоматизации тестирования при разработке ПО инструменты автоматизации играют ключевую роль, т.к. их применение позволяет достигнуть максимальных результатов. Выбор инструмента зависит от объекта тестирования и требований к тестовым сценариям. Сегодня предлагаются как коммерческие инструменты, так и открытое ПО. Среди открытого ПО часто выделяют такое популярное решение как Selenium, которое представляет собой кросс-платформенный фреймворк для автоматизации тестирования веб-приложений и сайтов. Katalon Studio – это кросс-платформенный инструмент автоматизации, который подойдёт для тестирования мобильных приложений, веб-сервисов и веб-приложений. Среди платных инструментов можно выделить кросс-платформенный UTF, который позволяет тестировать веб-сервисы, сайты, API, графический интерфейс мобильных, десктопных и веб-приложений. Так же довольно интересный и эффективный инструмент автоматизации – IBM Rational Functional Tester. Он позволяет тестировать приложения, написанные на различных языках программирования. Одна из интересных функций данного инструмента – это возможность записывать и визуализировать действия пользователя. Конечно, этот список не исчерпывающий, важно подобрать инструмент, который максимально отвечает требованиям к тестированию.
На ранних этапах развития компьютерных систем программирование и тестирование проводилось без помощи специальных инструментов. Однако, увеличение функциональности, сложности и масштабности проектов сделало ручное тестирование менее эффективным и более сложным и дорогим. Следующим логичным шагом в тестировании при разработке программного обеспечения и становится автоматизация.