Файл: Отладка и тестирование программ: основные подходы и ограничения.pdf
Добавлен: 24.04.2023
Просмотров: 233
Скачиваний: 1
JavaScript уровень поддерживается в современных при версиях большинства скорость браузеров.
Фреймворк посредством тестирования web-приложений Поскольку Selenium Webdriver Этим Selenium Webdriver, этим или просто система Webdriver – это виды драйвер браузера, по то есть закрывающие не имеющая трудной пользовательского интерфейса готовить программная библиотека, Хорошим которая позволяет большая различным другим созданием программам взаимодействовать с не браузером, управлять стрессовую его поведением, код получать от опыт браузера какие-то изучение данные и заставлять конкретные браузер выполнять логической какие-то команды. формате По назначению конец Selenium WebDriver тесты представляет собой применяться драйвер браузера, прикладным то есть методы программную библиотеку, тестируются которая позволяет продуктах разрабатывать программы, применения управляющие поведением внимания браузера.
По поставленные своей сущности рынке Selenium WebDriver небольшие представляет собой:
-спецификацию гибких программного интерфейса страницу для управления внутри браузером,
-референсные реализации вызывает этого интерфейса стабильная для нескольких трудной браузеров,
-набор клиентских Основной библиотек для записываются этого интерфейса методика на нескольких контроль языках программирования.
представляться Фреймворк Selenium Основы является популярным рассматривается инструментом автоматизированного продукцию тестирования ввиду проблема того что в продемонстрировать специальной среде верификации Selenium IDE говорить включенной в фреймворк спецификации есть возможность закрывающий описывать тестовые проверяющему сценарии, воспроизводить около предполагаемые действия узнать пользователя через постоянно расширения браузера и способ работать с браузером множество посредством кода выявляет на различных Пестриков языках программирования. различной Код выполняет каждой работу в браузере последние посредством компонента стрессовых Selenium Webdriver. Нужно Дла каждого самым браузера существуют пользователя различные модули-драйвера, если запускающие и контролирующие данный приложение.
Selenium принято Webdriver поддерживает усложняет различные языки совместимости программирования, такие преследуемых как Java, C#, подробно Python и Ruby, вид Perl и PHP.
В данной работе была реализована программа, выполняющая автоматизированную проверку верстки сайта. Из описанных выше проверок были реализованы проверки следующих ошибок из вышеперечисленных: Названия файлов на кириллице, Нерабочие гиперссылки, Отсутствие описания к картинкам, Выпадение элементов детей за пределы родительских элементов. Причина выбора именно этих проверок обусловлена тем, что эти ошибки являются более распространенными и критичными, либо потому что проверки, не вошедшие в программу, являются избыточными либо не дающими точного результата.
Используемые инструменты: Selenium webdriver 2.0 c использованием Javascript Selenium webdriver 2.0 был выбран в связи с тем, что это объектно- ориентированный API, поддерживающий большее количество браузеров и лучше решающий проблемы тестирования современных веб-приложений, имеющий возможность проводить как функциональные, так и графические тесты.
Основная причина выбора Selenium 2.0 заключается в наличии WebDriver API – удобного для работы и простого в освоении программного интерфейса. Данный инструмент создавался с целью повышения читаемости и упрощения поддержки тестов. Так как WebDriver API не привязан ни к каким тестовым фреймворкам, это позволяет использовать любые фреймворки модульного тестирования. Кроме того, поведение WebDriver не отличается от обычных библиотек, благодаря чему он полностью самодостаточен.
Для написания тестов используется javascript по той причине, что код javascript может быть запущен непосредственно в браузере, что дает большое преимущество в быстродействии. JavaScript можно использовать как в параметрах специальных команд, которые принимают на вход фрагмент JavaScript, так и с “обычными” параметрами. Часто нужно внутри фрагмента JavaScript получить доступ к значению некоторой переменной Selenium. Все переменные, создаваемые тестовым сценарием, сохраняются в ассоциативный массив JavaScript, который называется storedVars. В ассоциативном массиве используются строковые индексы, а не последовательные числовые. Для того чтобы получить доступ к переменной или изменить её значение из фрагмента JavaScript, вам следует обращаться к ней, как кstoredVars[‘ИмяВашейПеременной’]. В Selenium есть несколько команд, принимающих в качестве параметра фрагмент JavaScript: assertEval, verifyEval,storeEval и waitForEval.
Параметр не требует специального синтаксиса. Достаточно просто поместить фрагмент JavaScript в подходящее поле, обычно это поле Цель (так как эти команды как правило имеют один параметр). В примере ниже показано использование фрагмента JavaScript для вычисления значения числового выражения:
Использование JavaScript в “обычных” параметрах JavaScript также может применяться в генерации значений для параметров, которые вообще говоря не принимают код на языке JavaScript. В этом случае необходимо использовать специальный синтаксис – фрагмент JavaScript должен быть помещен в фигурные скобки, перед которыми должна быть приписка javascript, вот так: javascript {*этоВашКод*}. Ниже приведен 46 пример, в котором у второго параметра команды type значение генерируется JavaScript-кодом:
В Selenium существует команда для отображения текста в поле вывода данных вашего теста. Это может пригодиться для отслеживания хода выполнения тестов. Команда echo также будет полезна для обеспечения контекста выводимым результатам тестирования, позволяющего быстрее найти расположение дефекта на странице. И, наконец, с помощью оператора echo можно выводить содержимое переменных Selenium.
Основные команды и операции Webdriver Открытие страниц Для открытия страниц в Webdriver используется метод “get”:
WebDriver будет дожидаться полной загрузки страницы (то есть момента, когда сработает событие “onload”), перед тем как вернуть управление обратно в ваш тестовый сценарий. Взаимодействие со страницей Возможность только лишь попасть на нужную страницу сама по себе не очень ценна.
Наибольшую важность имеет возможность взаимодействия со страницей, а точнее, с HTML-элементами этой страницы. Прежде всего, нужно найти интересующий вас элемент. WebDriver предоставляет несколько способ поиска элементов.
Например, если у вас есть элемент, определенный в HTML коде следующим образом:
то можно найти его любым из приведенных ниже способов:
Для ввода текста в поле ввода используется метод SendKeys
Имитация нажатия стрелок выполняется использованием класса Keys.
1. Инициализация В начале, происходит инициализация программы, открывается окно браузера, которому задаются размеры 1920x1080 px, после чего программе дается список страниц для тестирования, которые открывает браузер.
2. Построение рабочей модели После конфигурации используемых при тестировании разрешений окна браузера, запускается скрипт, инициализирующий дерево элементов, для каждого разрешения браузера происходит обход HTML-кода, сохранение снимка страницы и сохранение построенного дерева в виде компонентов JavaBeans.
Таким образом создается модель страницы с которой продолжается дальнейшая работа.
3. Поиск ошибок. Для каждого типа ошибок, создается отдельный модуль, который обходит построенную в п.2 структуру дерева и составляет выборку из элементов по критериям указанных в разделе классификация ошибок верстки, в которых может появиться ошибка. Использование отдельных модулей для поиска ошибок обусловлено тем, что ошибки определяются различными методами, кроме того, использование нескольких модулей положительно сказывается на быстродействии проверки.
После запуска всех модулей, программа совершает проход по созданному списку наборов элементов, убирая из него наборы в которых не обнаруживается ошибка.
4. Объединение аналогичных наборов ошибок в кластеры. Поскольку наборы ошибок как правило идентичны, имеет смысл обьединять их в общий набор ошибок разделенных по типам, например набор содержащий выпадающие во второй ряд блоки или набор содержащий ошибки с названиями файлов на кириллице.
-Условия объединения наборов будут следующие :
- Одинаковый тип проверки
- Одинаковые неклассифицируемые состояния
-Совпадающие имена тегов
- Одинаковое количество элементов
Также необходимо учитывать следующие моменты : Одинаковые классы CSS. Как правило для одного типа элементов используется отдельный CSS-класс, что позволяет сгруппировать наборы по типу элементов. Стоит заметить, что внутри элемента может находиться несколько разных классов, поэтому необходимо проводить проверку на совпадение хотя бы одного класса и типа элемента, при этом проверка каждого элемента будет избыточна.
Для решения данной проблемы стоит указать несколько типов элементов в которых более вероятна типовая ошибка, например табличные элементы. Совпадающие селекторы.
Так как в процессе создания дерева для каждой ветви создается код описывающий её вида : div[1]/div[2]/table/span, мы можем провести сравнение по данному коду на последовательное совпадение элементов. Смысл заключается в том, что при нахожднии ошибки в элементе построенном по шаблону, есть значительная вероятность что ошибка может проявиться и в других элементах использующих тот же шаблон.
Однако не стоит пытаться выделить набор в котором полностью совпадают все элементы, так как полностью совпадающие элементы на одной странице достаточно редкие, достаточно частичного совпадения шаблона. Объединение наборов ведущих себя похожим образом и имеющих похожие меры ошибок для разных разрешений окна браузера.
Сведение результатов в отчет. Полученные кластеры сохраняются на диск в виде файла html вместе с файлами Javascript и CSS, которые обеспечивают функциональность файла.
Количестве запущенных тестов
По каждому тесту: o его название o название набора o результат o время выполнения o сообщение об ошибке, если тест упал
Количество успешно выполненных тестов
Количество упавших тестов
Время выполнения всех тестов
Дата и время запуска Генератор отчетов создавался с использованием стандартных средств разработки XSLT. Полученные кластеры ошибок вместе с информацией о проверяемых страницах, названиями тестов, их результатами и времени выполнения сохраняются в файл отчета.
В файле отчета содержится:
1. Снимок страницы
2. Список тестов
3. Список найденных ошибок, для удобства можно группировать их по типу, воспроизводимые в данном разрешении ошибки помечаются красным, невоспроизводимые зеленым.
4. При наведении указателя мыши на ошибку, соответствующая ей область на странице помечается синим, при клике по ней снимок прокручивается до места с ошибкой.
5. Внизу левого блока выводится прочая информация о тесте, количество запущенных тестов, количество выполненных тестов, время выполнения тестов, время запуска тестов. Также в папке с отчетом создается файл оглавления, со списком всех созданных отчетов в котором указывается количество найденных ошибок и краткая информация о них.
3.Тестирование и Нелогичный отладка всей не программы в целом
предназначен Среднее время ориентация для тестирования утилиты одной страницы соответствии составило примерно 30 ограничить секунд, для инструментарий страниц с небольшим но количеством элементов дальнейших тест длился верификация от 5 до 20 аварийных секунд, для использовались больших страниц с другом большим количеством самом контента и сложной облегчить структурой продолжительность двух теста составляла принципау от 30 секунд, системами до полутора результат минут. Так изменениями как наличие модули большой вычислительной худшим мощности для колоссальные программы не разделять требуется, тестирование качественной проводилось на приведены домашнем копьютере, в обучению случае использования формы более мощной используемых вычислительной системы, исправляются возможно добиться диапазон лучшего быстродействия, самостоятельно но учитывая белого цели с которой Приложение создавалась программа, Готовые это не основных является минусом.
Разработчики Было замечено клиентском что при Стоит постоянном использовании автоматизации программы, не обрабатывается требуется детальное запуска изучение отчета колоссальные после каждого параметр запуска, так различном как при тех проведении тестирования инсталляции после каждого аналогичных измененения на соответствуют странице которая языках была успешно поддержку протестирована ранее, Стивене обычно достаточно случай одного взгляда начали на отчет всех чтобы убедиться отдельные что изменения разделение не вызвали отметить новые ошибки работе Тестирование программы интерфейса проводилось двумя продукта методами: