УДК 004.054
Система тестирования прикладного программного обеспечения для образовательного проекта “Электронный учебник Lang-book”
И.А. Шевелёв, О.И.Федяев, И.А. Коломойцева
Донецкий национальный технический университет
rayan-cooper@mail.ru, fedyaev@donntu.ru, bolatiger@mail.ru
Шевелёв И.А., Федяев О.И., Коломойцева И.А. Система тестирования прикладного программного обеспечения для образовательного проекта “Электронный учебник Lang-Book”. В работе рассматриваются особенности процессов ручного и автоматизированного тестирования и автоматизации образовательного проекта для московских школ, который предоставит возможность улучшить систему образования в России, помочь абитуриентам успешно подготовиться к ЕГЭ, поступить в ВУЗ. Анализ проекта даёт возможность составить и поддерживать процессы комплексного тестирования проекта и обеспечить качество тестирования за счёт покрытия интерфейса автоматизированными программными тестами. Для решения этой задачи используется анализ существующих методов ручного тестирования и автоматизации тестирования пользовательских интерфейсов, средствами Selenium, Jasmine, Protractor, которые используют язык JavaScript.
Ключевые слова: образовательный проект, электронный учебник, автоматизация тестирования
Введение
Развитие информационного и программного обеспечения (ПО) изменяет способ приобретения и распространения знаний. В качестве средства передачи информации и обучения в системе образования применяется специальное обучающее ПО. IT-технологии являются инструментами, которые помогают школьнику расширить возможности памяти, способность решать проблемы и сложные логически задачи. Она позволяет школьнику активно обучаться и в значительной мере компенсировать дефицит общения с преподавателем. Компьютерная обучающая программа как программное средство учебного назначения можно представить в качестве системы, состоящей из двух подсистем:
Чтобы получить качественную образовательную систему необходимо тщательно её протестировать, начиная от анализа бизнес-идей, заканчивая проверкой правильности решения задач после стадии разработки. Тестирование программного обеспечения является большой IT-отраслью, которая позволяет поддерживать качество программного продукта на высоком уровне и не допускать наличия дефектов на этапе пользования продуктом конечными пользователями. Само тестирование включает в себя:
В широком смысле, тестирование – это одна из техник контроля качества (Quality Control), которая включает планирование, составление тестов, непосредственно выполнение тестирования и анализ полученных результатов.
Тестирование ПО включает не только собственно проведение тестов, но и многие другие действия, связанные с процессом обеспечения качества:
Известные компании и коммерческие системы тестирования
Известно, что для каждого проекта необходимо подобрать индивидуальные процессы и инструменты для тестирования, чтобы удовлетворить требования заказчиков. Эти процессы могут кардинально различаться в зависимости от выбранной методологии команды разработчиков или личных предпочтений заказчика.
Существуют несколько коммерческих универсальных зарубежных компаний, которые предоставляют свои услуги в области тестирования веб-сайтов, оконных и мобильных приложений. Среди наиболее интересных стоит отметить следующих представителей:
Постановка задачи разработки системы тестирования
Несмотря на то, что коммерческие услуги тестирования предлагают большой спектр услуг по обеспечению качества программного обеспечения, любому заказчику дешевле и продуктивнее нанимать отдельную QA-команду в свой штат сотрудников, которые будут обеспечивать качество с вниманием только на один продукт, а не на многие, как в отдельных QA-компаниях.
Чтобы обеспечить максимальное качество продукту необходимо:
Таким образом, чтобы обеспечить в конкретном программного продукте все вышеуказанные признаки качества, нанимают отдельных людей: ручных тестировщиков, автоматизаторов и тест-менеджеров. Следовательно задача тестирования сложного ПО для образовательного проекта “Электронный учебник Lang-book” является актуальной.
Выбор архитектуры автоматизированной системы тестирования проекта
Процессы тестирования рассмотрены на гибких моделях разработки программного обеспечения, такой как Scrum и Kanban [2]. В Kanban над задачей может работать несколько узкопрофильных команд. К примеру, сначала работает отдел аналитики, потом дизайнеры рисуют интерфейсы задачи, а на третьем этапе включаются разработчики и тестировщики. В Kanban внутри команды нет ролей. Каждый разработчик может быть ответственным за любую задачу.
В Scrum над проектом работает одна универсальная команда. В ней столько разноплановых специалистов, сколько нужно для решения любой задачи проекта. Поскольку команда самоорганизуется, у специалистов scrum-команды нет формальной компетенции. Когда необходимо, тестировщик помогает дизайнеру, а аналитик – разработчику. В scrum-команде помимо собственно специалистов есть две роли: scrum-мастер и владелец продукта.
Scrum-мастер – человек, который организует работу. Это не управленческая должность, и он не раздает указания. Его задачи:
В свободное от этих задач время скрам-мастер работает так же, как другие члены команды.
Владелец продукта определяет ход проекта, он может представлять внешнего заказчика. Владелец знает все о рынке и целевой аудитории, расставляет приоритеты задачам. Примеры каждой методологии представлены на рисунках 1 и 2 соответственно.
Рисунок 1 – Методология разработки Scrum
Рисунок 2 – Методология разработки Kanban
Из анализа гибких методологий разработки было установлено, что в команде тестировщиков (QA-команда) сотрудники делятся на 3 вида:
Наиболее распространенная форма автоматизации тестирования – это тестирование приложений через графический пользовательский интерфейс. Популярность такого вида тестирования объясняется двумя факторами: во-первых, приложение тестируется тем же способом, которым его будет использовать человек, во-вторых, можно тестировать приложение, не имея при этом доступа к исходному коду.
В качестве средства автоматизации тестирования выступает Selenium Webdriver – драйвер браузера, то есть программную библиотеку, которая позволяет разрабатывать программы, управляющие поведением браузера. По своей сущности Selenium WebDriver представляет собой: спецификацию программного интерфейса для управления браузером, референсные реализации этого интерфейса для нескольких браузеров, набор клиентских библиотек для этого интерфейса на нескольких языках программирования.
Драйвер – не имеющая пользовательского интерфейса программная библиотека, которая позволяет различным другим программам взаимодействовать с браузером, управлять его поведением, получать от браузера какие-то данные и заставлять браузер выполнять какие-то команды [3].
Фреймворк для автоматизации тестирования является Jasmine, который использует веб-драйвер Selenium. Jasmine – это BDD фреймворк для тестирования JavaScript кода.
Главной особенностью проекта Lang-book является то, что он написан на Angular 5 – одна из самых популярных библиотек для создания сложных Frontend-приложений. Для автоматизации интерфейсов, которые написаны на Angular используется библиотека автоматизации тестирования Protractor – end-to-end фреймворк для автоматизации Angular-приложений, очень широко распространёна в бизнес-IT направлении. Protractor довольно легко портируется на другие языки – он использует небольшое подмножество протокола JsonWire на котором основан Selenium WebDriver, а именно всего один интерфейс. Принцип работы автоматизированных тестов представлен на рис. 3 [4].
Рисунок 3 – Структура работа автоматизированных тестов
В качестве шаблона проектирования используется Page object. Это шаблон проектирования, который широко используется в автоматизированном тестировании и позволяет разделять логику выполнения тестов от их реализации. Page Object как бы моделирует страницы тестируемого приложения в качестве объектов в коде. В результате его использования получатся отдельные классы, отвечающие за работу с DOM-элементами каждой конкретной веб-страницы. Такой подход значительно уменьшает объем повторяющегося кода, потому что одни и те же объекты страниц можно использовать в различных тестах.
Основное преимущество Page Object заключается в том, что в случае изменения пользовательского интерфейса, можно выполнить исправление только в одном месте, а не исправлять каждый тест, в котором этот интерфейс используется.
Класс PageObject не обязательно должен представлять собой всю страницу. Он может быть частью страницы, которая часто используется на сайте (или даже на одной странице). Основной принцип состоит в том, что есть только один класс в проекте, который знает о структуре HTML конкретной страницы или ее части [5].
Существует большая разница между логикой тестирования (что проверить) и его реализацией (как проверить). Пример тестового сценария: пользователь вводит неверный логин или пароль, нажимает кнопку входа, получает сообщение об ошибке. Этот сценарий описывает логику теста, в то время как реализация содержит в себе такие действия как поиск полей ввода на странице, их заполнение, проверку полученной ошибки. И если, например, изменится способ вывода сообщения об ошибке, то это никак не повлияет на сценарий теста, все также нужно будет ввести неверные данные, нажать кнопку входа и проверить ошибку. Но это напрямую затронет реализацию теста – необходимо будет изменить метод получающий и обрабатывающий сообщение об ошибке. При разделении логики теста от его реализации авто-тесты становятся более гибкими и их, как правило, легче поддерживать.
Рисунок 4 – Шаблон проектирования Page object
Автоматизация тестирования обучающей системы
Программная реализация заключалась только в покрытии автоматизированными тестами пользовательских сценариев использования проекта Lang-Book.
Для программной реализации выбранного процесса тестирования данной системы использованы следующие инструментальные средства: JavaScript, Xpath, CSS, Selenium WebDriver, Jasmine, Protractor, Node JS, Yarn, REST API Request npm framework.
JavaScript – язык программирования, который поддерживает объектно-ориентированный, императивный и функциональный стили. Является реализацией языка ECMAScript.
Jasmine – это BDD фреймворк для тестирования JavaScript кода.
Xpath – язык запросов к элементам XML-документа. Разработан для организации доступа к частям документа XML в файлах трансформации XSLT. XPath призван реализовать навигацию по DOM в XML. В XPath используется компактный синтаксис, отличный от принятого в XML.
CSS – каскадные таблицы стилей, используются для описания внешнего вида документа, написанного языком разметки.
Selenium WebDriver – это драйвер браузера, который позволяет разрабатывать программы, управляющие поведением браузера.
Protractor – e2e тест-фреймворк сделанный на основе WebDriverJS, который приходит на смену первоначальным e2e тестам AngularJS.
Node.js – это среда выполнения JavaScript, построенная на JavaScript-движке V8 из Chrome.
Yarn – это менеджер пакетов. Его целью является решение целого ряда проблем, с которыми столкнулись разработчики при использовании npm, а именно: установка пакетов не была достаточно быстрой и последовательной; существовали проблемы с безопасностью, так как npm позволяет пакетам запускать код при установке.
Заключение
При анализе актуальных вопросов разработки и создания системы тестирования прикладного программного обеспечения для образовательного проекта “Электронный учебник Lang-book” были рассмотрены вопросы использования современных интернет-технологий в разработке автоматизированных тестов на языке программирования JavaScript. В качестве рассматриваемой методологии разработки была выбрана гибкая методология разработки Agile. На её основе были составлены роли для QA-команды, чтобы соответствовать требованиям методологии разработки. Были выбраны инструментальные средства для автоматизации пользовательских интерфейсов.
Литература
Шевелёв И.А., Федяев О.И., Коломойцева И.А. Система тестирования прикладного программного обеспечения для образовательного проекта “Электронный учебник Lang-Book”. В работе рассматриваются особенности процессов тестирования и автоматизации образовательного проекта для московских школ, который предоставит возможность улучшить систему образования в России, помочь абитуриентам успешно подготовиться к ЕГЭ, поступить в ВУЗ. Анализ проекта даёт возможность составить и поддерживать процессы комплексного тестирования проекта и обеспечить качество тестирования за счёт покрытия интерфейса автоматизированными программными тестами. Для решения этой задачи используется анализ существующих процессов ручного тестирования и автоматизации пользовательских интерфейсов, средства для автоматизации, как Selenium, Jasmine, Protractor, которые будут использованы на языке JavaScript.
Ключевые слова: образовательный проект, электронный учебник, автоматизация тестирования
Shevelov I.A., Fedyaev O.I., Kolomoitseva I.A. System testing application software for the educational project "Electronic Lang-Book". The paper discusses the following processes of testing and automating an educational project for Moscow schools, providing an opportunity to improve the education system in Russia, help applicants to successfully prepare for the USE, and enter the university. Project analysis: creation and support of integrated project testing processes and quality assurance of testing due to interface coverage with automated software tests. To solve this problem, we use analysis of processes like Selenium, Jasmine, Protractor, which will be used in the JavaScript language.
Keywords: educational project, electronic textbook, test automation