УДК 004.415.53

Автоматизация тестирования web-приложений

Мухаметдинова Снежана Валерьевна – студент Уфимского университета науки и технологий.

Ахтямов Данис Ильдарович – студент Уфимского университета науки и технологий.

Аннотация: В статье выяснены особенности трех видов автоматизированного тестирования (модульное тестирование, тестирование API и сквозное тестирование) и инструментов связанных с ними. Рассмотрены такие инструменты, как Postman, фреймворк Testcafe реализованный на NodeJs.

Ключевые слова: тестирование, бизнес-логика, UI, Unit, API, E2E, функций, фреймворк, сценарий, тест-кейс.

Автоматизирование тестирования Web-приложений необходимо для:

  1. Улучшения качества продукта;
  2. Быстрого проведения регрессионного тестирования.

Невозможно представить проверку качества математических вычислений без качественного тестирования продукта. Автоматизированное тестирование само проведет проверку продукта. Такое тестирование очень полезно для продукта с валидными исходными данными. Существует большое количество видов автоматизации тестирования: начиная от фундаментальных – модульных тестов, заканчивая- сквозными (приемочными) тестами.

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

1

Рисунок 1. Расширенная версия пирамиды тестирования.

Зачастую рассматривают 3 основных уровня тестирования:

  1. Юнит-тест (unit test), или модульный тест, – это программа, которая проверяет работу небольшой части кода. Разработчики регулярно обновляют сайты и приложения, добавляют фичи, рефакторят код и вносят правки, а затем проверяют, как всё работает.

Тестировать систему целиком после каждого обновления – довольно муторно и неэффективно. Поэтому обновлённые или исправленные части кода прогоняют через юнит-тесты

  1. Тестирование API – это тип тестирования программного обеспечения, при котором анализируется интерфейс прикладной программы (API), чтобы убедиться, что он соответствует ожидаемой функциональности, безопасности, производительности и надежности. Тесты выполняются непосредственно в API и в рамках интеграционного тестирования. При тестировании API фокусируются на анализе бизнес-логики, а также безопасности откликов приложений и данных.
  2. Сквозное тестирование (End-to-end, E2E, Chain testing) – это вид тестирования, используемый для проверки программного обеспечения от начала до конца, а также его интеграцию с внешними интерфейсами.

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

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

Рассмотрим 3 основных метода тестирования:

  1. Модульное тестирование

Модульное тестирование – это подход к тестированию программного обеспечения, при котором тестируются отдельные компоненты приложения (модули) независимо от других компонентов. Кроме того, такое тестирование позволяет ускорить процесс разработки, так как позволяет быстро выявлять и исправлять ошибки.

Цель: Проверить правильность работы отдельных функций в изолированной системе используя “заглушки”.

  1. API тесты

API-тестирование – это подход к тестированию программного обеспечения, при котором тестируется взаимодействие между различными частями приложения через API (Application Programming Interface). API-тестирование может быть автоматизировано, что позволяет ускорить процесс тестирования и повысить его качество.

Цель: Проверить работу отдельных функций и их бизнес-логику в системе.

  1. Приемочное тестирование

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

Цель: Проверить работу системы в целом с ее бизнес-логикой. Работу функций и UI составляющую. 

Разработка тест-кейса

Для того, чтобы составить масштабный сценарий автотестов, необходимо выполнить следующие действия:

  1. Продумать сценарий для “прогонки” автоматизированного тестирования.
  2. Написать и составить «Тест-кейс» для всех возможных сценариев.
  3. Реализовать программный код по каждому сценарию.
  4. Выявить, какой вид тестирования справится быстрее: протестирует большую часть сценария и займет оптимальное время для “прогонки”.

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

Результат

Для написания тестов использовались такие инструменты, как:

  1. приложение для тестирования API – Postgres,
  2. фреймворк для UI тестов – Testcafe

После детального изучения фреймворка Testcafe стало понятно, что он может одновременно тестировать, как и интерфейс, так и API. Также он поддерживает интеграции со многими CI/CD системами.

Написание тестов на фреймворке Testcafe было более удобным. Фреймворк поддерживает оптимизацию тестов в будущем. На нем можно реализовывать паттерны проектирования. Он достаточно быстро справляется с поставленной задачей.

Пример кода

В данном примере видно, что данный фреймворк поддерживает возможность тестирования API

await t

.click('#download-gtm-button');

loggerP.contains(record => record.response.statusCode === 200)

const downloadResponse = loggerP.requests.find((_) => _.response?.headers['content-type'] === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')

await t

.expect(downloadResponse.response.statusCode === 200 && downloadResponse.request.url.indexOf('GtmRegistry/DownloadFile') !== -1).ok()

Выводы

Автоматизация тестирования позволяет значительно ускорить процесс тестирования, повысить его точность и качество, а также снизить затраты на тестирование.

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

Список литературы

  1. Carl J. Nagle. Test Automation Frameworks.
  2. А.В. Баранцев, И.Б. Бурдонов, А.В. Демаков, С.В. Зеленов, А.С. Косачев, В.В. Кулямин, В.А. Омельченко, Н.В. Пакулин, А.К. Петренко, А.В. Хорошилов. Подход UniTesK к разработке тестов: достижения и перспективы. Труды Института систем.

Интересная статья? Поделись ей с другими: