Популярные инструменты тестирования Web-приложений
Мой путь в сфере контроля качества
Мое первое знакомство с азами тестирования программного обеспечения началось на четвертом курсе в процессе изучения предмета «Качество программного обеспечения и тестирование» под руководством Федяева Олега Ивановича. После окончания бакалавриата появилась возможность применить полученные знания в этой сфере в процессе трудовой деятельности. Первой моей задачей было ручное тестирование сайтов: проверка на адаптивность, ручное «прокликивание» страниц и сверка полученного результата с предполагаемым – работа простого тестировщика, «обезьянки» или «падавана», если говорить неформальным языком. Однако в процессе такой работы отсутствовала системность, упорядоченность, возникла регулярная необходимость проверять одно и то же: переход на следующий этап развития в области контроля качества не заставил себя ждать. На данный момент мои обязанности расширились написанием тестовой документации, подготовкой документов для конечных пользователей, работой над автоматизацией тестирования web- приложений.
Автоматизированное тестирование программного обеспечения — часть процесса тестирования на этапе контроля качества в процессе разработки программного обеспечения. Оно использует программные средства для выполнения тестов и проверки результатов выполнения, что помогает сократить время тестирования и упростить его процесс.
Наиболее распространенной формой автоматизации является тестирование приложений через графический пользовательский интерфейс. Популярность такого вида тестирования объясняется двумя факторами: во-первых, приложение тестируется тем же способом, которым его будет использовать человек, во-вторых, можно тестировать приложение, не имея при этом доступа к исходному коду [1].
На данный момент в автоматизации процесса тестирования смогла освоить следующие направления, о которых и расскажу ниже:
создание и поддержка тестов web-интерфейса с помощью Selenium;
создание и поддержка тестов API web-приложений;
обработка результатов теста с помощью Allure;
тестирование сайтов на уязвимости с помощью инструмента OWASP ZAP;
выполнение нагрузочного тестирования с помощью инструмента JMeter;
конфигурирование, обновление и анализ тестов.
В дальнейшем планирую изучать новые инструменты автоматизации тестирования и исследования качества программного обеспечения, рассматриваю вариант сдачи экзамена на международный сертификат 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 добавлены возможности группирования непройденых тестов по причинам падения теста, по функционалу тестируемого приложения, по приоритету тестовых случаев.
OWASP Zed Attack Proxy (ZAP)
Open Web Application Security Project (OWASP) — это открытый проект обеспечения безопасности веб-приложений. OWASP создаёт стандарты, первый из которых был опубликован под названием OWASP Application Security Verification Standard (ASVS)). Основная цель OWASP ASVS — это стандартизация диапазона охвата и уровня строгости доступных на рынке приложений, обеспечивающих безопасность. Целью OWASP ASVS также являлось создание набора коммерчески успешных открытых стандартов, приспособленных для специализированных веб-технологий. Некоторые из проектов OWASP:
Стандарт Подтверждения Безопасности Приложений OWASP (OWASP Application Security Verification Standard (ASVS)) — Стандарт для проведения проверок уровня безопасности приложений. Руководство по Разработке охватывает обширный массив вопросов безопасности для уровня приложений, от SQL инъекций до современных проблем, таких как фишинг, обработка кредитных карт, фиксация сессий, подделка межсайтовых запросов, согласование и конфиденциальность;
Руководство по Тестированию OWASP включает «лучшую практическую» основу для тестирования проникновений, которую пользователи могут использовать в своих организациях и «низкоуровневое» руководство по тестированию проникновений, которое описывает техники тестирования наиболее распространенных проблем с безопасностью в веб-приложениях и веб-сервисах;
OWASP ZAP Проект: Прокси Зет-Атаки — это простой в применении встроенный инструмент тестирования проникновений, служащий для нахождения уязвимостей веб-приложений. Он разработан для использования людьми с различным опытом в сфере безопасности и является эталоном для разработчиков и тестировщиков функционала, которые не имеют опыта в тестировании проникновений;
OWASP Топ-10: цель проекта Топ-10 — увеличение осведомленности о безопасности приложений при помощи определения наиболее критичных рисков, угрожающих организациям. На проект Топ-10 ссылается множество стандартов, инструментов и организаций, включая MITRE, PCI DSS, DISA, FTC, и множество других;
Множество других инструментов и приложений для обеспечения безопасности доступно в структуре проектов OWASP [4].
OWASP Zed Attack Proxy (ZAP) — это простой в использовании интегрированный инструмент тестирования на проникновения и нахождения уязвимостей в веб-приложениях. Он создан для использования людьми с различным опытом в сфере безопасности, и поэтому идеален для разработчиков и функциональных тестеров, которые новички в тестировании на проникновение [5].
Простейший вариант использования – создать новый проект, задать url и данные для авторизации (если они необходимы) и выбрать режим сканирования. Результатом работы будет html отчет, в котором будут приведены все уязвимости, уровень риска, возможные пути их устранения. Кроме десктопного приложения существует OWASP ZAP API, позволяющее интегрировать функции этого инструмента в собственные тесты. Также запускать ZAP – сканирование можно, подключив соответствующий плагин в Jenkins и сконфигурировав настройки. Некоторые из функций ZAP:
Перехват прокси;
Традиционный и AJAX пауки;
Автоматизированный сканер;
Пассивный сканер;
Фаззлер;
Динамические SSL сертификаты;
Поддержка веб-сокетов;
Поддержка аутентификаций и сессий;
Мощный REST на основе API;
Поддержка большого количества скриптовых языков.
Apache JMeter
Apache JMeter — инструмент для проведения нагрузочного тестирования, разрабатываемый Apache Software Foundation. Хотя изначально JMeter разрабатывался как средство тестирования web-приложений, в настоящее время он способен проводить нагрузочные тесты для JDBC-соединений, FTP, LDAP, SOAP, JMS, POP3, IMAP, HTTP и TCP.
Интересна возможность создания большого количества запросов с помощью нескольких компьютеров при управлении этим процессом с одного из них. Архитектура, поддерживающая плагины сторонних разработчиков, позволяет дополнять инструмент новыми функциями.
В программе реализованы механизмы авторизации виртуальных пользователей, поддерживаются пользовательские сеансы. Организовано логирование результатов теста и разнообразная визуализация результатов в виде диаграмм, таблиц и т. п [6].
Обзор аналогичных разделов магистров прошлых лет
В процессе подготовки индивидуального раздела были рассмотрены аналогичные разделы других студентов специальности «Программная инженерия». В основном студенты рассказывают о своих творческих хобби либо о своем личном опыте в сфере программного обеспечения за пределами университета. Следует отметить, что тем, связанных с автоматизацией процесса тестирования web-приложений обнаружено не было, однако можно выделить три статьи, косвенно с ней связанные:
- Алексеева Виктория Анатольевна – Чего хочет заказчик или веб вчера, сегодня и завтра
- Евдокимов Александр Владимирович – Опыт разработки приложений на языке Java
Список рекомендуемых источников
- Документация по использованию Selenium. [Электронный ресурс]. – Режим доступа:https://www.seleniumhq.org/docs/
- Allure 2: тест-репорты нового поколения. [Электронный ресурс]. – Режим доступа:https://habr.com/company/jugru/blog/337386/
- Flaky tests (Selenium+Allure). [Электронный ресурс]. – Режим доступа: https://habr.com/company/jugru/blog/416757/
- Тестирование нагрузки веб-сервера при помощи Apache JMeter. [Электронный ресурс]. – Режим доступа:https://www.8host.com/blog/testirovanie-nagruzki-veb-servera-pri-pomoshhi-apache-jmeter/
- 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
Список источников
- Автоматизированное тестирование. [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/Автоматизированное_тестирование
- Selenium 2.0 и WebDriver. [Электронный ресурс]. – Режим доступа: https://selenium2.ru/docs/webdriver.html
- Allure — фреймворк от Яндекса для создания простых и понятных отчётов автотестов [для любого языка]. [Электронный ресурс]. – Режим доступа: https://habr.com/company/yandex/blog/232697/
- OWASP. [Электронный ресурс]. – Режим доступа: https://ru.wikipedia.org/wiki/OWASP
- Тестирование на XSS и другие уязвимости c помощью OWASP ZAP. [Электронный ресурс]. – Режим доступа: https://medium.com/@svyatoslavlogyn/тестирование-на-xss-и-другие-уязвимости-c-помощью-owasp-zap-a99183c32013
- Введение в Jmeter. [Электронный ресурс]. – Режим доступа: https://habr.com/post/140310/