Воздействие развития глобальной сети Интернет на человечество не имеет исторических аналогов. Фактически это ознаменовало начало эпохи проникновения технологий, цифровых инноваций во все сферы жизни человека. Вследствие этого программное обеспечение стало неотъемлемой частью повседневной жизни общества на современном этапе [1]. Оно касается миллионов людей в разных сферах, и это в свою очередь требует от него бесперебойной работы, надежного функционирования и генерирования ожидаемых результатов, достичь которых возможно благодаря проведению надлежащего тестирования на различных этапах его создания и функционирования.
Тестирование – это процесс анализа программного средства и документации, которая его сопровождает, с целью выявления несоответствия спецификации и имеющегося продукта для повышения его качества [2]. Необходимо отметить, что тестирование пронизывает весь жизненный цикл программного обеспечения, начиная от его проектирования и заканчивая неопределенно долгим этапом эксплуатации. Вследствие этого перед разработчиками всегда возникают проблемы упорядочения действий, касающихся анализа и оценки продукта, которые должны иметь вид связанного процесса, что позволит рационально распределять ресурсы, а также принимать обоснованные решения относительно начала и завершения процессов проверки.
Обозначенные задачи и проблемы эффективно решаются за счет использования автоматических систем для тестирования программного обеспечения. Их широкая популярность и распространение связаны с тем, что они позволяют снизить затраты на обслуживание и усилия по тестированию, а также дают возможность обеспечить более высокую рентабельность инвестиций для групп контроля качества, стремящихся оптимизировать свои гибкие процессы [3].
Особо широкое применение на сегодняшний день приобрела автоматизация тестирования программ с использованием фреймворков, которые дают возможность тестировщикам комбинировать практики и инструменты для того, чтобы достичь более высоких результатов.
Таким образом, приведенные обстоятельства обуславливают актуальность рассматриваемой проблематики и предопределяют выбор темы данной статьи.
Проблемы автоматизации тестирования программного обеспечения нашли свое отражение в трудах таких авторов как: Бурбин А.В., Полевщиков И.С., Баяндин К.Н., Muccini, H.; Bertolino, A.; Inverardi, P.
Особенности использования алгоритмических моделей знаний для автоматизации тестирования программных продуктов описываются Буйневичем М.В., Гановым Г.А., Израиловым К.Е., Bucchiarone, A.; Muccini, H.
Однако, несмотря на имеющиеся труды и наработки, ряд вопросов в исследуемой предметной плоскости остается открытым и требует более детального изучения и анализа. В частности, нерешенными являются проблемы, связанные с выбором наиболее приемлемой среды тестирования для программы. Также в уточнении нуждаются перспективы развития гибридной среды для автоматизированного тестирования.
Итак, с учетом вышеизложенного, цель статьи заключается в рассмотрении особенностей проведения автоматизированного тестирования программного обеспечения средствами фреймворков.
Фреймворк для автоматизации тестирования — это платформа, которая представляет собой комбинацию программ, компиляторов, функций, инструментов и т.д. Она обеспечивает среду, в которой можно выполнять сценарии автоматизированного тестирования [4]. Преимуществами использования фреймворков в процессе тестирования программного обеспечения являются следующие.
- Возможность повторного использования кода. Поскольку фреймворки поставляются с информацией кодирования, которая необходима для успешного проведения автоматизированного тестирования, ценные данные сохраняются для будущего использования и могут быть повторно применены в любой момент времени. Нет необходимости вставлять коды вручную или переставлять их [5].
- Низкая стоимость. Разработка тестовых ситуаций или примеров стоит достаточно дешево, потому что фреймворки уже имеют установленные правила. Кроме того, поскольку эти коды можно использовать многократно, стоимость и время создания тестовых примеров для новых функций значительно уменьшается.
- Минимальное ручное вмешательство: фреймворки автоматизации работают в соответствии с руководящими принципами. Т.к. максимальное покрытие уже встроено и достигнуто на начальном этапе, для запуска тестов автоматизации требуется очень мало или вообще не требуется вмешательство человека. Если процесс не удался, системы автоматизации могут быть запущены повторно с некоторыми изменениями, но данные остаются постоянными и не требуют дополнительных усилий со стороны отдельного человека или команды.
- Повышенная эффективность. Фреймворки автоматизации тестирования повышают производительность благодаря стандартизации. Она гарантирует максимальное покрытие тестов, поскольку набор кодов с самого начала выполняется стандартным образом.
- Исправление ошибок на ранней стадии. Используя правильные средства автоматизации тестирования, можно реализовать концепцию оценки «со сдвигом влево». Это относится к идее о том, что следует перенести тестирование как можно раньше в жизненный цикл разработки программного обеспечения.
На сегодняшний день существует шесть наиболее распространенных типов фреймворков для автоматизации тестирования, каждый из которых имеет свою архитектуру, а также преимущества и недостатки: линейная система автоматизации; модульная система автоматизации; система тестирования на основе библиотечной архитектуры; структура, управляемая данными; система, управляемая ключевыми словами; гибридная система тестирования.
В таблице сгруппированы достоинства и недостатки этих фреймворков.
Таблица
Достоинства и недостатки фреймворков, которые используются для автоматизации тестирования программ
Название системы | Достоинства | Недостатки |
Линейная система автоматизации |
|
|
Модульная система автоматизации тестирования |
|
|
Система, управляемая ключевыми словами |
|
|
Система тестирования на основе библиотечной архитектуры |
|
|
Структура, управляемая данными |
|
|
Гибридная система тестирования | Гибридная платформа представляет собой комбинацию любого из ранее упомянутых фреймворков, поэтому ей присущи их достоинства и недостатки |
Для усовершенствования процедур автоматизированного тестирования программного обеспечения, снижения временных и финансовых затрат на проведение регрессионного тестирования, автором была разработана и запатентована Автоматизированная система поддержки разработки и тестирования «Testado» [6].
Эта система дает возможность фиксировать действия пользователя и оформлять их в виде тест-кейса, который имеет структурированный вид. Также необходимо обратить внимание на тот факт, что в тест-кейсе указывается перечень осуществляемых шагов, фиксируются входные данные и ожидаемые результаты.
Кратко опишем алгоритм работы предложенной системы.
- Начало работы с системой. На данном этапе разрабатывается и формализуется «план тестирования», который представляет собой файл проекта. В нем содержатся данные о проекте, для которого будут создаваться тест-кейсы, обозначены настройки для кодогенерации, приведены ссылки на созданные проекты с исходными кодами автотестов.
- Проведение анализа требований к программному обеспечению, который может быть реализован в структурированном или свободном формате. На основании этого определяются объекты и виды тестирования, устанавливаются параметры тестирования и кодогенерации нагрузочных и автоматизированных тестов.
- Запись тест-кейсов. После того как тест-кейс успешно записан, происходит его автоматическое сохранение и привязка к текущему плану тестирования. Благодаря этому он доступен для корректировки, запуска, удаления или генерации кода на его основе.
- Настройка тест-кейсов и планов тестирования. На данном этапе пользователь имеет возможность изменять наборы входных и выходных данных, объединять тест-кейсы в группы, кастомизировать настройки кодогенерации.
- Запуск процедуры кодогенерации, согласно указанным в плане тестирования настройкам.
- Данный этап алгоритма задействуется в том случае, если возникает потребность покрыть unit-тестами уже существующие исходные коды программного обеспечения. Для этого следует выбрать файл проекта и обозначить подробности технологического стека, на котором реализованы исходники.
- Кодогенерация unit-тестов проводится согласно настройкам, обозначенным в плане тестирования.
- Запуск тест-кейсов, а также автоматических, нагрузочных и unit-тестов.
- Запись возникающих ошибок.
- Выгрузка записанных ошибок в файлы или их экспорт в одну из систем.
Подводя итоги проведенного исследования, отметим, что фреймворки открывают широкие возможности для повышения эффективности тестирования программ. Однако необходимо подходить взвешенно к выбору конкретного их типа, учитывая текущие потребности и возможности разработчика.
В статье представлено описание авторской «Автоматизированной системы поддержки разработки и тестирования «Testado».