Тестирование поведения компьютерных систем в условиях необычных нагрузок
В компьютерной науке инъекция неисправностей — это метод тестирования для понимания того, как ведут себя вычислительные системы при необычных нагрузках. Этого можно достичь с помощью физических или программных средств или с помощью гибридного подхода. [1] Широко изученные физические инъекции неисправностей включают применение высоких напряжений, экстремальных температур и электромагнитных импульсов к электронным компонентам, таким как компьютерная память и центральные процессоры . [2] [3] Подвергая компоненты воздействию условий, выходящих за пределы их предполагаемых эксплуатационных пределов, вычислительные системы могут быть вынуждены неправильно выполнять инструкции и искажать критически важные данные.
В тестировании программного обеспечения инъекция неисправностей — это метод улучшения покрытия теста путем введения неисправностей в пути кода тестирования; в частности, пути кода обработки ошибок , которые в противном случае редко соблюдались бы. Он часто используется при стресс-тестировании и широко считается важной частью разработки надежного программного обеспечения. [4] Тестирование надежности [5] (также известное как синтаксическое тестирование, фаззинг или фаззинг-тестирование ) — это тип инъекции неисправностей, обычно используемый для проверки уязвимостей в интерфейсах связи, таких как протоколы, параметры командной строки или API.
Распространение неисправности до наблюдаемого отказа следует четко определенному циклу. При выполнении ошибка может вызвать ошибку, которая является недопустимым состоянием в пределах границ системы. Ошибка может вызвать дальнейшие ошибки в пределах границ системы, поэтому каждая новая ошибка действует как ошибка, или она может распространяться на границу системы и быть наблюдаемой. Когда состояния ошибок наблюдаются на границе системы, они называются отказами. Этот механизм называется циклом отказ-ошибка-отказ [6] и является ключевым механизмом в надежности .
История
Техника инъекции неисправностей восходит к 1970-м годам [7] , когда она впервые была использована для создания неисправностей на уровне оборудования. Этот тип инъекции неисправностей называется аппаратно-реализованной инъекцией неисправностей (HWIFI) и пытается имитировать аппаратные сбои в системе. Первые эксперименты с аппаратной неисправностью включали в себя не более чем замыкание соединений на печатных платах и наблюдение за эффектом на систему (шунтирование неисправностей). Она использовалась в основном как проверка надежности аппаратной системы. Позже было разработано специализированное оборудование для расширения этой техники, например, устройства для бомбардировки определенных областей печатной платы сильным излучением. Вскоре было обнаружено, что неисправности могут быть вызваны программными методами и что аспекты этой техники могут быть полезны для оценки программных систем. В совокупности эти техники известны как программно-реализованная инъекция неисправностей (SWIFI).
Программное обеспечение, реализующее инъекцию неисправностей
Методы SWIFI можно разделить на два типа: внедрение во время компиляции и внедрение во время выполнения.
Впрыск во время компиляции — это метод впрыска, при котором исходный код модифицируется для впрыскивания в систему смоделированных ошибок. Один из методов называется мутационным тестированием , которое изменяет существующие строки кода так, чтобы они содержали ошибки. Простым примером этого метода может быть изменение a = a + 1
наa = a – 1
Мутация кода приводит к ошибкам, которые очень похожи на те, которые непреднамеренно добавляют программисты.
Уточнение мутации кода — это Code Insertion Fault Injection , которая добавляет код, а не изменяет существующий код. Обычно это делается с помощью функций возмущения, которые являются простыми функциями, которые берут существующее значение и возмущение его с помощью некоторой логики в другое значение, например
int pFunc ( int value ) { return value + 20 ; } int main ( int argc , char * argv []) { int a = pFunc ( aFunction ( atoi ( argv [ 1 ]))); if ( a > 20 ) { /* сделать что-то */ } else { /* сделать что-то еще */ } }
В этом случае pFunc является функцией возмущения и применяется к возвращаемому значению функции, которая была вызвана, внося неисправность в систему.
Методы внедрения во время выполнения используют программный триггер для внедрения ошибки в работающую программную систему. Ошибки могут быть внедрены с помощью ряда физических методов, а триггеры могут быть реализованы несколькими способами, такими как: триггеры на основе времени (когда таймер достигает указанного времени, генерируется прерывание, и обработчик прерываний, связанный с таймером, может внедрить ошибку.); триггеры на основе прерываний (аппаратные исключения и механизмы программных ловушек используются для генерации прерывания в определенном месте системного кода или при определенном событии в системе, например, доступе к определенной ячейке памяти).
Методы внедрения во время выполнения могут использовать ряд различных методов для внесения неисправностей в систему посредством триггера.
- Повреждение пространства памяти: этот метод заключается в повреждении оперативной памяти, регистров процессора и карты ввода-вывода.
- Методы интерпозиции системных вызовов: это касается распространения сбоев от интерфейсов ядра операционной системы к исполняющему системному программному обеспечению. Это делается путем перехвата вызовов операционной системы, выполняемых программным обеспечением пользовательского уровня, и внедрения в них сбоев.
- Внедрение сбоев на сетевом уровне: этот метод связан с повреждением, потерей или переупорядочением сетевых пакетов на сетевом интерфейсе.
Эти методы часто основаны на возможностях отладки, предоставляемых архитектурой процессора компьютера.
Внесение сбоев в работу программного обеспечения протокола
Сложные программные системы, особенно распределенные системы от разных поставщиков, основанные на открытых стандартах, выполняют операции ввода/вывода для обмена данными через структурированные обмены с сохранением состояния, известные как « протоколы ». Один из видов внедрения неисправностей, который особенно полезен для тестирования реализаций протоколов (тип программного кода, который имеет необычную характеристику, заключающуюся в том, что он не может предсказать или контролировать свой ввод), — это фаззинг . Фаззинг — это особенно полезная форма тестирования черного ящика , поскольку различные недействительные входные данные, которые отправляются в программную систему, не зависят от деталей кода, работающего внутри системы, и не создаются на основе их знания.
Аппаратно реализованная инъекция неисправностей
Эта техника была применена на прототипе оборудования. Тестеры вводят неисправность, изменяя напряжение некоторых частей в схеме, увеличивая или уменьшая температуру, бомбардируя плату высокоэнергетическим излучением и т. д.
Характеристики инъекции неисправностей
Разломы имеют три основных параметра. [8]
- Тип: Какой тип ошибки следует ввести? Например, застрявшее значение, задержка, игнорирование некоторых функций, игнорирование некоторых параметров/переменных, случайные ошибки, ошибка смещения, шум и т. д. Амплитуда каждой ошибки также важна.
- Время: Когда должно быть активировано? Например, время активации неисправности или условие активации неисправности.
- Расположение: Где должно быть в системе? Например, неисправность в связи/подключении между системами, неисправности внутри систем/подсистем/функций и т. д.
Эти параметры создают область пространства неисправностей. Область пространства неисправностей будет экспоненциально увеличиваться с ростом сложности системы. Поэтому традиционный метод инъекции неисправностей не будет применим для использования в современных киберфизических системах, потому что они будут очень медленными, и они будут находить небольшое количество неисправностей (меньшее покрытие неисправностей). Следовательно, тестировщикам нужен эффективный алгоритм для выбора критических неисправностей, которые оказывают большее влияние на поведение системы. Таким образом, главный вопрос исследования заключается в том, как найти критические неисправности в области пространства неисправностей, которые оказывают катастрофические последствия на поведение системы. Вот несколько методов, которые могут помочь инъекции неисправностей для эффективного исследования пространства неисправностей, чтобы достичь большего покрытия неисправностей за меньшее время моделирования.
- Анализ чувствительности: [9] В этом методе анализ чувствительности использовался для определения наиболее важных сигналов, которые оказывают большее влияние на спецификацию системы. Определив эти важные сигналы или параметры, инструмент внесения неисправностей сосредоточится на этих эффективных сигналах вместо того, чтобы фокусироваться на всех сигналах в системе.
- Обучение с подкреплением: [10] В этом методе алгоритм обучения с подкреплением используется для эффективного исследования пространства неисправностей и поиска критических неисправностей.
Инструменты для обнаружения неисправностей
Хотя эти типы ошибок можно вносить вручную, вероятность внесения непреднамеренной ошибки высока, поэтому существуют инструменты для автоматического анализа программы и вставки ошибок.
Инструменты исследования
Разработано несколько инструментов SWIFI, и здесь приведен выбор этих инструментов. Шесть наиболее часто используемых инструментов для впрыскивания неисправностей — Ferrari, FTAPE, Doctor, Orchestra, Xception и Grid-FIT.
- MODIFI (MODel-Implemented Fault Injection) — это инструмент для внедрения неисправностей для оценки надежности моделей поведения Simulink. Он поддерживает моделирование неисправностей в XML для реализации доменно-специфических моделей неисправностей. [11]
- Ferrari (Fault and ERRor Automatic Real-time Injection) основан на программных ловушках, которые вводят ошибки в систему. Ловушки активируются либо вызовом определенного места памяти, либо тайм-аутом. Когда вызывается ловушка, обработчик вводит ошибку в систему. Ошибки могут быть как временными, так и постоянными. Исследования, проведенные с Ferrari, показывают, что обнаружение ошибок зависит от типа ошибки и места ее вставки. [12]
- FTAPE (Fault Tolerance and Performance Evaluator) может вводить ошибки не только в память и регистры, но и в доступ к диску. Это достигается путем вставки специального драйвера диска в систему, который может вводить ошибки в данные, отправляемые и получаемые с дискового устройства. FTAPE также имеет синтетический блок нагрузки, который может имитировать определенные объемы нагрузки для целей тестирования надежности. [13]
- DOCTOR (Integrated SOFTware Fault Injection Environment) позволяет вводить ошибки памяти и регистров, а также ошибки сетевой связи. Он использует комбинацию тайм-аута, ловушки и модификации кода. Триггеры тайм-аута вводят временные ошибки памяти, а ловушки вводят временные эмулированные аппаратные сбои, такие как повреждение регистра. Модификация кода используется для внесения постоянных ошибок. [14]
- Orchestra — это скрипт-инжектор неисправностей, основанный на Network Level Fault Injection. Его основное применение — оценка и проверка отказоустойчивости и временных характеристик распределенных протоколов. Orchestra изначально был разработан для операционной системы Mach и использует определенные функции этой платформы для компенсации задержек, вносимых инжектором неисправностей. Он также был успешно перенесен на другие операционные системы. [15]
- Xception разработан для использования расширенных функций отладки, доступных на многих современных процессорах. Он написан так, чтобы не требовать изменения исходного кода системы и вставки программных ловушек, поскольку возможности обработки исключений процессора запускают инъекцию сбоев. Эти триггеры основаны на доступе к определенным ячейкам памяти. Такой доступ может быть как для данных, так и для получения инструкций. Поэтому возможно точно воспроизводить тестовые запуски, поскольку триггеры могут быть привязаны к определенным событиям, а не к тайм-аутам. [7]
- Grid-FIT (Grid – Fault Injection Technology) [16] – это метод оценки надежности и инструмент для оценки служб Grid путем внедрения ошибок. Grid-FIT получен из более раннего инжектора ошибок WS-FIT [17] , который был нацелен на Java Web Services, реализованные с использованием транспорта Apache Axis. Grid-FIT использует новый механизм внедрения ошибок, который позволяет использовать внедрение ошибок на уровне сети для обеспечения уровня контроля, аналогичного внедрению ошибок методом вставки кода, при этом будучи менее инвазивным. [18]
- LFI (инжектор ошибок на уровне библиотеки) [19] — это набор инструментов автоматического тестирования, используемый для моделирования в контролируемой среде тестирования исключительных ситуаций, которые программы должны обрабатывать во время выполнения, но которые нелегко проверить только с помощью входного тестирования. LFI автоматически выявляет ошибки, выявленные общими библиотеками, находит потенциально ошибочный код восстановления ошибок в двоичных файлах программ и внедряет желаемые ошибки на границе между общими библиотеками и приложениями.
- FIBlock (Fault Injection Block), [20] метод инъекции неисправностей на основе модели, реализованный в виде высоконастраиваемого блока Simulink. Он поддерживает инъекцию в моделях MATLAB Simulink типичных неисправностей основных гетерогенных компонентов киберфизических систем, таких как датчики, вычислительное оборудование и сеть. Дополнительные триггерные входы и выходы блока позволяют моделировать условные неисправности. Кроме того, два или более FIBlock, связанных с триггерными сигналами, могут моделировать так называемые цепочечные ошибки.
Коммерческие инструменты
- Beyond Security beSTORM [21] — это коммерческий инструмент анализа безопасности программного обеспечения типа «черный ящик» . Он часто используется во время разработки производителями оригинального оборудования, но также используется для тестирования продуктов перед внедрением, особенно в аэрокосмической, банковской и оборонной отраслях. Процесс тестирования beSTORM начинается с наиболее вероятных сценариев атак, затем прибегает к исчерпывающему фаззингу на основе генерации . beSTORM предоставляет модули для распространенных протоколов и «автоматически изучает» новые или фирменные протоколы, включая атаки на основе мутаций. Основные моменты: двоичный и текстовый анализ, тестирование настраиваемых протоколов, отладка и трассировка стека, независимость от языка разработки, совместимость с CVE.
- ExhaustiF — это коммерческий программный инструмент, используемый для тестирования «серого ящика» на основе внедрения сбоев программного обеспечения (SWIFI) для повышения надежности систем с интенсивным использованием программного обеспечения. Инструмент может использоваться на этапах системной интеграции и тестирования системы любого жизненного цикла разработки программного обеспечения, дополняя другие инструменты тестирования. ExhaustiF может внедрять сбои как в программное обеспечение, так и в оборудование. При внедрении имитируемых сбоев в программное обеспечение ExhaustiF предлагает следующие типы сбоев: повреждение переменных и повреждение процедур. Каталог для внедрения сбоев оборудования включает сбои в памяти (ввод-вывод, ОЗУ) и ЦП (целочисленный блок, плавающий блок). Существуют различные версии для RTEMS/ERC32, RTEMS/Pentium, Linux/Pentium и MS-Windows/Pentium. [22]
- Holodeck [23] — это инструмент тестирования, разработанный Security Innovation, который использует инъекцию неисправностей для имитации реальных ошибок приложений и систем для приложений и служб Windows. Клиентами Holodeck являются многие крупные компании по разработке коммерческого программного обеспечения, включая Microsoft, Symantec, EMC и Adobe. Он предоставляет контролируемую, повторяемую среду для анализа и отладки кода обработки ошибок и поверхностей атак приложений для тестирования уязвимости и безопасности. Он имитирует ошибки фаззинга файлов и сетей, а также широкий спектр других ресурсов, системных и определяемых пользователем неисправностей. Он анализирует код и рекомендует планы тестирования, а также выполняет регистрацию вызовов функций, перехват API, стресс-тестирование, анализ покрытия кода и многие другие функции обеспечения безопасности приложений.
- Платформа Chaos Engineering от Proofdock фокусируется на облачной платформе Microsoft Azure . Она внедряет сбои на уровне инфраструктуры, платформы и приложения.
- Gremlin — это платформа «Failure-as-a-Service», которая помогает компаниям создавать более устойчивые системы с помощью практики хаос-инжиниринга. Gremlin воссоздает наиболее распространенные отказы в трех категориях — Ресурс , Сеть и Состояние — безопасно внедряя отказ в системы для упреждающего выявления и устранения неизвестных неисправностей.
- Codenomicon Defensics [24] — это фреймворк автоматизации тестирования черного ящика, который выполняет инъекцию неисправностей в более чем 150 различных интерфейсов, включая сетевые протоколы, интерфейсы API, файлы и структуры XML. Коммерческий продукт был запущен в 2001 году после пяти лет исследований в Университете Оулу в области инъекции неисправностей программного обеспечения. Диссертация, объясняющая используемые принципы фаззинга, была опубликована VTT, одним из членов консорциума PROTOS. [5]
- Mu Service Analyzer [25] — это коммерческий инструмент тестирования услуг, разработанный Mu Dynamics . [26] Mu Service Analyzer выполняет тестирование черного и белого ящиков услуг на основе их открытых программных интерфейсов, используя моделирование отказа в обслуживании, вариации трафика на уровне обслуживания (для генерации недопустимых входных данных) и воспроизведение известных триггеров уязвимости. Все эти методы осуществляют проверку входных данных и обработку ошибок и используются в сочетании с допустимыми мониторами протоколов и SNMP для характеристики эффектов тестового трафика на программную систему. Mu Service Analyzer позволяет пользователям устанавливать и отслеживать показатели надежности, доступности и безопасности на уровне системы для любой открытой реализации протокола. Инструмент доступен на рынке с 2005 года клиентам в Северной Америке, Азии и Европе, особенно на критических рынках сетевых операторов (и их поставщиков) и промышленных систем управления (включая критическую инфраструктуру ).
- Xception [27] — это коммерческий программный инструмент, разработанный Critical Software SA [28], используемый для тестирования черного и белого ящика на основе внедрения программных неисправностей (SWIFI) и внедрения неисправностей в цепочке сканирования (SCIFI). Xception позволяет пользователям тестировать надежность своих систем или только их части, допуская как внедрение программных неисправностей, так и внедрение аппаратных неисправностей для определенного набора архитектур. Инструмент используется на рынке с 1999 года и имеет клиентов на американском, азиатском и европейском рынках, особенно на критически важном рынке аэрокосмической и телекоммуникационной отраслей. Полное семейство продуктов Xception включает: a) основной инструмент Xception, передовой лидер в технологии внедрения неисправностей, реализованных в программном обеспечении (SWIFI); b) дополнительные инструменты Easy Fault Definition (EFD) и Xtract (Xception Analysis Tool); c) расширенный инструмент Xception (eXception) с расширениями внедрения неисправностей для Scan Chain и форсирования на уровне выводов.
- AWS Fault Injection Service — это полностью управляемый сервис для проведения экспериментов по внедрению неисправностей на AWS , который упрощает улучшение производительности, наблюдаемости и устойчивости приложения. Эксперименты по внедрению неисправностей используются в хаос-инжиниринге, который представляет собой практику нагрузки на приложение в тестовых или производственных средах путем создания разрушительных событий, таких как внезапное увеличение потребления ЦП или памяти, наблюдения за реакцией системы и внедрения улучшений.
Библиотеки
- libfiu (внедрение сбоев в пользовательском пространстве), библиотека C для имитации сбоев в процедурах POSIX без изменения исходного кода. Включен API для имитации произвольных сбоев во время выполнения в любой точке программы.
- TestApi — это библиотека API с общим исходным кодом, которая предоставляет возможности для тестирования с использованием инъекций неисправностей, а также других типов тестирования, структур данных и алгоритмов для приложений .NET.
- Fuzzino — это библиотека с открытым исходным кодом, которая предоставляет богатый набор эвристик фаззинга, генерируемых на основе спецификации типа и/или допустимых значений.
- krf — это модуль ядра Linux с открытым исходным кодом, который предоставляет настраиваемую возможность для вероятностного возврата значений сбоев для системных вызовов. Подробнее об этом в сообщении в блоге.
- nlfaultinjection разработан для предоставления простой, переносимой среды для внесения неисправностей, способной работать практически на любой системе, независимо от ее ограничений, и зависящей только от стандартной библиотеки C.
Внесение ошибок в функциональные свойства или тестовые случаи
В отличие от традиционного мутационного тестирования, где мутантные ошибки генерируются и вводятся в описание кода модели, также было исследовано применение ряда новых определенных операторов мутации непосредственно к свойствам модели, а не к коду модели. [29] Свойства мутантов, которые генерируются из исходных свойств (или тестовых случаев) и проверяются проверщиком модели, следует рассматривать как новые свойства, которые были пропущены во время первоначальной процедуры проверки. Поэтому добавление этих новых идентифицированных свойств в существующий список свойств улучшает метрику покрытия формальной проверки и, следовательно, приводит к более надежному проекту.
Применение инъекции неисправностей
Впрыскивание сбоев может принимать различные формы. Например, при тестировании операционных систем впрыскивание сбоев часто выполняется драйвером ( программным обеспечением режима ядра ), который перехватывает системные вызовы (вызовы в ядро) и случайным образом возвращает ошибку для некоторых вызовов. Этот тип впрыскивания сбоев полезен для тестирования низкоуровневого программного обеспечения пользовательского режима. Для программного обеспечения более высокого уровня впрыскивание сбоев осуществляется различными методами. В управляемом коде обычно используется инструментарий . Хотя впрыскивание сбоев можно выполнять вручную, существует ряд инструментов впрыскивания сбоев для автоматизации процесса впрыскивания сбоев. [30]
В зависимости от сложности API для уровня, на котором вводятся ошибки, тесты на внесение ошибок часто должны быть тщательно разработаны, чтобы минимизировать количество ложных срабатываний. Даже хорошо разработанный тест на внесение ошибок иногда может создавать ситуации, которые невозможны при нормальной работе программного обеспечения. Например, представьте, что есть две функции API , Commit
и PrepareForCommit
, такие, что каждая из этих функций по отдельности может потерпеть неудачу, но если PrepareForCommit
вызывается и выполняется успешно, последующий вызов Commit
гарантированно будет успешным. Теперь рассмотрим следующий код:
ошибка = PrepareForCommit (); если ( ошибка == УСПЕХ ) { ошибка = Фиксация (); утверждать ( ошибка == УСПЕХ ); }
Часто для реализации внедрения сбоев будет невыполнимо отслеживать достаточное количество состояний, чтобы гарантировать, что функции API делают это. В этом примере тест внедрения сбоев приведенного выше кода может попасть в assert , тогда как при нормальной работе этого никогда не произойдет.
Смотрите также
Ссылки
- ^ Моради, Мехрдад; Ван Акер, Берт; Ванхерпен, Кен; Денил, Иоахим (2019). «Реализованная на основе модели гибридная инъекция неисправностей для Simulink (демонстрации инструментов)». В Чемберлене, Роджере; Таха, Валид; Торнгрен, Мартин (ред.). Киберфизические системы. Проектирование на основе моделей . Конспект лекций по информатике. Том 11615. Springer International Publishing. С. 71–90. doi :10.1007/978-3-030-23703-5_4. ISBN 9783030237035. S2CID 195769468.
- ^ Шеперд, Карлтон; Маркантонакис, Константинос; Ван Хейнинген, Нико; Абулкассими, Дрисс; Гейн, Клемент; Хекманн, Тибо; Наккаш, Дэвид (2021). «Внедрение физических неисправностей и атаки по сторонним каналам на мобильные устройства: комплексный анализ». Компьютеры и безопасность . 111 (102471). Elsevier: 102471. arXiv : 2105.04454 . doi : 10.1016/j.cose.2021.102471. S2CID 236957400.
- ^ Бар-Эл, Хагай; Шукри, Хамид; Наккаш, Дэвид; Танстолл, Майкл; Уилан, Клэр (2004). «Руководство ученика чародея по атакам с ошибками». Труды IEEE . 94 (2). IEEE: 370–382. doi :10.1109/JPROC.2005.862424. S2CID 2397174.
- ^ Дж. Воас, «Внедрение ошибок для масс», Компьютер, т. 30, стр. 129–130, 1997.
- ^ ab Каксонен, Раули. Функциональный метод оценки безопасности реализации протокола. 2001.
- ^ А. Авизиенис, Ж.-К. Лапри, Брайан Рэнделл и К. Ландвер, «Основные концепции и таксономия надежных и безопасных вычислений», Надежные и безопасные вычисления, т. 1, стр. 11–33, 2004.
- ^ ab JV Carreira, D. Costa и SJ G, «Выборочная проверка надежности компьютерной системы путем внесения неисправностей», IEEE Spectrum, стр. 50–55, 1999.
- ^ Бенсо, Альфредо; Принетто, Паоло, ред. (2003). Методы и инструменты инъекции неисправностей для оценки надежности встроенных систем. Frontiers in Electronic Testing. Springer US. ISBN 978-1-4020-7589-6.
- ^ «Оптимизация внесения неисправностей в совместное моделирование FMI посредством разбиения чувствительности | Труды Летней конференции по моделированию 2019 года». dl.acm.org . Получено 14.06.2020 .
- ^ Моради, М., Оукс, Б.Дж., Сараоглу, М., Морозов, А., Яншек, К. и Денил, Дж., 2020. ИССЛЕДОВАНИЕ ПРОСТРАНСТВА ПАРАМЕТРОВ НЕИСПРАВНОСТЕЙ С ИСПОЛЬЗОВАНИЕМ ВНЕДРЕНИЯ НЕИСПРАВНОСТЕЙ НА ОСНОВЕ ОБУЧЕНИЯ С ПОДКРЕПЛЕНИЕМ.
- ^ Рикард Свенингссон, Джонни Винтер, Хенрик Эрикссон и Мартин Торнгрен, «MODIFI: инструмент внедрения ошибок, реализованный на модели», Конспект лекций по информатике, 2010, том 6351/2010, 210-222.
- ^ GA Kanawati, NA Kanawati и JA Abraham, «FERRARI: гибкая программная система обнаружения и устранения неисправностей», IEEE Transactions on Computers, т. 44, стр. 248, 1995.
- ^ T. Tsai и R. Iyer, «FTAPE: инструмент для внесения неисправностей для измерения отказоустойчивости», представленный на конференции Computing in aerospace, Сан-Антонио, Техас, 1995.
- ^ S. Han, KG Shin и HA Rosenberg, «DOCTOR: Интегрированная среда для внесения неисправностей в программное обеспечение для распределенных систем реального времени», представленная на Международном симпозиуме по производительности и надежности компьютеров, Эрланген; Германия, 1995.
- ^ S. Dawson, F. Jahanian и T. Mitton, «ORCHESTRA: среда зондирования и внесения неисправностей для тестирования реализаций протоколов», представленная на Международном симпозиуме по производительности и надежности компьютеров, Урбана-Шампейн, США, 1996.
- ↑ Веб-сайт Grid-FIT Архивировано 2 февраля 2008 г. на Wayback Machine
- ^ Н. Лукер, Б. Гвинн, Дж. Сюй и М. Манро, «Основанный на онтологии подход к определению надежности сервисно-ориентированных архитектур», в трудах 10-го Международного семинара IEEE по объектно-ориентированным надежным системам реального времени, США, 2005 г.
- ^ Н. Лукер, М. Манро и Дж. Сюй, «Сравнение внедрения неисправностей на сетевом уровне с вставкой кода», в трудах 29-й Международной конференции IEEE по компьютерному программному обеспечению и приложениям, Шотландия, 2005 г.
- ^ Веб-сайт LFI
- ^ Flatag (2020-05-16), Flatag/FIBlock , получено 2020-05-16
- ^ Информация о продукте beSTORM
- ^ ExhaustiF SWIFI Инструмент Сайт
- ^ Обзор продукта Holodeck Архивировано 13 октября 2008 г. на Wayback Machine
- ^ Обзор продукта Codenomicon Defensics
- ^ Анализатор сервисов Mu
- ^ Mu Dynamics, Inc.
- ^ Веб-сайт Xception
- ^ Критическое программное обеспечение SA
- ^ Аббасинасаб, Али; Мохаммади, Мехди; Мохаммади, Сиамак; Янушкевич, Светлана; Смит, Майкл (2011). «Внедрение мутантных неисправностей в функциональные свойства модели для улучшения метрик покрытия». 2011 14-я конференция Euromicro по проектированию цифровых систем . стр. 422–425. doi :10.1109/DSD.2011.57. ISBN 978-1-4577-1048-3. S2CID 15992130.
- ^ Н. Лукер, М. Манро и Дж. Сюй, «Моделирование ошибок в веб-сервисах», Международный журнал систем моделирования, науки и технологий, т. 5, 2004.
Внешние ссылки
- Программное обеспечение Certitude от Certess Inc.
- Как DoorDash использует тестирование с использованием инъекции неисправностей для повышения надежности