Введение от автора поста
Имея опыт разработки ПО для ответственных систем более чем 8 лет, хочу познакомить сообщество с некоторыми материалами, связанными с разработкой и верификацией ПО для ответственных систем (аэрокосмическая область, медицина, транспорт и промышленность). Получив согласие на перевод и адаптирование ряда интересных статей у зарубежных коллег решил воспользоваться данным ресурсом. Буду рад, если статья заинтересует наше сообщество. В статье использованы материалы фирмы Vector Software, Inc. и рассматривается пример использования автоматизированного верификационного инструментария VectorCAST.
В статье мы акцентируем внимание на стандартах DO-178B/C (КТ-178В), но данная статья актуальна и для применения в соответствии со стандартами: EN 50126, IEC 61508, ISO 26262, FDA, IEC 62304.
На вопросы отвечу в комментариях или в личку.
Введение
В этой статье, мы рассмотрим каким образом платформа тестирования встроенного программного обеспечения (ПО) VectorCAST может быть использована для достижения целей процесса верификации ПО, определенного в разделе 6.0 стандартов DO-178B и DO-178C (КТ-178В) «Требования к программному обеспечению бортовой аппаратуры и систем при сертификации авиационной техники». В документе также освещаются различия между двумя стандартами в части раздела 12 «Процесс квалификации инструментального ПО».
Что такое стандарты DO-178B и DO-178C
DO-178B был впервые опубликован в декабре 1992 года RTCA, Inc. В документе были изложены основные принципы, применяемые организациями, которые разрабатывают бортовую аппаратуру и сертифицирующими органами, такими как FAA, EASA, TransportCanada. Разработка DO-178B была результатом совместных усилий RTCA и EUROCAE, последние опубликовали документ под названием ED-12B. Команды разработчиков ПО при органах сертификации (CAST) разработали уточняющую документацию после первоначальной публикации.
DO-178C заменит DO-178B как основной документ, согласно которого сертифицирующие органы одобряют все коммерческие аэрокосмические системы, имеющие в своем составе ПО. Документ DO-178C пересматривает DO-178B в свете опыта и информации, собранной с учетом развития ПО в сфере авионики. Новый документ, названный DO-178C (ED-12C) был подготовлен в ноябре 2011 года, одобрен RTCA в декабре 2011 года и стал доступным для использования в январе 2012 года.
И DO-178B, и DO-178C (DO-178B/С) оба регламентируют процесс, которому надлежит следовать при разработке бортовых систем. Одним из ключевых требований в процессе верификации ПО в соответствии со стандартом DO-178B/С является достижение структурного покрытия кода в сочетании с тестированием требований к ПО высокого и низкого уровня.
На основе оценки безопасности системы были установлены категории отказных состояний. Эти категории обуславливают уровень целостности ПО, необходимый для безопасного функционирования в сфере авионики. Документ DO-178B/С классифицирует ПО на 5 уровней критичности в зависимости от его влияния на функционирование всей системы в целом. Нижеприведенная таблица демонстрирует взаимосвязь между категорией отказного состояния и целью структурного покрытия в соответствии с DO-178B/С.
Уровень | Определение отказного состояния | Тип структурного покрытия |
---|---|---|
A | ПО может привести к катастрофическому отказному состоянию системы и воздушного судна | Модифицированное покрытие условий и ветвей; Покрытие ветвей; Покрытие инструкций; |
B | ПО может привести к аварийному отказному состоянию системы и воздушного судна | Покрытие ветвей; Покрытие инструкций; |
C | ПО может привести к сложному отказному состоянию системы и воздушного судна | Покрытие инструкций; |
D | ПО может привести к отказному состоянию типа «усложнение условий полета» воздушного судна | Не требуется |
E | ПО может привести к отказному состоянию без влияния на эксплуатационные возможности воздушного судна | Не требуется |
Что такое VectorCAST
Линейка инструментов VectorCAST поддерживает сбор информации и создание отчётов по данным структурного покрытия кода на всех уровнях, прописанных в DO-178B/С, включая уровень А, и создание всех артефактов тестирования, требуемых для проверки с помощью DO-178B/С. Линейка продуктов VectorCAST состоит из пяти дополняющих друг друга технологий:
- VectorCAST/C++/Ada — Эти инструменты автоматизируют процесс тестирования исходных модулей, написанных на С,
С++ или Ada – как для модульного, так и для интеграционного тестирования. Данные покрытия могут быть объединены с данными VectorCAST/Cover для достижения 100% покрытия. - VectorCAST/Cover — Предназначен для создания артефактов покрытия кода во время выполнения функционального и/или системного теста для С, С++ и Ada.
- VectorCAST/RGW — Обеспечивает связь требований с тестовым сценариям VectorCAST.
- VectorCAST/RSP — РасширяетVectorCAST/C++ или VectorCAST/Ada, предоставляя возможность выполнения тестирования приложений реального времени на целевых платформах и/или в симуляционной среде.
- VectorCAST/Manage — Используется для автоматизации деятельности в рамках регрессионного тестирования для модульного и интеграционного тестирования.
Инструменты также поддерживают создание и управление тестовыми сценариями для подтверждения факта тестирования требований низкого уровня к ПО.
Каким образомVectorCAST поддерживает DO-178B/С
Цели процесса верификации ПО определены в разделе 6.0 стандарта DO-178B/С.
Раздел 6.4 – «Испытания ПО»
Этот раздел устанавливает три типа тестирования:
Интеграционное тестирование аппаратных средств/ПО
Этот тип тестирования используется для удовлетворения требований высокого уровня и выполняется на целевом оборудовании с помощью полноценного образа исполняемой программы. При этом типе тестирования используется VectorCAST/Cover, регистрирующий покрытие кода во время выполнения тестовых процедур системного и/или функционального уровней.
Интеграционное тестирование ПО
Интеграционное тестирование ПО подтверждает взаимосвязанность элементов. Тестирование на этом уровне выполняется с помощью VectorCAST/C++ или VectorCAST/Ada для тестирования множества компонентов ПО единовременно. Автоматически генерируется полноценная тестовая программа для поддержки этого вида тестирования, а требования к ПО могут быть помечены в отдельных тестовых сценариях для гарантии, что все требования тестируются.
Тестирование низкого уровня
Используется для тестирования требований низкого уровня и обычно осуществляется серией модульных тестов, позволяющих изолировать отдельный модуль исходного кода. Во время этого этапа тестирования используются VectorCAST/C++ и VectorCAST/Ada.
Раздел 6.4.1 — «Среда испытаний»
В этом разделе говорится, что для достижения целей тестирования ПО может потребоваться больше, чем одна тестовая среда. В то время как тестирование приложения на целевой платформе будет считаться «идеальной» средой, выполнение и сбор ориентированного на требования покрытия и структурного покрытия в полностью интегрированной среде может оказаться неосуществимым. Может потребоваться выполнение тестирования на небольших изолированных компонентах в моделируемой среде.
VectorCAST полностью поддерживает тестирование на целевой платформе или с помощью её имитатора, как правило, предоставленного поставщиком компилятора. Структурное покрытие тестируемых изолированных компонентов может быть объединено с покрытием, собранным во время полного интеграционного тестирования для демонстрации совокупного представления метрик покрытия.
Тестовые сценарии VectorCAST поддерживаются независимо от исходного кода для DDT подхода к тестированию. Эта техника позволяет выполнять тесты на машине разработчика, в симуляторе или прямо на целевой платформе в полностью автоматическом режиме работы.
Раздел 6.4.2 – «Выбор тестовых примеров на основе требований»
DO-178B/С указывает на то, что верификация ПО должна базироваться на требованиях, в противоположность верификации, основанной на исходном коде. Основанные на требованиях тесты требуют от испытателей или разработчиков создания для выполнения кода входных данных, учитывающих в первую очередь требования. Этот вид тестов принимает две формы: тестовые примеры в допустимом диапазоне входных значений и робастные тесты.
Раздел 6.4.2.1 – «Тестовые примеры в допустимом диапазоне»
Целью тестирования нормального диапазона значений является демонстрация возможности ПО реагировать на нормальные входные данные и режимы эксплуатации. Точнее говоря, должны проверяться вещественные и целые значения входных данных. VectorCAST обеспечивает возможность установки этих значений при помощи GUI или с помощью скрипта, что показано на нижеприведённом рисунке:
Для функций, связанных со временем, должны выполняться многократные итерации кода для гарантии корректности характеристик тестируемой функции.
VectorCAST обеспечивает простой и удобный путь выполнения итерации тестов в течение времени. Эта функциональная возможность называется «составное тестирование». Она позволяет испытателю выполнять отдельный тест много раз или многократные тесты в течение времени, благодаря чему данные остаются постоянными во время выполнения.
Для требований, выраженных логическим уравнением, может понадобится выполнение MC/DC. VectorCAST предусматривает MC/DC-уровень покрытия и матрицы эквивалентности.
Раздел 6.4.2.2 – «Робастные тестовые примеры»
Целью сценариев робастных тестов является демонстрация возможности ПО реагировать на значения и условия вне заданного диапазона. VectorCAST поддерживает тестирование «вне диапазона» значений или отклоняющихся от нормы значений любого типа. Для этого используется опция отключения проверки нормального диапазона значений. Следующий рисунок показывают пример установки значения «вне диапазона».
Раздел 6.4.3 – «Методы испытаний на основе требований»
Методы тестирования (испытаний), основанные на требованиях состоят из:
- Интеграционного тестирования аппаратных средств/ПО
- Интеграционного тестирования ПО
- Тестирования низкого уровня
VectorCASTподдерживает все три уровня тестирования. Для интеграционного тестирования аппаратных средств/ПО VectorCAST обеспечивает возможности структурного покрытия для проектов, разрабатывающихся до уровней А, В и С. Это тестирование может выполняться на целевой платформе или при помощи симулятора целевой платформы.
Для интеграции ПО и тестирования низкого уровня, VectorCAST дает возможность конструировать выполняемую тестовую программу автоматически, обеспечивая тестирование отдельных компонентов или совокупности компонентов. Во время этих фаз тестирования собирается структурное покрытие, которое объединяется в одно целое для оценки полноты тестирования.
Раздел 6.4.4 – «Анализ тестового покрытия»
Анализ тестового покрытия включает в себя проверку анализа структурного покрытия и покрытия на основе требований. Первым шагом является анализ тестового сценария для подтверждения, что все требования связаны с конкретным/заданным тестовым сценарием. Следующим шагом является проверка выполнения тестов на основе требований.
Анализ покрытия кода VectorCAST определяет, какие строки исходного кода (инструкция), какие ветки исходного кода (ветка) или какие эквивалентные пары (MC/DC) выполнялись серией данных тестового сценария. Отчеты показывают вам полноту вашего набора тестов. Проанализировав не подвергнувшийся тестированию код, вы легко сможете вернуться назад и разработать сценарии для тестирования этих частей кода.
Раздел 6.4.4.1 – «Анализ тестовых покрытий на основе требований»
VectorCAST/RGW (RequirementsGateway) позволяет отслеживать связь требований к ПО с тестовыми сценариями для выполнения требований анализа покрытия.
VectorCAST/RGW (RequirementsGateway) позволяет создать поток данных между инструментами управления требованиями и инструментом тестирования VectorCAST. С помощью простого и интуитивно-понятного интерфейса разработчики могут быстро привязать требования к тестовым сценариям VectorCAST.
Если тестовые сценарии выполнялись по крайней мере один раз, метрики трассируемости могут быть просмотрены из среды VectorCAST или инструмента управления требованиями. Пользователь имеет полный контроль над тем, какие атрибуты VectorCAST отдаст обратно в базу данных требований. Такие данные как «название теста», «результат теста» (успех/отказ/отсутствие результата) могут быть связаны с атрибутом базы данных требований выбранным пользователем.
Раздел 6.4.4.2 – «Анализ структурного покрытия»
Целью такого анализа является определение, какая часть кода не была выполнена во время проведения испытаний на основе требований.
VectorCAST позволяет вам рассчитать эффективность ваших усилий на тестирование и установить, какие части приложения выполнялись во время проведения испытаний на основе тестирования. Это удобное средство анализа полноты ваших тестов, исключающее возможность выпуска приложения с кодом, не подвергшимся тестированию. VectorCAST позволяет вам анализировать любую часть вашего приложения или приложение в целом. Для каждого анализируемого файла VectorCAST создает средство просмотра исходного кода, включающее следующую информацию:
- Сводка информации о покрытии представляет собой цветокодированный просмотр вашего исходного кода, который определяет, является ли код полностью, частично покрытым или непокрытым.
- Сводка информации о метриках предоставляет список сложности исходного кода (McCabe) и текущее состояние покрытия исходного кода для каждой подпрограммы.
- Анализ условного покрытия показывает все пути управления для каждой подпрограммы.
- MC/DC предназначен для стандарта RTCA DO-178B/C для ПО уровня А.
MC/DC анализ утверждает, что каждое подусловие может независимо действовать на результат всего условия. Чтобы подтвердить это, вы должны иметь возможность регистрировать значения результата условия, также как и значения каждого из подусловий. VectorCAST/Cover собирает эту информацию в двух форматах: в снабженном комментариями листинге исходного кода и в матрицах парных сравнений для каждого логического условия.
Отличия в структурном покрытии для уровня А
Есть существенное отличие между стандартами DO-178B и DO-178C, которое относится к структурному покрытию ПО на уровне А. Во всех случаях, не относящихся к уровню А, анализ структурного покрытия выполняется по исходному коду. Для уровня А, если компилятор создаёт объектный код, не трассируемый напрямую на операторы исходного кода должна выполняться дополнительная верификация для обеспечения корректности такого кода.
Значение фразы «должна выполняться дополнительная верификация» отличается в DO-178B и DO-178C. DO-178B утверждает, что дополнительная верификация должна выполняться на объектном коде. DO-178C убрал это требование и утверждает просто, что дополнительная верификация должна выполняться.
Раздел 12.1.3 – «Изменение условий применения или среды разработки»
Использование и модификация ранее разработанного приложения может включать новую среду разработки, компилятор, целевой процессор или интеграцию с ПО, отличающимся от использованного в оригинале.
При использовании различных компиляторов или разных наборов опций компилятора в результате мы получим разный объектный код, и результаты действий по верификации предыдущего ПО могут быть негодными для нового приложения.
Целевой процессор или изменения компилятора
Важно отметить, что все тесты, разработанные с VectorCAST, должны рассматриваться как независимые от целевой платформы. Тесты VectorCAST соответствуют данным, используемым приложением, но не самим целевым процессором. Когда приложение переносятся на новый целевой процессор, тесты VectorCAST могут просто быть выполнены повторно в новой целевой среде.
Такой же подход применяется, когда применяется новый компилятор. Механизм регрессионного теста в VectorCAST произведет перестройку всех выполняемых тестовых программ, используя новый кросс-компилятор, и все существующие тесты будут исполнены повторно для верификации результатов теста в новой среде. Для новых целевых процессоров или среды компилятора может быть необходима повторная квалификация инструментов VectorCAST для новой среды.
Квалификация инструментария
Хотя в целом процесс квалификации инструмента остался неизменным, есть несколько различий между DO-178B и DO-178C в описании процесса квалификации инструмента.
Оба стандарта устанавливают, что квалификация инструмента верификации ПО является необходимой, когда процесс верификации, определенный в документах игнорируется, усекается или автоматизируется с помощью программного инструмента с неподтвержденными выходными данными.
VectorCAST относится к автоматизации процесса верификации так, как определено в DO-178B и DO-178C. Квалификация программного инструмента утверждена разделом 12.2 стандартов DO-178B и DO-178C.
В разделе 12.2.1 DO-178C утверждается: «Инструмент квалифицируется только для использования в специфических системах, где намерения использовать инструмент утверждены в Плане Программных Аспектов Сертификации (PSAC), поддерживающим систему. Если инструмент, ранее квалифицировавшийся для одной системы, предназначен для использования на другой системе, он должен быть переквалифицирован в рамках контекста другой системы».
Разница между стандартами в квалификации инструмента
Руководство по квалификации инструмента для верификационного ПО в соответствии с DO-178B является достаточно простым. От поставщика инструмента требуется наличие двух документов: эксплуатационных требований к инструменту (TOR) и данных о квалификации инструмента (TQD). Эти документы определяют требования к ПО в нормальных условиях работы и связанным с ПО тестам и результатам тестов.
Для DO-178C уровень квалификации инструмента (TQL) сначала должен быть определен для оценки влияния инструмента в жизненном цикле ПО. Раздел 12.2.2 устанавливает «уровни критериев», определяющие влияние инструмента. Определены три уровня критериев:
- Критерий 1: Инструмент, выходные данные которого являются частью бортового ПО и, следовательно, он может внести ошибку;
- Критерий 2: Инструмент, который автоматизирует процесс(ы) верификации, который может не выявить ошибки, и выходные данные которого используются для подтверждения исключения или усечения:
- Процесса(ов) верификации за исключением автоматизированных программным инструментом, или
- Процесса(ов) разработки, которые могут оказывать влияние на бортовое ПО.
- Критерий 3: Инструмент, который в рамках своего целевого назначения может не выявить ошибку.
На основе этих уровней критериев и уровней ПО (от А до D) можно установить уровень квалификации (TQL) что определено в нижеприведенной таблице:
Ответственность за квалификацию инструментов верификации ПО (таких как VectorCAST) обычно делится между главным контрагентом и поставщиком инструмента. На основе оценки безопасности системы были выделены категории состояния отказа. Эти категории устанавливают уровень целостности ПО, необходимый для безопасной работы бортовой электронной аппаратуры.
Для дополнительного руководства процесса квалификации инструментов был разработан документ RTCA DO-330 «Рекомендации по квалификации программного инструмента», взаимосвязанный с DO-178C.
Квалификации инструмента VectorCAST
Для квалификации VectorCAST как инструмента верификации ПО, Vector Software издает следующую информацию для каждого проекта, в котором используется инструмент:
Эксплуатационные требования к инструменту
Документ эксплуатационных требований к инструменту (TOR)включает:
- Описание функциональности инструмента в верифицируемых требованиях
- Условия эксплуатации проекта
- Процесс управления конфигурацией
- Метод достижения верификации, по которой VectorCAST удовлетворил тестированию по предъявляемым требованиям
Данные о квалификации инструмента
Данные о квалификации инструмента (TQD) включают:
- Тестовые данные и результаты тестирования инструмента
Процесс квалификации инструмента обычно включает взаимодействие как с квалифицирующим пользователем, так и с соответствующим сертифицирующим органом и/или DER.
Процесс квалификации инструмента VectorCAST
VectorCAST передает заказчику предварительную версию квалификационных материалов. Дополнительно передается набор тестов, чтобы квалифицирующий пользователь мог бы выполнить их в той же среде, что и свой проект. Vector Software включает изменения в документацию и тесты, если это уместно. Vector Software передает версию 1.0 TQD для окончательного утверждения.