Печатные публикации

#1: Тестирование работоспособности промышленного компьютера


Анна Сергеева. Тестирование работоспособности промышленного компьютера // КиТ. 2014Анна Сергеева. Тестирование работоспособности промышленного компьютера // Компоненты и технологии. 2014. № 2.


Автор показывает, зачем и как необходимо применять тестирование промышленных компьютеров для небольших систем управления, до внедрения на объекте заказчика. Предлагается для проведения работысформировать базу в виде установки открытой операционной системы Ubuntu, после установки которой выполняется установка рабочей программной среды OpenSCADA. Далее автор предлагает сосредоточиться на тестах, проводимых на этапе предварительного тестирования (pre-testing) работоспособности. Описана методология тестирования Agile. Выполнен обзор инструментов функционального и нагрузочного тестирования.


Опубликовано в разделе "Встраиваемые системы"


Эта же статья на сайте журнала


Введение


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


И, к сожалению, пожалуй, каждый системный интегратор не понаслышке знает, какой может быть цена аварий и сбоев оборудования на промышленных объектах. Вот если бы была возможность удостовериться в работоспособности такого оборудования до монтажа и запуска в эксплуатацию...


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


Конечно, вы можете протестировать промышленные компьютеры у себя в офисе. Но, дело в том, что сам по себе компьютер —это только часть системы. Есть еще и периферия, и линии связи, и есть сеть. Причем, как это часто бывает, часть периферии невозможно протестировать «на столе», поскольку, например, клапаны могут быть вмонтированы в трубопроводы «намертво». А вам все же хочется удостовериться в работоспособности такого оборудования, что в промышленных вариантах исполнения имеет особую важность.


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


Выбор ОС. Почему Ubuntu 12.04 LTS


В качестве операционной системы для тестирования оборудования автор остановил выбор на Ubuntu [1]. Это операционная система, базирующаяся на Debian GNU/Linux. Основными ее достоинствами являются:


  • свободное, то есть, абсолютно бесплатное программное обеспечение, его распространенность и доступность.


  • хорошая финансовая поддержка спонсора и основного разработчика, компании Canonical [2]. А это означает, что проект Ubuntu является долгосрочным и активно развивающимся.


  • широкое сообщество пользователей и разработчиков. Такая, надо заметить, постоянно растущая популярность доказывает, что система высоко и оправданно зарекомендовала себя на рынке операционных систем.


  • надежность и гибкость плюс масштабируемость системы, что немаловажно в промышленных системах управления.


  • напомним также, что под стандартной ОС легко протестировать любую стандартную периферию, создать сетевые приложения для дистанционного тестирования и графические приложения для вывода информации о прохождении тестов для оператора [3].


Поговорим немного о версиях данной операционной системы. Релизы Ubuntu, имеющие индекс LTS (Long Term Support, то есть, «долгосрочная поддержка») имеют более длительную поддержку от компании Canonical, чем большая часть релизов Ubuntu. Заявлено следующее запланированное обновление пакетов: для пользовательских версий на срок до 3 лет, и для серверных – до 5 лет, с учетом оплачиваемой техподдержки от Canonical на протяжении этого периода. До момента выхода более новой версии LTS также время от времени выходят пакеты обновления для текущей версии LTS. Они имеют то же самое кодовое наименование, только различаются дополнительной цифрой, указываемой после номера версии.


На момент написания статьи (октябрь 2013 года) в качестве LTS версии разработчик заявил релиз Ubuntu 12.04 LTS с кодовым именем Precise Pangolin (Педантичный Ящер). Обратим внимание, что, начиная с текущей версии, техническая поддержка для релизов LTS составит пять лет как для персональных и планшетных компьютеров, так и для серверов.


Установка ОС


Итак, с операционной системой мы определились, самое время решать вопрос ее установки. Установить ОС Ubuntu можно различными способами.


Например, поставить с имеющегося компакт-диска. Этот тривиальная задача, с ней справится любой штатный системный администратор.


Однако, не стоит забывать, что надежность хранения данных на компакт дисках, в силу их привычки ломаться и царапаться, не идет ни в какое сравнение с флэш-картой.


Начнем с того, что далеко не каждое устройство снабжено оптическим приводом, а это значит, вы не можете установить операционную систему с компакт диска. В частности, это особенно насущный вопрос, когда необходимо поставить систему на промышленный компьютер. Ничего страшного, ведь разъем-то для USB у такого устройства, как правило, имеется, и всегда можно воспользоваться установкой с флэш-накопителя. На наш взгляд, у такого подхода гораздо больше плюсов.


При создании флэш с загрузочным пакетом операционной системы Ubuntu для работающих собственно из-под какой-либо версии Ubuntu предназначена специальная встроенная утилита usb-creator-gtk. Она представлена на рисунке 1.



Рис.1. Интерфейс Ubuntu-утилиты usb-creator-gtk для создания загрузочного диска.


Для пользователей Windows существует утилита UNetbootin, которая быстро и удобно создаст необходимую загрузочную флэшку Ubuntu. Дистрибутив программы можно скачать здесь [4]. Интерфейс утилиты приведен на рисунке 2.



Рис.2. Интерфейс Windows-утилиты UNetbootin для создания загрузочного диска.


Наконец, отметим, что такой подход к установке системы Linux позволяет значительно сократить затраченное время. Так, выгода тем больше, чем на большее количество компьютеров система должна быть поставлена.


Дальнейшие действия. Установка и настройка программной среды


Итак, на данном этапе имеем компьютер с установленной ОС Ubuntu 12.04 LTS.


Также напомним, что, при необходимости, выполняется дополнительная настройка тех или иных драйверов, в зависимости от конкретной реализации оборудования.


Затем следует инсталляция и настройка конкретной среды программных приложений, которые планируется задействовать для работы системы. Как правило, устанавливается SCADA-система (Supervisory Control And Data Acquisition, диспетчерское управление и сбор данных), такая, например, как свободно распространяемый проект OpenSCADA, предлагаемый на рынке программ для АСУ ТП (автоматизированных систем управления технологическими процессами).


Система OpenSCADA находит свое применение как на промышленных объектах, в роли полнофункциональной системы SCADA, так и во встраиваемых системах, в виде среды исполнения [5]. Пример проекта системы автоматизированного управления, реализованного в OpenSCADA, приведен на рисунке 3.



Рис. 3. Проект OpenSCADA - Система автоматизированного управления уровнем шаровых мельниц


Данная программная среда предназначена для сбора, архивирования, визуализации данных, выдачи сигналов управления и прочих операций, которые свойственны для полнофункциональной системы SCADA. Она соблюдает принципы многоплатформенности, модульности и масштабируемости.


Таким образом, результатом выполнения описанных выше действий является сформированная база, готовая для дальнейшего проведения предварительного тестирования (pre-testing) работоспособности промышленного компьютера.


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


Но, чтобы процесс тестирования не превратился в набор хаотичных манипуляций, необходимо применять системный подход. Поэтому приведем немного теории.


О методологиях тестирования


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


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


Существующие на сегодняшний день итерационные методики (agile, extreme programming, scrum и другие) значительно сокращают цикл проектирование-разработка-тестирование-внедрение за счет того, что более эффективно реагируют на модификацию требований, а также дают разработчикам и отладчикам более оперативно получать обратную связь по вопросам качества.


В данном классе методология Agile является наиболее успешной [6]. Она предполагает предварительную запланированную разработку тестов, а процесс тестирования включает в себя большое число итераций с обязательным обеспечением непрерывной обратной связи.


Для проекта Agile характерно разбиение больших задач на более мелкие осмысленные части, так чтобы была возможность отладить каждую из них независимо от других, а также максимально обеспечить их независимость от других задач (например, задача обслуживания LCD-индикаторов, задача контроля GPRS, задача опроса АЦП и так далее).


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


На рисунке 4 показан цикл разработки и выполнения тестов по методологии Agile.


Рис. 4. Цикл разработки и выполнения тестов по Agile.


Такой методологии также свойственно следование корректировке планов, а также частое и раннее тестирование, а это значительно упрощает внесение изменений, которые неизбежно возникают в ходе существования всего проекта. По возможности, тесты автоматизируются и повторяются после каждой модификации внедряемого объекта, что помогает избежать нежелательных последствий. Отметим, что фаза раннего тестирования, предполагаемая в Agile, соответствует концепции предварительного тестирования, предлагаемого автором в данной статье.


Особенности встраиваемых систем


Если для разработчиков встраиваемого программного обеспечения такой подход является весьма интересным, то в индустрии встраиваемых аппаратно-программных систем все обстоит немного сложнее.


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


А вот во встраиваемых приложениях все с точностью до наоборот. Программное обеспечение практически всех уровней либо является заново разрабатываемым, либо подвергается модификации. Впрочем, также все это может происходить и параллельно.


Еще один немаловажный момент. Тестирование встраиваемого программного обеспечения в обязательном порядке должно выполняться на реальном целевом оборудовании,а последнее, в свою очередь, может быть «сырым» или ограниченно доступным.


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


На рисунке 5 предлагается схема пофазового проведения тестов в разных средах.



Рис. 5. Повторное выполнение регрессивных тестов в разных средах.


Преимущества Agile


С точки зрения команды участников проекта Agile несет следующие преимущества:


  • концентрация на каждом отдельно взятом функциональном узле аппаратуры и какие сценарии отказов необходимо проверять;

  • профилактика дефектов, поскольку функциональные узлы проверяются по мере их подключения к системе; автоматизация тестов позволяет мгновенно обнаруживать и устранять проблемы сразу же после их исправления;

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


С позиции руководства проекта Agile предоставляет:


  • предсказуемость сроков выпуска проекта;

  • повышение качества поставляемой продукции;

  • наибольшее совпадение с требованиями заказчиков с минимального числа попыток;

  • ускорение разработки на фоне снижения рисков и затрат.


Таким образом, раннее тестирование, предусмотренное в рамках методологии Agile, дает возможность устранить часть проблем заранее, что сокращает объемы более трудоемкого тестирования и отладки на реальной аппаратуре уже в процессе ее работы, когда для устранения неполадок придется приостанавливать производство.


О средствах тестирования


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


Со временем стали появляться первые средства автоматизации тестирования, поскольку практический опыт показал низкую эффективность ручного тестирования, ибо оно требует много времени и трудозатрат. Такие первые инструменты автоматизации по сути являлись библиотеками, которые можно было применять для написания тестов, а это, в свою очередь, требовало от тестировщика уровня программирования, сопоставимого с уровнем разработчика. Но прогресс не стоит на месте, и современные инструменты автоматизации тестирования требуют от человека минимума действий для написания тестов.


Условно инструменты автоматизации тестирования можно классифицировать на средства функционального тестирования и средства нагрузочного тестирования. Первые предназначены для проверок соответствия программного обеспечения бизнес-требованиям, предъявляемым к нему. Вторые служат для оценки производительности программных продуктов.


Рынок инструментов функционального тестирования на сегодняшний день предоставляет множество решений. К лидирующим компаниям можно отнести:


  • HP (WinRunner, QuickTest Professional)

  • Borland (SilkTest)

  • IBM (Functional Tester, Robot)

  • AutomatedQA (TestComplete).


Стоит отметить, что часть из этих средств, представляющих собой среды для разработки приложений, используют «промышленные» языки программирования (так, например, для разработки скриптов VB использован язык QTP, а Functional Tester исполнен в среде Eclipse, что дает возможность написания Java-скриптов). Другие же используют адаптированные или собственные, специально разработанные, языки (в частности, TestComplete использует язык 4Test, а Robot – язык SQABasic). Многие из этих инструментов предназначены для тестирования веб-приложений, либо консольных, запрограммированными в .Net или Java [7].


Что касается нагрузочного тестирования, то здесь механизм функционирования инструментов более сложный. Выполняется перехват трафика между сервером и тестируемой программой, затем эти данные представляются в виде, удобном для работы и анализа.


Поскольку, в силу сложности и многофункциональности современного программного обеспечения, выполнение только лишь одного функционального тестирования явно недостаточно, практически все производители средств автоматизации тестирования выпускают инструменты автоматизации нагрузочного тестирования. Так, например, HP предлагает LoadRunner, а IBM - Performance Tester и Robot.


Также существуют и широко востребованы среды поддержки тестирования. Они служат для хранения тестовых сценариев, учета требований, дают возможность управлять процессом выполнения тестов, вести учет обнаруженных дефектов, выполнять анализ проведенных работ.


Безусловным лидером здесь является продукт HP Quality Center, который интегрируется со средствами функционального (HP QuickTest Professional) и нагрузочного (LoadRunner) тестирования. Он же обеспечивает полное управление процессом тестирования.


При выборе конкретных инструментов тестирования одним из ключевых моментов является возможность интеграции этих инструментов с программным обеспечением, используемым в данной компании. Например, если для разработки программного обеспечения и автоматизации в компании уже используются продукты IBM, то в качестве инструмента тестирования выбирать TestComplete, возможно, не так уж и рационально.


Для инструментов функционального тестирования важным фактором является поддержка той или иной среды разработки, автоматическая регистрация обнаруженных дефектов, наличие сценариев восстановления, возможность предоставления отчетности о тестировании. Для нагрузочного тестирования необходим поддержка протоколов, которые использованы тестируемой программой, возможность гибкой настройки тестовых сценариев, наличие встроенных средств мониторинга серверных аспектов, наличие средств анализа результатов и предоставления отчетности.


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


Также стоит учитывать и фактор исполнителей, то есть, стиль работы и опыт конкретных инженеров службы обеспечения качества.


Заключение


На этом автор предлагает читателю приостановиться в данном описании, ибо просто не представляется возможным расписать все нюансы и поделиться всей информацией и накопленным опытом в рамках одной небольшой статьи.


Тем не менее, основные вехи намечены, материал для размышлений предоставлен. Подведем итоги вышеизложенного.


В результате установки и настройки на исследуемом компьютере свободно распространяемой и вместе с тем надежной ОС Ubuntu, тестировщик получает базу для проведения дальнейших работ.


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


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


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


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


Положительные результаты, обеспеченные на этапе предварительного тестирования дают возможность уверенно заявить о том, что проверенное оборудование, развернутое на объектах, гарантирует бо`льшую надежность работы. При этом оптимизация затрат времени и сил полностью окупаются при эксплуатации на объекте, поскольку существенно снижается процент отказов и аварий, что весьма важно в промышленной сфере.


Литература


[1] http://www.ubuntu.com/

[2] http://www.canonical.com/

[3] http://www.ubuntuforums.org/

[4] http://unetbootin.sourceforge.net/

[5] http://oscada.org/

[6] П. Хендерсон, Дж. Греннинг «Применение итерационных методик для тестирования встраиваемого ПО» «Современные технологии автоматизации» 04/2012 «СТА-ПРЕСС».

[7] П. Можаев «Средства автоматизированного тестирования» 03/2009 «Открытые системы».