Автоматизированное тестирование прошивок в iRZ: от идеи до реализации

№ 4’2019
PDF версия
В идеальном мире программисты никогда не ошибаются, а тестировщиков не существует. В жизни, конечно, все обстоит иначе, и любая программа требует тщательной проверки. Статья рассказывает о том, как компания «iRZ Электроника» пришла к автоматизированному тестированию прошивок и что из этого получилось.

Введение

Представим на минуту, что мы живем в идеальном мире. В мире, где все, что создано руками людей, работает стабильно и предсказуемо. Нет никаких «Компьютер вдруг перезагрузился, а я ничего не сохранил!», «Новая микроволновка опять не подогрела мой обед!», «Банкомат зажевал мою купюру!»…

И модемы не зависают. Ни те, что круглыми сутками беспрерывно обмениваются данными с организациями в дальних городах. Ни даже те, что установлены где-то в подвалах или шахтах и уже долгое время не обслуживаются. Реально ли создать промышленный модем, который будет вовремя и в полном объеме передавать нужную информацию безо всяких неприятностей? Мы считаем, что да — благодаря всестороннему и глубокому тестированию встроенного программного обеспечения (ПО).

 

Переломный момент

Раньше встроенное ПО модемов в «iRZ Электроника» проверяли вручную. Тестировщик устанавливал новую прошивку на устройство и работал с ним по стандартным пользовательским сценариям: подключить к прибору учета, установить связь с сервером, запросить данные и т. д.

В первое время такой подход был вполне успешным: выпускаемая продукция работала без нареканий. В дальнейшем компания стала расширять функциональность устройств. Модемы научились передавать данные не на один, а на пять серверов одновременно, отправлять SMS-сообщения, взаимодействовать с GPIO и т. д. С каждым разом проверка ПО занимала все больше времени и порой растягивалась на несколько месяцев.

Однажды, несмотря на упорный труд отдела тестирования, была выпущена прошивка с ошибкой. Модем при определенных настройках некорректно передавал на сервер данные от регулятора (устройство, которое поддерживает заданное значение температуры теплоносителя). В процессе проверки сотрудник просто не воспроизвел данный сценарий, и ошибку обнаружил пользователь. Конечно, сразу же была выпущена новая версия прошивки, в которой неисправность была устранена. Но инцидент явно показал, что с помощью ручного тестирования уже невозможно обеспечить высокое качество продукции, поэтому пора переходить к автоматизированному тестированию.

 

Собственная разработка

Если говорить упрощенно, при автоматизированном тестировании одна программа проверяет другую. Тестировщики в идеале просто нажимают на кнопку, и прошивка протестирована, работает без сбоев (если программисты тоже не ошибаются).

На практике оказалось, что нет ни одной программы, способной протестировать все функции модема. И даже сложные программные комплексы с большим количеством кнопок, вкладок и окошек не справятся с этой задачей. Просто потому что модем — это именно связка «железо» + «софт», и для его проверки нужно определенным образом взаимодействовать с оборудованием: подавать сигналы на коммутирующее реле, источники нагрузки, GPIO и т. п.

В «iRZ Электроника» решили создать собственный программно-аппаратный комплекс (ПАК), который будет полноценно работать с модемом и таким образом тестировать функциональность его встроенного ПО.

Разработка ПАК включала несколько крупных этапов:

  1. Утвердить архитектуру.
  2. Выбрать аппаратное обеспечение.
  3. Выбрать или разработать ПО.
  4. Запустить всю систему и тестировать прошивки автоматизированно.

 

Архитектура ПАК

В процессе разработки архитектуры были сформулированы требования к ПАК:

  • Эффективность. ПАК тестирует прошивку модема с максимальной глубиной: выполняет одни и те же тесты при разных настройках устройства, моделирует нестандартные и негативные сценарии (обрыв связи, перепад напряжения и пр.). ПАК тестирует прошивки для разных моделей устройств одновременно.
  • Расширяемость. Если прошивка наделяет модем новыми функциями, тест для проверки этих функций легко добавить к остальным тестам.
  • Масштабируемость. Если компания выпускает новую модель модема, аппаратные блоки для проверки ее прошивки легко внедряются в структуру ПАК.
  • Адекватная стоимость.

Исходя из этих требований утверждена архитектура, которая представлена на рис. 1, и на ее основе создан сам ПАК тестирования.

Общая схема ПАК тестирования прошивок модемов

Рис. 1. Общая схема ПАК тестирования прошивок модемов

 

Аппаратное обеспечение

Как видно из схемы, аппаратная часть ПАК состоит из управляющего сервера, проверяющих модулей, коммутатора и вспомогательных модулей.

Управляющий сервер — это серверный компьютер, где хранятся тесты. Сервер передает эти тесты на проверяющие модули, и уже они взаимодействуют с модемами.

В качестве проверяющих модулей выступают мини-компьютеры Raspberry PI — палочка-выручалочка для разработчиков. Такое устройство хоть и не обладает сверхмощными характеристиками, но с легкостью управляет нужными для тестирования компонентами. В его плате предусмотрены разъемы GPIO для низкоуровневой периферии (датчиков, реле и пр.), Ethernet-порт для сети, USB для флэшек или иного оборудования. Привлекает и низкая цена компьютера — в среднем $10–35 в зависимости от модели.

Получив тест, проверяющий модуль последовательно выполняет записанные в нем действия. Например, подключиться к модему → отправить настройку → отправить данные. Далее он сравнивает реакцию устройства с той, что прописана в тесте, и отправляет результат обратно на управляющий сервер.

Проверяющий модуль не требует особых настроек и легко встраивается в архитектуру ПАК. В текущем решении участвуют два вида таких модулей: один вид используется для тестирования модемов, второй — для тестирования роутеров. В ближайшее время будут добавлены еще несколько модулей, поскольку «iRZ Электроника» планирует выпуск новых устройств.

Коммутатор распределяет тесты от сервера среди проверяющих модулей. Это стандартное устройство для работы с VLAN-сетями (англ. Virtual Local Area Network — виртуальная локальная сеть).

Под вспомогательными модулями обозначены GSM-модемы, которые по сигналу от сервера отправляют SMS-сообщения или звонят на модемы. Без их помощи невозможно полностью проверить прошивку, но они не выполняют тесты и не взаимодействуют с проверяющими модулями.

 

Программное обеспечение

Тест для прошивки представляет собой скрипт — самостоятельный программный код, выполняемый независимо от других скриптов. В «iRZ Электроника» скрипты пишут на Java (рис. 2).

Скрипт для проверки функции отправки SMS-сообщений

Рис. 2. Скрипт для проверки функции отправки SMS-сообщений

Каждый скрипт тестирует только одну функцию модема, но при разных настройках. Так, в рамках проверки функции «отправить данные прибору учета по RS-485» сама передача данных производится при скоростях 600, 1200, 2400 бод и т. д. В сумме модем обращается к эмулятору прибора учета до 10 000 раз за проверку — столь велико число разных сочетаний настроек, учитываемое скриптом.

Для того чтобы тестировщикам было удобно управлять всем процессом проверки, написан веб-интерфейс. С его помощью сотрудник выбирает скрипты из базы данных и задает порядок их выполнения, а затем наблюдает результаты (рис. 3).

Веб-интерфейс для управления тестированием

Рис. 3. Веб-интерфейс для управления тестированием

 

Сеть

Все элементы ПАК объединены в одну общую физическую сеть, внутри которой реализовано несколько VLAN-сетей. Благодаря технологии VLAN каждый проверяющий модуль работает с сервером так, будто других модулей в системе не существует: данные по выделенному каналу передаются напрямую и без задержек. Такой подход позволяет тестировать прошивки нескольких модемов одновременно.

 

Автоматизированное тестирование в реальности

От идеи внедрить ПАК до ее реализации и первых автотестов прошло около полугода. За это время собрали и настроили «железо», написали пару десятков скриптов.

Создание скрипта — дело столь же важное, как и разработка прошивки, и занимает много времени. Нужно продумать алгоритм, написать код, протестировать его, исправить ошибки и снова протестировать. Чтобы убедиться, что скрипт отрабатывает верно, с его помощью проверяют прошивку, которая ранее была признана исправной и передана пользователям. Если во время проверки модем ведет себя адекватно и выполняет все действия, прописанные в коде, значит сам скрипт ошибок не содержит и может отправиться в базу данных с тестами.

Зачастую проверить какую-то функцию модема вручную гораздо быстрее, чем создать для нее тест. И иногда возникают сомнения, а стоит ли овчинка выделки? В такие моменты следует помнить, какое огромное количество проверок выполняет ПАК и насколько скорость его работы превышает скорость работы человека. Скрипт «Передать данные с прибора учета на сервер» выполняется непрерывно около трех суток, но он проверяет функцию при всех комбинациях настроек модема. Ни один человек, как бы он ни был хорош в тестировании, не сможет выполнить такую задачу быстрее, чем за полмесяца. И это лишь в случае, если он откажется от перерывов и выходных.

 

Результаты и перспективы

С внедрением автотестов время на проверку прошивки модема сократилось до 2–3 недель. За этот период выполняется порядка 4–5 тысяч пользовательских сценариев.

С помощью ПАК в сумме проверяется около 75% функций модемов, и эта цифра планомерно растет. Функции, для которых еще не написаны скрипты, тестируются вручную.

Дополнительно вручную проверяется самая востребованная функциональность устройства: обмен данными с реальными приборами учета, настройка через компьютерную программу и Bluetooth-приложение ATM Control SE, взаимодействие с сервером iRZ Collector и т. п. Это нужно для того, чтобы охватить как можно больше пользовательских сценариев, даже не самых очевидных. Скрипт лишен фантазии, он каждый раз выполняет один и тот же алгоритм. Тестировщики же порой создают такие хитросплетенные схемы, благодаря которым им удается обнаружить специфические или редко воспроизводимые ошибки.

Также тестировщики работают с устройствами по уникальным сценариям клиентов. Например, одна из компаний-заказчиков использует модемы iRZ для управления светодиодной подсветкой территории. Это нестандартное применение модемов, в таком случае автоматизировать тестирование нецелесообразно: требуемые функции в полном объеме проверяются сотрудниками за несколько часов.

Таким образом, в «iRZ Электроника» не отказались от ручного тестирования в угоду автоматизированному, а применяют оба способа проверки одновременно, чтобы обеспечить высокое качество поставляемых решений.

Работа над автоматизацией тестирования не остановилась: ПАК развивается вместе с продукцией компании. В планах на ближайшее будущее — написать скрипты для стандартных функций модемов, которые еще проверяются вручную, а также доработать веб-интерфейс и внедрить систему уведомлений.

 

Заключение

Качественное встроенное ПО — залог надежной работы устройств. Чтобы обеспечить высокое качество, компания «iRZ Электроника» проверяет прошивки для модемов одновременно двумя способами: вручную силами тестировщиков и автоматизированно с помощью ПАК. ПАК воспроизводит функции модема с учетом разных сочетаний его настроек и обеспечивает широту и глубину проверки. Вручную тестировщики выполняют нетипичные сценарии и находят хитрые и неочевидные ошибки. Благодаря такому подходу шансы выпустить некачественный продукт сводятся к нулю, и мы становимся на шаг ближе к идеальному миру. Миру, в котором все, что создано руками людей, работает стабильно и предсказуемо.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *