Автотестирование ПО: технологии и практика

Новости и события

Автотестирование ПО: технологии и практика

Экспертиза ФОРС

Алиса Миротворская, ведущий тестировщик компании «Форс – Центр разработки» (ГК Форс)

#Эксперты_говорят

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

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

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

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

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

В результате мы сформировали следующий стек технологий, которые используем для автоматизации тестирования:

  • Язык Groovy для разработки тестов;
  • Фреймворк тестирования Spock;
  • Фреймворк Geb для управления браузером, который является надстройкой над Selenium;

К ключевым особенностям данного стека технологий можно отнести:

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

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

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

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

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