Сегодня стартует новая рубрика под названием «PRO». Она задумывалась как свободная тематика про и около тестирования в широком смысле этого термина.
В данной рубрике подразумеваются различные подтемы: про исследования, конференции, книги, материалы в видео и текстовом формате. Про все, что может служить вдохновением, способствовать возникновению идей и просто цеплять своей энергетикой. И, конечно, все это про тестирование.
А начну со статьи.
Случайно, как часто это у меня бывает, наткнулся на статью про автоматизацию процессов тестирования с использованием алгоритмов машинного обучения и компьютерного зрения в электронном издании «Журнал Сибирского федерального университета. Техника и технологии» за 2022 год.
В данной статье специалисты Сибирского федерального университета г.Красноярск и Высшей школы экономики г.Москва предложили архитектуру интеллектуальной системы тестирования графического интерфейса пользователя.
Ниже я попробовал выделить основные моменты из статьи.
Цель: один сценарий тестирования для разных интерфейсов
На сегодняшний день одной из главных особенностей любого программного обеспечения является графический интерфейс, обеспечивающий «общение» между программой и пользователем.
Современные интерфейсы соревнуются в красоте, функциональности и простоте. Оставаясь при этом привычными или, наоборот, привнося что-то свое и задавая новые тенденции и каноны.
В статье затрагивается тема интеграционного тестирования через взаимодействие с графическим интерфейсом пользователя:
«Тестирование графического интерфейса пользователя (ГИП) – одна из задач интеграционного тестирования. Оно позволяет проверить как работоспособность продукта, так и количество действий или, другими словами, число шагов пользователя для достижения результата. Существуют инструментальные средства, направленные на автоматизацию данного процесса. Очевидна целесообразность их использования в процессе разработки любого программного обеспечения, имеющего ГИП.
Специфика работы данных инструментов основана на имитации действий пользователя программного обеспечения. Эти действия можно описать с применением сценариев, определяющих последовательность перемещений курсора мыши, нажатий на ее клавиши, ввода данных с клавиатуры, а также функций, определяющих взаимодействие с компьютером посредством других внешних устройств. Инструмент для тестирования ГИП, в свою очередь, реализует описанные взаимодействия, используя встроенные модули, имитирующие работу внешних устройств в соответствии с заданным сценарием.»
И обозначаются проблемы, связанные с редизайном интерфейса и кроссплатформенностью:
«Запуская автоматические тесты, тестировщики ПО сталкиваются с рядом проблем. Например, интерфейс пользователя может зависеть от настроек отображения, изменяемых средствами операционной системы, не связанными с разрабатываемым программным продуктом. Данная проблема возникает при тестировании ПО с использованием различных оконных менеджеров и разрешений экрана. Проблемы с тестированием ГИП могут возникать и при отсутствии средств, обеспечивающих кроссплатформенное тестирование. Это приводит к значительному увеличению затрат на адаптацию имеющихся тестов под разные платформы. Следствием указанных ограничений является ситуация, при которой многие решения в процессе тестирования предлагается возлагать на тестировщика.»
А одним из возможных вариантов решения данных проблем предлагается создание модульной интеллектуальной системы на основе машинного обучения и компьютерного зрения:
«В связи с отсутствием аппарата для межплатформенного ввода и обработки информации актуальна задача разработки инструмента тестирования ГИП, использующего интеллектуализацию, основанную на методах машинного обучения для тестирования ГИП в независимой от платформы вычислительной среде и проведения тестирования без прямой связи с проверяемым приложением.»
Концепция интеллектуальной системы тестирования
Интеллектуальная система тестирования (ИСТ) - это программно-аппаратный комплекс, позволяющий выполнять сценарии взаимодействия с ПО, на основе использования интеллектуальных подходов со следующими принципами:
- Независимость от внутреннего устройства тестируемого ПО;
- Переносимость сценариев между реализациями, исполняемыми в разных системах, размерах экранов, разрешений и т. д.;
- Адаптивность для использования с различными типами шрифтов, цветами, отступами и другими изменчивыми свойствами ГИП.
Что из себя представляет сценарий тестирования для ИСТ?
Это набор команд, описывающих взаимодействие пользователя и тестируемого ПО. Из параметров в нем задается лишь тип объекта и его название.
Данный подход позволяет сценарию оставаться кроссплатформенным, независимым и переносимым. А так же не требует от тестировщика знаний о внутреннем устройстве тестируемого ПО.
Однажды написанный сценарий в дальнейшем не нуждается в корректировке для различных вариаций шрифтов, визуальных эффектов и прочего. Задачи по работе с этими параметрами ложатся на интеллектуальные алгоритмы распознавания, обеспечивающие отсутствие зависимости от настроек отображения.
Что из себя представляет процесс тестирования?
- Тестировщик загружает сценарий тестирования в ИСТ для инициализации процесса.
- В ИСТ тестирование производится через постоянное сканирование экрана тестируемого ПО, распознавание на нем элементов ГИП и взаимодействие с этими элементами через симуляцию нажатий реального пользователя.
- По завершении выполнения сценария система предоставляет отчет о проведенном тестировании и завершает работу.
Архитектура интеллектуальной системы тестирования
Архитектура ИСТ состоит из взаимодействующих между собой систем и модулей:
- Модуль чтения ГИП;
- Модуль сценариев тестирования;
- Модуль обработки инструкций;
- Система управления элементами ГИП.
Взаимодействие модулей ИСТ между собой происходит при выполнении команд тестового сценария в цикле.
Перед запуском цикла выполнения сценария необходимо получить актуальное изображение тестируемого ПО от «Модуля чтения ГИП». Данный модуль сканирует экран и сверяет полученное изображение с текущим состоянием. В случае нахождения различий новое состояние экрана отправляется в «Модуль сценариев тестирования». Получение изображения может быть произведено как захват экрана (если ИСТ запущен на одном компьютере с тестируемым ПО) или как съемка экрана (если тестируемое ПО и ИСТ запущены на разных компьютерах).
После получения актуального изображения «Модуль сценариев тестирования» может переходить к выполнению команды тестового сценария. Получая актуальное состояние экрана тестируемого ПО и информацию о наличии ошибок, модуль, основываясь на текущем сценарии, может продолжить выполнение сценария, сделать вывод по выполнению сценария или запустить следующую команду сценария.
Далее команда передается из «Модуль сценариев тестирования» в «Модуль обработки инструкций», а так же, в него передается и актуальное состояние тестируемого ПО в виде изображения.
«Модуль обработки инструкций», используя алгоритмы компьютерного зрения, находит координаты элемента ГИП с указанным в команде типом и названием.
Получив координаты элемента ГИП, ИСТ готова к взаимодействию с тестируемым ПО. Координаты отправляются в «Систему управления элементами ГИП». Основываясь на типе взаимодействия, указанного в команде, ИСТ имитирует действия пользователя. Воздействие на тестируемое ПО может быть произведено одним из следующих способов:
- Программно, через интерфейсы доступа. ИСТ запускается на одном компьютере с тестируемым ПО, в результате чего получает возможность воздействовать на устройства ввода через программные интерфейсы доступа.
- Подключение к физическим интерфейсам доступа. ИСТ запускается на отдельном компьютере, который соединяется с компьютером, на котором запущено тестируемое ПО посредством подключения к физическим интерфейсам и отправки через них команд, имитирующих команды, посылаемые клавиатурой и мышью.
- Роботизированные руки. Использование роботизированной техники позволит ИСТ не взаимодействовать напрямую с компьютером, на котором запущено тестируемое ПО, вместо этого ИСТ будет подавать команды роботу, который, в свою очередь, используя клавиатуру и мышь, будет взаимодействовать с тестируемым ПО.
Что можно почерпнуть из статьи?
Если прямо отвечать на данный вопрос - то только идею. Потому что в статье предлагается концепция без нюансов ее реализации. Какие нейронные сети подразумевается использовать? Как дообучать нейронные сети новым элементам интерфейса и сможет ли этот процесс запустить тестировщик? Или нейронная сеть будет обучаться сама в процессе взаимодействия с графическим интерфейсом?
Впрочем, формат данной статьи и не должен отвечать на данные вопросы.
Но, давайте, порассуждаем. Только не на вопросы, описанные выше, а попробуем понять, в каких случаях можно использовать данную концепцию для тестирования программных продуктов 1С?
- С одной стороны, при решении точечных задач.
Например, тестирование полей HTML в формах 1С. Для тестирования таких форм приходится использовать сторонние средства. Одним из самых распространенных является SikuliX, основанный на визуальном взаимодействии с графическим интерфейсом при помощи заранее созданных скриншотов. Но он очень чувствителен к изменениям параметров графического интерфейса. Потому использование нейронных сетей даст лучший результат и гибкость при тестировании таких форм.
- С другой стороны, это создание альтернативного полноценного инструмента для автоматизированного тестирования на базе визуального взаимодействия с интерфейсом.
Все, начиная от интерактивных действий и заканчивая сверкой записей регистров возможно реализовать через сканирование экрана. Компьютерное зрение и алгоритмы вместо человеческих глаз и интуиции.
Конечно, это только один класс решаемых задач. Их гораздо больше и они разнообразны по своим потребностям. Новые технологии должны помочь расширить варианты их решения. Или открыть саму возможность их реализации.
К чему я веду свою мысль? «Незрелые поэты подражают; зрелые поэты воруют…» Идеи, размышления, оброненные мысли в статьях или других источниках для кого-то могут быть просто словами, а для кого-то первым шагом перед новыми открытиями. А что они для Вас?