고장 주입
Fault injection컴퓨터 과학에서 장애 주입은 컴퓨터 시스템이 비정상적인 방식으로 스트레스를 받았을 때 어떻게 동작하는지 이해하기 위한 테스트 기술입니다.이는 물리적 또는 소프트웨어 기반 수단을 사용하거나 하이브리드 [1]방식을 사용하여 달성할 수 있습니다.널리 연구되고 있는 물리적 결함 주입에는 컴퓨터 메모리 및 중앙 처리 [2][3]장치와 같은 전자 부품에 고전압, 극한 온도 및 전자기 펄스를 적용하는 것이 포함됩니다.컴포넌트가 의도한 동작 제한을 넘는 조건에 노출됨으로써 컴퓨팅 시스템은 명령을 잘못 실행하여 중요한 데이터를 손상시킬 수 있습니다.
소프트웨어 테스트에서 폴트 주입은 테스트 코드 경로에 폴트를 도입함으로써 테스트 범위를 향상시키는 기술입니다.특히 에러 처리 코드 패스를 거의 따르지 않을 가능성이 있습니다.이는 스트레스 테스트와 함께 자주 사용되며 강력한 소프트웨어 [4]개발의 중요한 부분으로 널리 간주됩니다.로버스트니스[5] 테스트(구문 테스트, 퍼징 또는 퍼징 테스트라고도 함)는 일반적으로 프로토콜, 명령줄 파라미터 또는 API와 같은 통신 인터페이스의 취약성을 테스트하기 위해 사용되는 장애 주입의 일종입니다.
장애를 통해 관찰 가능한 장애로 전파하는 것은 잘 정의된 사이클에 따릅니다.실행 시 장애로 인해 시스템 경계 내에서 비활성 상태가 되는 오류가 발생할 수 있습니다.오류가 발생하면 시스템 경계 내에서 더 많은 오류가 발생할 수 있습니다. 따라서 새로운 오류가 발생할 때마다 장애로 작용하거나 시스템 경계로 전파되어 관찰할 수 있습니다.시스템 경계에서 오류 상태가 관찰되면 장애라고 합니다.이 메커니즘은 fault-error-failure[6] cycle이라고 불리며 신뢰성의 주요 메커니즘입니다.
역사
결함 주입 기술은 하드웨어 수준에서 결함을 유도하기 위해 처음 사용되었던 1970년대까지[7] 거슬러 올라갑니다.이런 유형의 장애 주입은 HWIFI(Hardware Implemented Fault Injection)라고 불리며 시스템 내에서 하드웨어 장애를 시뮬레이션하려고 합니다.하드웨어 장애에 대한 첫 번째 실험은 회로 기판의 접속 단락과 시스템에 대한 영향(브리징 장애) 관찰에 그쳤습니다.주로 하드웨어 시스템의 신뢰성을 테스트하기 위해 사용되었습니다.회로기판의 특정 영역을 중방사선으로 폭격하는 장치와 같은 이 기술을 확장하기 위해 나중에 특수 하드웨어가 개발되었다.소프트웨어 기술에 의해 결함이 유발될 수 있으며 이 기술의 측면이 소프트웨어 시스템을 평가하는 데 유용할 수 있다는 것이 곧 밝혀졌다.이러한 기술은 총칭하여 Software Implemented Fault Injection(SWIFI; 소프트웨어 실장 장애 주입)이라고 불립니다.
모델 구현 고장 주입
Cyber-Physical Systems의 복잡성이 높아짐에 따라 기존 고장주입 방식을 적용하는 것은 효율적이지 않기 때문에 테스터는 모델 차원에서 고장주입을 사용하려고 합니다.
소프트웨어가 구현한 장애 주입
소프트웨어 장애 주입을 위한 SWIFI 기술은 컴파일 시간 주입과 런타임 주입의 두 가지 유형으로 분류할 수 있습니다.
컴파일 시간 주입은 소스 코드를 변경하여 시뮬레이션된 장애를 시스템에 주입하는 주입 기술입니다.한 가지 방법은 변환 테스트라고 불리며 기존 코드 행을 변경하여 결함을 포함합니다.이 기법의 간단한 예가 바뀔 수 있습니다.a = a + 1로.a = a – 1
코드 변환은 프로그래머가 의도하지 않게 추가한 오류와 매우 유사한 오류를 생성합니다.
코드 변환의 개량점은 기존 코드를 수정하는 것이 아니라 코드를 추가하는 코드 삽입 장애 주입입니다.이것은 보통 기존의 값을 취하여 어떤 논리를 통해 다른 값으로 섭동하는 단순한 함수인 섭동함수의 사용을 통해 이루어진다.
인트 펑크(인트 가치) { 돌아가다 가치 + 20; } 인트 주된(인트 argc, 차 * argv[]) { 인트 a = 펑크(a기능(아토이(argv[1]))); 한다면 (a > 20) { /* 어떻게 좀 해봐 */ } 또 다른 { /* 다른 일을 하세요 */ } } 이 경우 pFunc는 섭동 함수이며 시스템에 장애를 발생시켜 호출된 함수의 반환 값에 적용됩니다.
런타임 주입 기술은 소프트웨어 트리거를 사용하여 실행 중인 소프트웨어 시스템에 장애를 주입합니다.장애는 여러 물리적인 방법으로 주입할 수 있으며 트리거는 다음과 같은 다양한 방법으로 구현할 수 있습니다.예를 들어, 시간 베이스 트리거(타이머가 지정된 시간에 도달하면 인터럽트가 생성되어 타이머와 관련된 인터럽트 핸들러가 장애를 주입할 수 있습니다).; 인터럽트 베이스 트리거(하드웨어 예외 및 소프트웨어 트랩메크)하니즘은 시스템 코드의 특정 장소 또는 시스템 내의 특정 이벤트(예를 들어 특정 메모리 위치에 대한 액세스)에서 인터럽트를 생성하기 위해 사용됩니다.
런타임 주입 기술은 다양한 기술을 사용하여 트리거를 통해 시스템에 결함을 삽입할 수 있습니다.
- 메모리 공간 손상:이 기술은 파손된 RAM, 프로세서 레지스터 및 I/O 맵으로 구성됩니다.
- 시스템 배치 기술:이는 운영 체제 커널 인터페이스에서 시스템 소프트웨어 실행으로 장애가 전파되는 것과 관련이 있습니다.이것은 사용자 레벨의 소프트웨어에 의해서 행해지는 operating system의 콜을 대행 수신해, 거기에 장해를 주입하는 것에 의해서 행해집니다.
- 네트워크 수준 장애 주입:이 기술은 네트워크인터페이스에서의 네트워크 패킷의 파손, 손실 또는 순서 변경과 관련되어 있습니다.
이러한 기술은 컴퓨터 프로세서 아키텍처에 의해 제공되는 디버깅 기능을 기반으로 하는 경우가 많습니다.
프로토콜 소프트웨어 장애 주입
복잡한 소프트웨어 시스템, 특히 오픈 스탠다드에 기반한 멀티벤더 분산 시스템은 "프로토콜"이라고 불리는 스테이트풀하고 구조화된 교환을 통해 데이터를 교환하는 입출력 작업을 수행합니다.프로토콜 구현 테스트에 특히 유용한 장애 주입의 한 종류(입력을 예측하거나 제어할 수 없다는 점에서 특이한 특성을 가진 소프트웨어 코드 유형)는 퍼지입니다.소프트웨어 시스템에 전송되는 다양한 비활성 입력은 시스템 내부에서 실행되는 코드의 세부 정보에 의존하지 않으며 이에 따라 생성되지 않으므로 퍼징은 특히 유용한 Black-box 테스트 형식입니다.
하드웨어에 의한 장애 주입
이 기술은 하드웨어 프로토타입에 적용되었습니다.테스터는 회로 내 일부 부품의 전압 변화, 온도 상승 또는 하강, 고에너지 방사선에 의한 기판 충격 등을 통해 고장을 주입합니다.
고장 주입 특성
결함에는 세 가지 주요 [8]매개 변수가 있습니다.
- 유형: 어떤 유형의 고장을 주입해야 합니까?예를 들어 고정 값, 지연, 일부 기능 무시, 일부 파라미터/변수 무시, 랜덤 결함, 바이어스 결함, 노이즈 등이 있습니다.각 장애의 진폭도 중요합니다.
- 시간: 언제 활성화해야 합니까?예를 들어 결함의 활성화 시간이나 결함의 활성화 조건입니다.
- 장소:시스템 내 어디에 배치해야 합니까?예를 들어 시스템 간 링크/연결 장애, 시스템/서브시스템/기능 내 장애 등입니다.
이러한 매개변수는 장애 공간 영역을 작성합니다.시스템 복잡성이 증가하면 장애 공간 영역이 기하급수적으로 증가합니다.따라서 기존의 고장 주입 방법은 속도가 너무 느리고 소수의 고장(고장 범위 감소)을 발견하기 때문에 오늘날의 사이버 물리 시스템에서는 사용할 수 없습니다.따라서 테스터는 시스템 동작에 더 큰 영향을 미치는 중대한 장애를 선택하기 위한 효율적인 알고리즘이 필요합니다.따라서 주요 연구 질문은 시스템 동작에 치명적인 영향을 미치는 결함 공간 영역에서 중요한 결함을 찾는 방법입니다.다음은 결함 공간을 효율적으로 탐색하여 시뮬레이션 시간을 단축하고 더 높은 결함 범위에 도달할 수 있도록 지원하는 몇 가지 방법입니다.
- 감도 분석:[9]이 방법에서는 감도 분석을 사용하여 시스템 사양에 더 큰 영향을 미치는 가장 중요한 신호를 식별했습니다.이러한 중요한 신호 또는 파라미터를 식별함으로써 장애주입 툴은 시스템 내의 모든 신호에 초점을 맞추는 대신 효과적인 신호에 초점을 맞춥니다.
- 강화 학습:[10]이 방법에서는 강화 학습 알고리즘을 사용하여 효율적으로 단층 공간을 탐색하고 중요한 단층을 찾아냈습니다.
- 리얼리즘 분석:[11]이 방법에서는, 실가동시에 자연스럽게 발생하는 장해에 근거해, 주입하는 장해가 정의됩니다.
장애 주입 공구
이러한 유형의 결함은 수동으로 주입할 수 있지만 의도하지 않은 결함이 발생할 가능성이 높기 때문에 프로그램을 자동으로 해석하고 결함을 삽입하는 도구가 있습니다.
조사 도구
다수의 SWIFI 툴이 개발되어 있으며, 이러한 툴의 선택사항이 여기에 기재되어 있습니다.일반적으로 사용되는 6가지 고장 주입 도구는 Ferrari, FTEPE, Doctor, Orchestra, Xception 및 Grid-FIT입니다.
- MODIFI(MODEL-Implemented Fault Injection)는 Simulink 동작 모델의 견고성 평가를 위한 장애 주입 도구입니다.도메인 고유의 장애 [12]모델을 구현하기 위해 XML에서의 장애 모델링을 지원합니다.
- Ferrari(Fault and ERRor Automatic Real-Time Injection)는 시스템에 오류를 주입하는 소프트웨어 트랩을 기반으로 합니다.트랩은, 특정의 메모리 장소에의 콜 또는 타임 아웃에 의해서 액티브하게 됩니다.트랩이 호출되면 핸들러는 장애를 시스템에 주입합니다.장애는 일시적일 수도 있고 영구적일 수도 있습니다.Ferrari를 사용한 연구에 따르면 오류 감지는 결함 유형과 결함 [13]삽입 위치에 따라 달라집니다.
- FTAPE(Fault Tolerance and Performance Evaluator)는 메모리 및 레지스터뿐만 아니라 디스크 액세스에도 장애를 주입할 수 있습니다.이것은, 디스크 유닛으로부터 송수신 되는 데이터에 장해를 주입할 수 있는 특수한 디스크 드라이버를 시스템에 삽입하는 것에 의해서 실현됩니다.또한 FTAPE에는 건전성 테스트 [14]목적으로 특정 부하량을 시뮬레이션할 수 있는 합성 부하 유닛이 있습니다.
- DOCR(IntegrateD SOFTware Fault InjeCTiOn Environment)을 통해 메모리 및 레지스터 장애와 네트워크 통신 장애를 주입할 수 있습니다.타임아웃, 트랩 및 코드 수정의 조합을 사용합니다.타임아웃 트리거는 일시적인 메모리 장애를 주입하고 트랩은 레지스터 파손과 같은 일시적인 에뮬레이트된 하드웨어 장애를 주입합니다.코드 수정은 영구 [15]고장을 주입하는 데 사용됩니다.
- Orchestra는 네트워크 수준 장애 주입을 기반으로 하는 스크립트 기반 장애 주입기입니다.주요 용도는 분산 프로토콜의 내결함성 및 타이밍 특성을 평가하고 검증하는 것입니다.오케스트라는 처음에 마하 운영 체제용으로 개발되었으며 이 플랫폼의 특정 기능을 사용하여 결함 인젝터에 의해 발생한 지연 시간을 보상합니다.또한 다른 운영 [16]체제에도 성공적으로 이식되었습니다.
- Xception은 많은 최신 프로세서에서 사용할 수 있는 고급 디버깅 기능을 활용하도록 설계되었습니다.프로세서의 예외 처리 기능이 장애 주입을 트리거하므로 시스템 소스를 수정하거나 소프트웨어 트랩을 삽입할 필요가 없습니다.이러한 트리거는 특정 메모리 위치에 대한 액세스를 기반으로 합니다.이러한 액세스는 데이터 또는 가져오기 명령을 위한 것일 수 있습니다.따라서 트리거를 시간 [7]초과 대신 특정 이벤트에 연결할 수 있으므로 테스트 실행을 정확하게 재현할 수 있습니다.
- Grid-FIT(Grid – Fault Injection Technology)[17]는 고장 주입에 의한 그리드 서비스를 평가하기 위한 신뢰성 평가 방법 및 도구입니다.Grid-FIT는 Apache Axis 트랜스포트를 사용하여 구현된 Java Web Services를 대상으로 한 이전의 장애 주입기[18] WS-FIT에서 파생되었습니다.Grid-FIT는 네트워크 레벨의 고장 주입을 사용하여 침입이 [19]적으면서도 코드 삽입 고장 주입과 유사한 수준의 제어를 제공할 수 있는 새로운 고장 주입 메커니즘을 사용합니다.
- LFI(Library-level Fault Injector)[20]는 자동 테스트 툴 스위트로, 제어된 테스트 환경에서 시뮬레이션하기 위해 사용됩니다.프로그램은 실행 시 처리해야 하지만 입력 테스트만으로는 확인하기 어렵습니다.LFI는 공유 라이브러리에 의해 노출된 오류를 자동으로 식별하고 프로그램 바이너리에서 버그가 발생할 수 있는 오류 복구 코드를 찾아 공유 라이브러리와 응용 프로그램 사이의 경계에 원하는 장애를 주입합니다.
- ChaosMachine은 [21]JVM의 애플리케이션 수준에서 카오스 엔지니어링을 수행하는 도구입니다.예외를 주입하여 응용 프로그램에 관련된 각 트라이캐치 블록의 오류 처리 능력을 분석하는 데 초점을 맞춥니다.
- Java 애플리케이션을 위한 복원력 평가 및 개선 시스템인 TripleAgent.[22]TripleAgent의 고유한 기능은 자동화된 모니터링, 자동화된 섭동 주입 및 자동화된 복원력 향상 기능을 결합하는 것입니다.
- FIBlock(Fault Injection Block)[23]은 고도로 커스터마이즈 가능한 Simulink 블록으로 구현되는 모델 기반의 장애 주입 방식입니다.MATLAB Simulink 모델에서의 주입은 센서, 컴퓨팅 하드웨어, 네트워크 등 사이버 물리 시스템의 필수 이기종 컴포넌트의 전형적인 장애를 지원합니다.블록의 추가 트리거 입력 및 출력을 통해 조건부 결함 모델링이 가능합니다.게다가 트리거 신호에 접속된 2개 이상의 FIBlock은 이른바 연쇄 에러를 모델화할 수 있다.
상용 도구
- Beyond Security[24] beSTORM은 상용 블랙박스 소프트웨어 보안 분석 도구입니다.이는 종종 OEM 개발 중에 사용되지만 구현 전 제품 테스트, 특히 항공우주, 뱅킹 및 방위에도 사용됩니다. beSTORM의 테스트 프로세스는 가장 가능성이 높은 공격 시나리오에서 시작하여 완전한 세대 기반 퍼징으로 이어집니다. beSTORM은 공통 프로토콜과 방어용 모듈을 제공합니다.'자동 학습'은 돌연변이 기반 공격을 포함한 새로운 프로토콜 또는 독점 프로토콜을 제공합니다.특징: 바이너리 및 텍스트 분석, 커스텀 프로토콜 테스트, 디버깅 및 스택 트레이스, 개발 언어에 의존하지 않는 CVE 준거.
- ExhaustiF는 소프트웨어 부하가 높은 시스템의 신뢰성을 향상시키기 위해 소프트웨어 폴트 인젝션(SWIFI)을 기반으로 한 그레이 박스 테스트에 사용되는 상용 소프트웨어 도구입니다.이 도구는 소프트웨어 개발 라이프 사이클의 시스템 통합 및 시스템 테스트 단계에서 사용할 수 있으며 다른 테스트 도구도 보완할 수 있습니다.ExhaustiF는 소프트웨어와 하드웨어 모두에 장애를 주입할 수 있습니다.시뮬레이션된 고장을 소프트웨어에 주입할 때 ExhaustiF는 다음과 같은 고장 유형을 제공합니다.변수 손상 및 절차 손상.하드웨어 장애 주입 카탈로그에는 메모리(I/O, RAM) 및 CPU(Integer Unit, Floating Unit)의 결함이 포함됩니다.RTEMS/ERC32, RTEMS/Pentium,[25] Linux/Pentium 및 MS-Windows/Pentium에는 다양한 버전이 있습니다.
- Holodeck는[26] 보안 이노베이션이 개발한 테스트 툴로, 장애 주입을 사용하여 Windows 애플리케이션 및 서비스의 실제 애플리케이션 및 시스템 오류를 시뮬레이션합니다.Holodeck 고객에는 Microsoft, Symantec, EMC 및 Adobe를 포함한 많은 주요 상용 소프트웨어 개발 회사가 포함되어 있습니다.오류 처리 코드 및 애플리케이션 공격 표면을 분석 및 디버깅하여 취약성 및 보안 테스트를 수행할 수 있는 제어되고 반복 가능한 환경을 제공합니다.파일 및 네트워크 퍼지 장애뿐만 아니라 다양한 리소스, 시스템 및 사용자 정의 장애를 시뮬레이션합니다.코드를 분석하고 테스트 계획을 권장하며 함수 호출 로깅, API 가로채기, 스트레스 테스트, 코드 커버리지 분석 및 기타 많은 애플리케이션 보안 보장 기능을 수행합니다.
- Proofdock의 Chaos Engineering Platform은 Microsoft Azure 클라우드 플랫폼에 중점을 두고 있습니다.인프라 수준, 플랫폼 수준 및 애플리케이션 수준에서 장애를 주입합니다.
- Gremlin은 기업이 카오스 엔지니어링을 통해 보다 탄력적인 시스템을 구축할 수 있도록 지원하는 "서비스로서의 장애(Failure-as-a-Service)" 플랫폼입니다.Gremlin은 알 수 없는 장애를 사전에 식별하고 수정하기 위해 시스템에 장애를 안전하게 주입함으로써 리소스, 네트워크, 상태 등 세 가지 카테고리에 걸쳐 가장 일반적인 장애를 재현합니다.
- Codenomicon Defensics는[27] 네트워크 프로토콜, API 인터페이스, 파일 및 XML 구조를 포함하여 150개 이상의 다른 인터페이스에 장애 주입을 수행하는 블랙박스 테스트 자동화 프레임워크입니다.이 상용 제품은 Oulu 대학에서 5년간 소프트웨어 장애 주입 분야에 대한 연구를 거쳐 2001년에 출시되었습니다.사용된 퍼징 원리를 설명하는 논문 연구는 PROTOS 컨소시엄 멤버 [5]중 하나인 VTT에 의해 발표되었다.
- Mu Service[28] Analyzer는 Mu [29]Dynamics에서 개발한 상용 서비스 테스트 도구입니다.Mu Service Analyzer는 서비스 거부 시뮬레이션, 서비스 수준 트래픽 변동(비활성 입력 생성) 및 알려진 취약성 트리거의 재생을 사용하여 노출된 소프트웨어 인터페이스를 기반으로 서비스의 블랙박스 및 화이트박스 테스트를 수행합니다.이러한 모든 기술은 입력 검증 및 오류 처리를 수행하며 유효한 프로토콜 모니터 및 SNMP와 함께 사용되어 소프트웨어 시스템에 대한 테스트 트래픽의 영향을 특징짓습니다.Mu Service Analyzer를 사용하면 노출된 프로토콜 구현에 대한 시스템 수준의 신뢰성, 가용성 및 보안 메트릭을 설정하고 추적할 수 있습니다.이 툴은 2005년 이후 북미, 아시아 및 유럽의 고객, 특히 네트워크 오퍼레이터(및 그 벤더)와 산업용 제어 시스템(Critical Infrastructure 포함)의 중요한 시장에서 사용할 수 있게 되었습니다.
- Xception은[30] 소프트웨어 장애 주입(SWIFI[31]) 및 스캔 체인 장애 주입(SCIFI)에 기반한 블랙박스 및 화이트박스 테스트에 사용되는 Critical Software SA에 의해 개발된 상용 소프트웨어 도구입니다.Xception을 통해 사용자는 시스템 또는 일부 시스템의 견고성을 테스트할 수 있으며 특정 아키텍처 세트에 대해 소프트웨어 장애 주입과 하드웨어 장애 주입을 모두 수행할 수 있습니다.이 도구는 1999년부터 시장에서 사용되어 왔으며 미국, 아시아 및 유럽 시장, 특히 항공우주 및 통신 시장의 핵심 시장에서 고객을 확보하고 있습니다.Xception 제품 패밀리에는 a) 메인 Xception 툴, 소프트웨어 실장 폴트 인젝션(SWIFI) 테크놀로지의 최첨단 리더, b) Easy Fault Definition(EFD) 및 Xtract(Xception Analysis Tool) 애드온 툴, c) Extended Xception 툴(Exception Tool)이 포함됩니다.강제.
라이브러리
- libfiu(사용자 공간의 장애 주입), 소스 코드를 변경하지 않고 POSIX 루틴의 장애를 시뮬레이션하기 위한 C 라이브러리.API는 프로그램의 임의의 지점에서 런타임에 임의의 장애를 시뮬레이션하기 위해 포함되어 있습니다.
- TestApi는 공유 소스 API 라이브러리로, 에 대한 다른 테스트 유형, 데이터 구조 및 알고리즘뿐만 아니라 장애 주입 테스트를 위한 기능을 제공합니다.NET 어플리케이션
- Fuzino는 오픈 소스 라이브러리이며, 타입 사양 및/또는 유효한 값에서 생성되는 풍부한 퍼징 휴리스틱스를 제공합니다.
- krf는 시스템콜의 장애값을 확률적으로 반환하는 설정 가능한 기능을 제공하는 오픈소스 Linux 커널 모듈입니다.블로그 투고에서 상세하게 설명.
- nlfault injection은 C 표준 라이브러리에만 의존하는 제약에 관계없이 거의 모든 시스템에서 실행할 수 있는 심플하고 휴대용 장애 주입 프레임워크를 제공하도록 설계되었습니다.
기능적 특성 또는 테스트 케이스에서의 결함 주입
돌연변이 결함이 생성되어 모델의 코드 설명에 주입되는 기존의 돌연변이 테스트와는 대조적으로, 모델 코드가 아닌 모델 특성에 직접 새롭게 정의된 일련의 돌연변이 연산자의 적용도 [32]조사되었다.초기 특성(또는 테스트 케이스)에서 생성되어 모델 체커에 의해 검증되는 돌연변이 특성은 초기 검증 절차에서 누락된 새로운 특성으로 간주해야 한다.따라서 새로 식별된 이러한 특성을 기존 부동산 목록에 추가하면 공식 검증의 적용 범위 측정 기준이 개선되고 결과적으로 보다 신뢰할 수 있는 설계로 이어진다.
고장 주입 적용
장애 주입은 여러 가지 형태를 취할 수 있습니다.예를 들면, operating system의 테스트에서는, 많은 경우, 시스템 콜(커널에의 콜)을 대행 수신해, 콜의 일부를 랜덤으로 되돌리는 드라이버(커널 모드소프트웨어)에 의해서 장해가 발생합니다.이런 유형의 장애 주입은 낮은 수준의 사용자 모드 소프트웨어를 테스트하는 데 유용합니다.상위 레벨의 소프트웨어에서는 다양한 방법으로 장애가 주입됩니다.관리 코드에서는 일반적으로 계장을 사용합니다.고장 주입은 수동으로 수행할 수 있지만 고장 [33]주입 프로세스를 자동화하기 위한 여러 고장 주입 도구가 있습니다.
장애가 주입되는 수준의 API의 복잡성에 따라 폴트 주입 테스트는 폴스 포지티브의 수를 최소화하기 위해 신중하게 설계되어야 하는 경우가 많습니다.적절하게 설계된 장애 주입 테스트에서도 소프트웨어의 정상적인 동작에서는 불가능한 상황이 발생할 수 있습니다.예를 들어 API 함수가 두 개 있다고 가정해 봅시다.Commit그리고.PrepareForCommit이러한 기능만으로는 각각의 기능이 실패할 수 있지만PrepareForCommit에의 후속 콜이 호출되어 성공한다.Commit반드시 성공합니다.다음 코드를 생각해 보겠습니다.
에러 = 커밋 준비(); 한다면 (에러 == 성공.) { 에러 = 저지르다(); 주장하다(에러 == 성공.); } 대부분의 경우 장애 주입 구현은 API 함수의 보증을 위해 충분한 상태를 추적하는 것이 불가능합니다.이 예에서는, 상기의 코드의 폴트 주입 테스트가 아사트에 히트하는 일이 있습니다만, 통상의 동작에서는, 이것은 발생하지 않습니다.
장애 주입은 테스트 [34]시 테스트 케이스 실행 중에 사용할 수 있습니다.예를 들어 단락 테스트알고리즘은[34] 테스트 스위트 실행 중에 예외를 주입하여 예기치 않은 오류를 시뮬레이션합니다.이 알고리즘은 2개의 복원 속성을 확인하기 위한 데이터를 수집합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Moradi, Mehrdad; Van Acker, Bert; Vanherpen, Ken; Denil, Joachim (2019). Chamberlain, Roger; Taha, Walid; Törngren, Martin (eds.). "Model-Implemented Hybrid Fault Injection for Simulink (Tool Demonstrations)". Cyber Physical Systems. Model-Based Design. Lecture Notes in Computer Science. Springer International Publishing. 11615: 71–90. doi:10.1007/978-3-030-23703-5_4. ISBN 9783030237035.
- ^ Shepherd, Carlton; Markantonakis, Konstantinos; Van Heijningen, Nico; Aboulkassimi, Driss; Gaine, Clement; Heckmann, Thibaut; Naccache, David (2021). "Physical fault injection and side-channel attacks on mobile devices: A comprehensive analysis" (PDF). Computers & Security. Elsevier. 111 (102471). arXiv:2105.04454. doi:10.1016/j.cose.2021.102471.
- ^ Bar-El, Hagai; Choukri, Hamid; Naccache, David; Tunstall, Michael; Whelan, Claire (2004). "The sorcerer's apprentice guide to fault attacks". Proceedings of the IEEE. IEEE. 94 (2).
- ^ J. Voas, "대중을 위한 결함 주입", 컴퓨터, vol. 30, 페이지 129-130, 1997.
- ^ a b 카크소넨, 라울리프로토콜 구현 보안을 평가하기 위한 기능적 방법.2001.
- ^ A. Avizienis, J.-C.라프리, 브라이언 랜델, C.Landwehr, "신뢰할 수 있는 안전한 컴퓨팅의 기본 개념과 분류", 신뢰할 수 있는 안전한 컴퓨팅, vol.1, 페이지 11–33, 2004.
- ^ a b J. V. 카레라, D.코스타, S. J. G, "결함 주입 스폿 검사 컴퓨터 시스템 신뢰성", IEEE 스펙트럼, 페이지 50-55, 1999.
- ^ Benso, Alfredo; Prinetto, Paolo, eds. (2003). Fault Injection Techniques and Tools for Embedded Systems Reliability Evaluation. Frontiers in Electronic Testing. Springer US. ISBN 978-1-4020-7589-6.
- ^ "Optimizing fault injection in FMI co-simulation through sensitivity partitioning Proceedings of the 2019 Summer Simulation Conference". dl.acm.org. Retrieved 2020-06-14.
- ^ Moradi, M., Oakes, B.J., 사라글루, M., Morozov, A., Janschek, K. 및 Denil, J., 2020.보강학습 기반의 고장주입을 이용한 고장 파라미터 공간 탐색
- ^ Zhang, Long; Morin, Brice; Baudry, Benoit; Monperrus, Martin (2021). "Maximizing Error Injection Realism for Chaos Engineering with System Calls". IEEE Transactions on Dependable and Secure Computing: 1–1. arXiv:2006.04444. doi:10.1109/TDSC.2021.3069715. ISSN 1545-5971.
- ^ Rickard Sveningsson, Jonny Vinter, Henrik Eriksson 및 Martin Torngren, "MODIFI: A MODel-Implemented Fault Injection Tool", 컴퓨터 과학 강의 노트, 2010, 6351/2010, 210-222.
- ^ G. A. Kanawati, N. A. Kanawati 및 J. A. A. A. 아브라함, "FERARI: 유연한 소프트웨어 기반 장애 및 오류 주입 시스템", IEEE Transactions on Computers, vol. 44, 페이지 248, 1995.
- ^ T. 차이와 R.Iyer, "FTAPE: Fault Injection Tool to Measurement Fault Tolerance"는 San Antonio; TX, 1995년 Computing in aerospace에서 발표되었습니다.
- ^ S. Han, K. G. Shin 및 H. A. Rosenberg는 1995년 독일 Erlen에서 열린 국제 컴퓨터 성능 및 신뢰성 심포지엄에서 "DOCAR: 분산 실시간 시스템을 위한 IntegratedD SOFTware 장애 인제CTiOn 환경"을 발표하였습니다.
- ^ S. Dawson, F. Jahanian, T.Mitton, "ORCHEstra: 테스트 프로토콜 구현을 위한 프로빙 및 결함 주입 환경"은 미국 Urbana-Champaign, 1996년 국제 컴퓨터 성능 및 신뢰성 심포지엄에서 발표되었습니다.
- ^ 2008년 2월 2일 Wayback Machine에 아카이브된 Grid-FIT 웹 사이트
- ^ N. Looker, B.Gwynne, J. Xu, M.Munro, "서비스 지향 아키텍처의 신뢰성을 결정하기 위한 온톨로지 기반 접근법"은 제10회 객체 지향 실시간 신뢰 시스템에 관한 IEEE 국제 워크숍, 미국, 2005년 발표에서 제시되었습니다.
- ^ N. Looker, Munro 및 J. Xu는 2005년 제29회 IEEE International Computer Software and Applications Conference에서 "네트워크 수준 장애 주입과 코드 삽입의 비교"를 발표했습니다.
- ^ LFI 웹사이트
- ^ Zhang, Long; Morin, Brice; Haller, Philipp; Baudry, Benoit; Monperrus, Martin (2019). "A Chaos Engineering System for Live Analysis and Falsification of Exception-handling in the JVM". IEEE Transactions on Software Engineering: 1. arXiv:1805.05246. doi:10.1109/TSE.2019.2954871. ISSN 0098-5589. S2CID 46892241.
- ^ Zhang, Long; Monperrus, Martin (2019). "TripleAgent: Monitoring, Perturbation and Failure-Obliviousness for Automated Resilience Improvement in Java Applications". 2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE). IEEE: 116–127. arXiv:1812.10706. doi:10.1109/ISSRE.2019.00021. ISBN 978-1-7281-4982-0.
- ^ Flatag (2020-05-16), Flatag/FIBlock, retrieved 2020-05-16
- ^ beSTORM 제품 정보
- ^ ExpireiF SWIFI 툴 사이트
- ^ Holodeck 제품 개요 2008년 10월 13일 Wayback Machine에서 아카이브
- ^ Codenomicon Defensics 제품 개요
- ^ Mu Service Analyzer(뮤 서비스 분석기)
- ^ 주식회사 뮤다이내믹스
- ^ Xception 웹 사이트
- ^ 중요한 소프트웨어 SA
- ^ Abbasinasab, Ali; Mohammadi, Mehdi; Mohammadi, Siamak; Yanushkevich, Svetlana; Smith, Michael (2011). "Mutant Fault Injection in Functional Properties of a Model to Improve Coverage Metrics". 2011 14th Euromicro Conference on Digital System Design. pp. 422–425. doi:10.1109/DSD.2011.57. ISBN 978-1-4577-1048-3. S2CID 15992130.
- ^ N. Looker, M. Munro 및 J. Xu, "웹 서비스의 오류 시뮬레이션", 국제 시뮬레이션 시스템, 과학기술 저널, 제5권, 2004.
- ^ a b Cornu, Benoit; Seinturier, Lionel; Monperrus, Martin (2015). "Exception handling analysis and transformation using fault injection: Study of resilience against unanticipated exceptions". Information and Software Technology. 57: 66–76. CiteSeerX 10.1.1.670.3667. doi:10.1016/j.infsof.2014.08.004.