Популярные инструменты тестирования Web-приложений

Мой путь в сфере контроля качества

Мое первое знакомство с азами тестирования программного обеспечения началось на четвертом курсе в процессе изучения предмета «Качество программного обеспечения и тестирование» под руководством Федяева Олега Ивановича. После окончания бакалавриата появилась возможность применить полученные знания в этой сфере в процессе трудовой деятельности. Первой моей задачей было ручное тестирование сайтов: проверка на адаптивность, ручное «прокликивание» страниц и сверка полученного результата с предполагаемым – работа простого тестировщика, «обезьянки» или «падавана», если говорить неформальным языком. Однако в процессе такой работы отсутствовала системность, упорядоченность, возникла регулярная необходимость проверять одно и то же: переход на следующий этап развития в области контроля качества не заставил себя ждать. На данный момент мои обязанности расширились написанием тестовой документации, подготовкой документов для конечных пользователей, работой над автоматизацией тестирования web- приложений.

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

Наиболее распространенной формой автоматизации является тестирование приложений через графический пользовательский интерфейс. Популярность такого вида тестирования объясняется двумя факторами: во-первых, приложение тестируется тем же способом, которым его будет использовать человек, во-вторых, можно тестировать приложение, не имея при этом доступа к исходному коду [1].

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

Логотипы использующихся для тестирования инструментов
Рисунок 1 - Логотипы используемых инструментов

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

Selenium

Selenium — это инструмент для автоматизации действий веб-браузера. В большинстве случаев используется для тестирования Web-приложений, но этим не ограничивается. Selenium WebDriver — это в первую очередь набор библиотек для различных языков программирования. Эти библиотеки используются для отправки HTTP запросов драйверу, с помощью протокола JsonWireProtocol, в которых указано действие, которое должен совершить браузер в рамках текущей сессии. Примерами таких команд могут быть команды нахождения элементов по локатору, переход по ссылкам, парсинг текста страницы/элемента, нажатие кнопок или переход по ссылкам на странице веб-сайта. Существуют как официальные привязки библиотеки к популярным языкам программирования, так и любительские. Проектом Selenium и сообществом поддерживается работа с браузерами Microsoft Internet Explorer, Google Chrome, Mozilla Suite и Mozilla Firefox под управлением операционных систем Microsoft Windows, Linux и Apple Macintosh.

В рамках проекта Selenium выпускается инструмент «Selenium IDE» — расширение к браузеру Firefox, представляющее собой библиотеку Selenium с графическим интерфейсом (GUI), построенным с использованием XUL. Расширение позволяет записывать, сохранять и воспроизводить сценарии тестирования web-страниц. Сценарии сохраняются в формате HTML в виде таблицы [2].

Allure

Allure — фреймворк от компании Yandex для создания простых и понятных отчётов автотестов.

Allure основан на стандартном выходе результатов тестирования xUnit, но добавляет некоторые дополнительные данные. Любой отчет создается в два этапа. Во время выполнения теста (первый шаг) небольшая библиотека, называемая адаптером, прикрепленной к структуре тестирования, сохраняет информацию о выполненных тестах в XML-файлах. Инструмент предоставляет адаптеры для популярных платформ таких как Java, PHP, Ruby, Python, Scala и C # [3].

Во время создания отчета (второй шаг) XML-файлы преобразуются в HTML-отчет. Запустить эту процедуру можно с помощью инструмента командной строки, плагина для CI, Jenkins скрипта. Результатом работы является .html файл, представляющий в графическом виде информацию о результатах автоматизированного тестирования. Такой отчет доступен для понимания не только инженеру по контролю качества, но и членам команды разработчиков, заказчикам и руководству предприятия.

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

Отчет Allure, построенный на данных о запуске Selenium тестов
Рисунок 2 - Отчет Allure, построенный на данных о запуске Selenium тестов

OWASP Zed Attack Proxy (ZAP)

Open Web Application Security Project (OWASP) — это открытый проект обеспечения безопасности веб-приложений. OWASP создаёт стандарты, первый из которых был опубликован под названием OWASP Application Security Verification Standard (ASVS)). Основная цель OWASP ASVS — это стандартизация диапазона охвата и уровня строгости доступных на рынке приложений, обеспечивающих безопасность. Целью OWASP ASVS также являлось создание набора коммерчески успешных открытых стандартов, приспособленных для специализированных веб-технологий. Некоторые из проектов OWASP:

OWASP Zed Attack Proxy (ZAP) — это простой в использовании интегрированный инструмент тестирования на проникновения и нахождения уязвимостей в веб-приложениях. Он создан для использования людьми с различным опытом в сфере безопасности, и поэтому идеален для разработчиков и функциональных тестеров, которые новички в тестировании на проникновение [5].

Простейший вариант использования – создать новый проект, задать url и данные для авторизации (если они необходимы) и выбрать режим сканирования. Результатом работы будет html отчет, в котором будут приведены все уязвимости, уровень риска, возможные пути их устранения. Кроме десктопного приложения существует OWASP ZAP API, позволяющее интегрировать функции этого инструмента в собственные тесты. Также запускать ZAP – сканирование можно, подключив соответствующий плагин в Jenkins и сконфигурировав настройки. Некоторые из функций ZAP:

Отчет о сканировании приложения с помощью OWASP ZAP
Рисунок 3 – Отчет о сканировании приложения с помощью OWASP ZAP

Apache JMeter

Apache JMeter — инструмент для проведения нагрузочного тестирования, разрабатываемый Apache Software Foundation. Хотя изначально JMeter разрабатывался как средство тестирования web-приложений, в настоящее время он способен проводить нагрузочные тесты для JDBC-соединений, FTP, LDAP, SOAP, JMS, POP3, IMAP, HTTP и TCP.

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

В программе реализованы механизмы авторизации виртуальных пользователей, поддерживаются пользовательские сеансы. Организовано логирование результатов теста и разнообразная визуализация результатов в виде диаграмм, таблиц и т. п [6].

Отчет о сканировании приложения с помощью Jmeter
Рисунок 4 – Отчет о сканировании приложения с помощью Jmeter

Обзор аналогичных разделов магистров прошлых лет

В процессе подготовки индивидуального раздела были рассмотрены аналогичные разделы других студентов специальности «Программная инженерия». В основном студенты рассказывают о своих творческих хобби либо о своем личном опыте в сфере программного обеспечения за пределами университета. Следует отметить, что тем, связанных с автоматизацией процесса тестирования web-приложений обнаружено не было, однако можно выделить три статьи, косвенно с ней связанные:

  1. Алексеева Виктория Анатольевна – Чего хочет заказчик или веб вчера, сегодня и завтра
  2. Евдокимов Александр Владимирович – Опыт разработки приложений на языке Java

Список рекомендуемых источников

  1. Документация по использованию Selenium. [Электронный ресурс]. – Режим доступа:https://www.seleniumhq.org/docs/
  2. Allure 2: тест-репорты нового поколения. [Электронный ресурс]. – Режим доступа:https://habr.com/company/jugru/blog/337386/
  3. Flaky tests (Selenium+Allure). [Электронный ресурс]. – Режим доступа: https://habr.com/company/jugru/blog/416757/
  4. Тестирование нагрузки веб-сервера при помощи Apache JMeter. [Электронный ресурс]. – Режим доступа:https://www.8host.com/blog/testirovanie-nagruzki-veb-servera-pri-pomoshhi-apache-jmeter/
  5. Running Penetration Tests for your Website as a Simple Developer with OWASP ZAP. [Электронный ресурс]. – Режим доступа:https://medium.com/volosoft/running-penetration-tests-for-your-website-as-a-simple-developer-with-owasp-zap-493d6a7e182b

Список источников

  1. Автоматизированное тестирование. [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/Автоматизированное_тестирование
  2. Selenium 2.0 и WebDriver. [Электронный ресурс]. – Режим доступа: https://selenium2.ru/docs/webdriver.html
  3. Allure — фреймворк от Яндекса для создания простых и понятных отчётов автотестов [для любого языка]. [Электронный ресурс]. – Режим доступа: https://habr.com/company/yandex/blog/232697/
  4. OWASP. [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/OWASP
  5. Тестирование на XSS и другие уязвимости c помощью OWASP ZAP. [Электронный ресурс]. – Режим доступа: https://medium.com/@svyatoslavlogyn/тестирование-на-xss-и-другие-уязвимости-c-помощью-owasp-zap-a99183c32013
  6. Введение в Jmeter. [Электронный ресурс]. – Режим доступа: https://habr.com/post/140310/