УДК 004.054
Анализ эффективности автоматизированного тестирования оконного интерфейса программной системы
И.А. Шевелёв, О.И. Федяев
Донецкий национальный технический университет
edward952@gmail.com
Шевелёв И.А., Федяев О.И. Анализ эффективности автоматизированного тестирования оконного интерфейса программной системы. В работе рассматриваются основные проблемы тестирования, подходы к эффективному автоматизированному тестированию пользовательских интерфейсов, подготовка базы для покрытия тестовых случаев автоматизированными тестами. Анализ выявил проблемы, возникающие на этапе проектирования тест-планов и тестовых случаев в части эффективного покрытия тестовой базы автоматизированными тестами. Для автоматизации ручного тестирования создана уникальная платформа для тестирования оконного интерфейса средствами Selenium Webdriver, Jasmine, Protractor, которые используют языки JavaSсript и TypeScript.
Ключевые слова: тестирование, автоматизация тестирования пользовательских интерфейсов, оконный интерфейс программной системы
Введение
В современной IT-сфере крупные компании нуждаются в технологиях и средствах проверки качества разрабатываемого программного продукта. Качественно валидировать новый функционал программного обеспечения, писать общую документацию, тест-планы проверки функционала, критерии входа и выхода из тестирования, конкретные тестовые случаи для разрабатываемого функционала помогает отрасль Quality Assurance (QA) [1]. Актуальность данной отрасли состоит в том, чтобы решать проблему поддержания качества продукта в целом. В основном, это делается ручным тестированием программных продуктов, поступаемых от отдела разработки. Но в таком подходе могут быть следующие недостатки:
Эти недостатки частично решает автоматизированное тестирование продукта. Основные плюсы данного подхода:
Поэтому основной целью работы является анализ эффективности автоматизированного тестирования оконного интерфейса программной системы, сравнение актуальных инструментов для автоматизации тестирования, описание платформы для автоматизированного тестирования, описание примеров построения пользовательских сценариев [2].
Анализ технологий автоматизированного тестирования программ
Для рассмотрения основных инструментов были рассмотрены наиболее современные виды написания кода приложения: BDD (Behavior-driven development) и TDD (Test-driven development) [3].
Основной идеей BDD-методологии является совмещение в процессе разработки чисто технических интересов и интересов бизнеса, позволяя тем самым управляющему персоналу и программистам говорить на одном языке. Для общения между этими группами персонала используется предметно-ориентированный язык, основу которого представляют конструкции из естественного языка, понятные неспециалисту, обычно выражающие поведение программного продукта и ожидаемые результаты.
В свою очередь TDD – техника разработки программного обеспечения, которая основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется код, который позволит пройти тест, и под конец проводится рефакторинг нового кода к соответствующим стандартам. Данная техника в большинстве случаев не ориентирована на тестирование пользовательских интерфейсов оконного интерфейса.
В основном, автоматизаторы тестирования интерфейсов пользуются BDD-инструментами. BDD подход совместно с инженерными практиками позволяет отказаться от legacy-документации, содержащей неактуальную информацию и получать новую документацию налету, хранить ее вместе с проектом.
Пример циклов разработки с использованием BDD и TDD подходов изображен на рис. 1.
Рисунок 1 – Пример циклов разработки с использованием BDD и TDD подходов
Рассмотренные подходы основаны на применении следующих инструментов автоматизации тестирования.
Selenium – Java-приложение, которое может анализировать файлы определенной структуры, чтобы находить команды для управления браузером и команды для выполнения определенных действий и проверок. Основные плюсы: инструмент является бесплатным, поддерживает много языков программирования, портативность, кроссплатформенность, кроссбраузерность (с использованием Selenium Grid), интегрируется с веб-автоматизацией и мобильной автоматизацией тестирования, чаще всего применяется с BDD.
Watir – это инструмент для автоматизации тестирования, который используется для тестирования веб-приложений. Это библиотека Ruby с открытым исходным кодом. Так как базовым протоколом инструмента является OLE, то он умеет взаимодействовать с Microsoft IE (что, к сожалению, не могут большинство других инструментов автоматизации). Основные плюсы: кроссбраузерность, взаимодействует с BDD-фреймворками и фреймворками для юнит-тестирования. Из минусов можно отметить то, что инструмент помогает автоматизировать только веб-интерфейсы, используется с языком Ruby, чаще всего применяется с BDD [3].
Katalon Studio – это эффективный инструмент для автоматизации процесса тестирования веб-приложений, мобильных приложений и веб-сервисов. Katalon Studio является потомком таких фреймворков, как Selenium и Appium. Он перенял у последних множество преимуществ, связанных с интегрированной автоматизацией тестирования ПО, чаще всего применяется с BDD.
Unified Functional Testing или UFT – это популярный коммерческий инструмент для функционального тестирования. Он предоставляет полный набор функций для тестирования API, веб-сервисов, а также для тестирования графического интерфейса десктопных, мобильных и веб-приложений на всех существующих платформах, чаще всего применяется с TDD.
TestComplete – это эффективный инструмент для тестирования десктопных, мобильных и веб-приложений. TestComplete поддерживает различные языки сценариев. Тестировщики могут выполнять тестирование с использованием ключевых слов и управляемое данными тестирование, чаще всего применяется с BDD [4].
Сравнительная характеристика рассмотренных инструментов автоматизации тестирования интерфейсов изображена на рис. 2.
Рисунок 2 – Сравнительная характеристика основных инструментов автоматизации тестирования интерфейсов
Построения сценариев тестирования иерархического оконного интерфейса программы
Наиболее сложным объектом для тестирования является пользовательский интерфейс [5]. Поэтому задача автоматизированного тестирования оконного интерфейса была решена новыми программными средствами – платформой, использующей следующие инструментальные средства: JavaScript, TypeScript, Selenium WebDriver, Jasmine, Protractor, Node JS, Gulp.
Jasmine – это BDD фреймворк для тестирования JavaScript кода.
Selenium WebDriver – это драйвер браузера, который позволяет разрабатывать программы, управляющие поведением браузера.
Protractor – e2e тест-фреймворк сделанный на основе WebDriverJS, который приходит на смену первоначальным e2e тестам AngularJS [6].
Этой платформой предусмотрено в начале спроектировать сценарий в виде полноценного тестового случая. После этот сценарий представляется в виде псевдокода, но по шаблону выбранного инструмента автоматизации тестирования. Автоматизация процесса направлена на максимально точное покрытие тестовых сценариев программным кодом (скриптом). Шаблон построение сценариев изображен на рис. 3.
Рисунок 3 – Описание спецификации тестового случая псевдокодом (на примере сайта ДонНТУ)
Таким образом практически все тесты позволяют валидировать определенные шаги, также эмулировать пользовательские сценарии.
В качестве примера рассмотрим сценарий взаимодействия пользователя с сайтом ДонНТУ с целью тестирования его интерфейса. Пользователь заходит на страницу и должен ждать, пока она загрузится. Он понимает, что страница загрузилась тогда, когда, например, появляется кнопка “Регистрация”. После чего он кликает на эту кнопку и ожидает появления окна с формой ввода данных. Соответственно, если что-то из этого не отобразится на пользовательском интерфейсе, то автоматизированный тест даст об этом знать.
Для такого способа реализации данного сценария необходимо псевдокод перевести в программный код, который будет выполняться в среде инструмента автоматизации. Пример приведён на рис. 4.
Рисунок 4 – Описание спецификации тестового случая программным кодом
Сама платформа является надстройкой над основным инструментом автоматизации тестирования интерфейсов, а именно Selenium Webdriver [7]. Таким образом, автоматизатор тестирования может настраивать параметры запускаемого драйвера браузера (разрешение окна, режим), указывать только те спецификации, которые хочет проверить автоматизированными тестами, настраивать вывод данных после прохождения теста, устанавливать время, после которого тест завершится в случае его падения. Схематическая настройка параметров изображена на рис. 5.
Рисунок 5 – Пример конфигурации инструментов платформы для автоматизации тестирования
Заключение
При анализе эффективности автоматизированного тестирования оконного интерфейса программной системы были рассмотрены основные проблемы тестирования, подходы к эффективному автоматизированному тестированию пользовательских интерфейсов, подготовка базы для покрытия тестовых случаев автоматизированными тестами.
В качестве рассматриваемых подходов к разработке автоматизированных тестов были выбраны методологии BDD и TDD , а также применён один из самых современных инструментов для автоматизации тестирования – Selenium Webdriver. Разработан шаблон написания тестовых сценариев на псевдокоде, который автоматически транслировался в программный код (скрипт). Выполнена апробация разработанной платформы на тестировании оконного интерфейса реального сайта. Таким образом, предложен способ, обеспечивающий высокую эффективность автоматизированного тестирования оконного интерфейса программных систем.
Литература
Шевелёв И.А., Федяев О.И. Анализ эффективности автоматизированного тестирования оконного интерфейса программной системы. В работе рассматриваются основные проблемы тестирования, подходы к эффективному автоматизированному тестированию пользовательских интерфейсов, подготовка базы для покрытия тестовых случаев автоматизированными тестами. Анализ выявил проблемы, возникающие на этапе проектирования тест-планов и тестовых случаев в части эффективного покрытия тестовой базы автоматизированными тестами. Для автоматизации ручного тестирования создана уникальная платформа для тестирования оконного интерфейса средствами Selenium Webdriver, Jasmine, Protractor, которые используют языки JavaSсript и TypeScript.
Ключевые слова: тестирование, автоматизация тестирования пользовательских интерфейсов, оконный интерфейс программной системы
Shevelov I.A., Fedyayev O.I. Analysis of the effectiveness of a software system user interface automation testing. The main problems of testing, approaches to effective automated testing of user interfaces, the preparation of a base for covering test cases with automated tests are considered. The analysis revealed problems that arise at the stage of designing test plans and test cases in terms of effective coverage of the test base with automated tests. To automate manual testing, a unique platform for testing the window interface has been created using the tools of Selenium Webdriver, Jasmine, Protractor, which use the JavaScript and TypeScript languages.
Keywords: testing, automation testing, software system user interface