소프트웨어 신뢰성 테스트
Software reliability testing소프트웨어 신뢰성 테스트는 특정 시간 동안 특정 환경 조건에 따라 소프트웨어의 기능성을 테스트하는 소프트웨어 테스트 분야입니다.소프트웨어 신뢰성 테스트는 소프트웨어 설계 및 기능상의 많은 문제를 발견하는 데 도움이 됩니다.
개요
소프트웨어의 신뢰성은 소프트웨어가 지정된 환경과 일정 시간 동안 제대로 작동할 확률입니다.다음 공식을 사용하여 사용 가능한 모든 입력 상태의 샘플을 테스트하여 고장 확률을 계산합니다.평균 고장 간격(MTBF)=평균 고장 간격(MTTF)+평균 복구 시간(MTTR)
- 확률 = 불합격건수 / 고려대상건수
가능한 모든 입력 상태의 집합을 입력 공간이라고 합니다.소프트웨어의 신뢰성을 찾으려면 주어진 입력 공간과 [1]소프트웨어에서 출력 공간을 찾아야 합니다.
신뢰성 테스트에서는 설계 및 운용 단계 등 다양한 개발 단계에서 데이터를 수집합니다.비용 및 시간 제한 등의 제한으로 인해 테스트가 제한됩니다.통계 샘플은 소프트웨어의 신뢰성을 테스트하기 위해 소프트웨어 제품에서 가져옵니다.충분한 데이터 또는 정보가 수집되면 통계 스터디가 수행됩니다.시간 제약은 테스트를 수행할 날짜 또는 마감일을 적용함으로써 처리됩니다.이 단계가 끝나면 소프트웨어 설계가 중지되고 실제 구현 단계가 시작됩니다.비용과 시간에 제약이 있기 때문에 데이터는 신중하게 수집되어 각 데이터가 어느 정도 목적을 가지고 예상된 [2]정밀도를 얻을 수 있습니다.신뢰성 테스트에서 만족스러운 결과를 얻으려면 몇 가지 신뢰성 특성을 고려해야 합니다.예를 들어, 평균 수명(MTTF)[3]은 다음 세 가지 요인으로 측정됩니다.
- 동작 시간,
- 오프 사이클의 수,
- 캘린더 시간을 지정합니다.
작동 시간에 제한이 있거나 개선이 필요한 첫 번째 지점에 초점이 맞춰져 있는 경우, 압축 시간 가속을 적용하여 테스트 시간을 단축할 수 있습니다.달력 시간에 초점이 맞춰져 있는 경우(즉, 미리 정의된 마감일이 있는 경우), 강도 높은 스트레스 테스트가 사용됩니다.[2][4]
측정.
소프트웨어 가용성은 평균 장애 간격(MTBF)[5]으로 측정됩니다.
MTBF는 평균 고장 시간(MTTF)과 평균 수리 시간(MTTR)으로 구성됩니다.MTTF는 연속된2개의 장애 사이의 시간차입니다.MTTR은 [6]장애를 수정하는 데 필요한 시간입니다.
안정된 상태의 가용성은 소프트웨어가 가동하고 있는 비율을 나타냅니다.
예를 들어, 소프트웨어에 대해 MTTF = 1000시간이면 소프트웨어는 1000시간의 연속 작동 동안 작동해야 합니다.
같은 소프트웨어의 경우 MTTR = 2시간이면 MTBF입니다
A / 0 . { A =/ \ 0 . }
소프트웨어의 신뢰성은 장애율( \ \ 로 측정됩니다.
소프트웨어의 신뢰성은 0과 1 사이의 수치입니다.프로그램에서 오류나 버그를 제거하면 [7]신뢰성이 높아집니다.소프트웨어 신뢰성 증가 모델(SRGM)(소프트웨어 신뢰성 모델 목록)에는 로그, 다항식, 지수, 검정력 및 S자형이 있습니다.
신뢰성 테스트의 목적
신뢰성 테스트의 주요 목적은 사양에 따라 알려진 고정 절차를 사용하여 어떠한 유형의 시정 조치 없이 주어진 조건에서 소프트웨어 성능을 테스트하는 것입니다.
세컨더리 목표
신뢰성 테스트의 2차 목표는 다음과 같습니다.
- 반복적인 실패의 지각 구조를 찾기 위해서입니다.
- 지정된 시간 내에 발생한 장애 수를 찾습니다.
- 소프트웨어의 평균 수명을 찾기 위해.
- 실패의 주요 원인을 발견하다.
- 예방조치 후 소프트웨어 유닛의 성능을 확인한다.
목표를 정의하는 포인트
목표 작성에 관한 제약사항은 다음과 같습니다.
- 소프트웨어의 동작은 특정 조건에서 정의해야 합니다.
- 목표는 실현 가능해야 한다.
- 시간 제약이 [8]제공되어야 합니다.
신뢰성 테스트의 중요성
컴퓨터 소프트웨어의 응용은 산업, 상업 및 군사 시스템의 필수적인 부분인 여러 가지 분야에 걸쳐 있습니다.소프트웨어 신뢰성은 안전 중요 시스템에 많이 적용되기 때문에 현재 중요한 연구 영역이 되고 있습니다.소프트웨어 엔지니어링이 지난 세기에 가장 빠르게 발전한 기술이 되고 있지만, 이를 평가할 수 있는 완전하고 과학적인, 정량적인 척도는 없습니다.소프트웨어 신뢰성 테스트는 이러한 소프트웨어 엔지니어링 [9]기술을 평가하기 위한 도구로 사용되고 있습니다.
소프트웨어 제품 및 소프트웨어 개발 프로세스의 성능을 개선하기 위해서는 신뢰성에 대한 철저한 평가가 필요합니다.소프트웨어 신뢰성 테스트는 소프트웨어 관리자와 [10]실무자에게 매우 유용하기 때문에 중요합니다.
테스트를 통해 소프트웨어의 신뢰성을 확인하려면:
- 충분한 수의 테스트 케이스를 충분한 시간 동안 실행하여 소프트웨어가 장애 없이 실행될 수 있는 시간을 합리적으로 예측해야 합니다.장시간의 테스트는, 장해나 장해의 원인이 되는 장해(메모리 누전이나 버퍼 오버플로우등)를 특정하기 위해서 필요합니다.
- 테스트 케이스의 배포는 소프트웨어의 실제 또는 계획된 운영 프로파일과 일치해야 합니다.소프트웨어의 기능 또는 서브셋이 실행되는 빈도가 높을수록 해당 기능 또는 서브셋에 할당해야 하는 테스트 케이스의 비율이 높아집니다.
신뢰성 테스트의 종류
소프트웨어 신뢰성 테스트에는 기능 테스트, 부하 테스트 및 회귀 [11]테스트가 포함됩니다.
기능 테스트
기능 테스트는 소프트웨어에 의해 제공되는 기능을 체크하고 다음 순서로 수행합니다.
- 소프트웨어의 각 조작은 1회 실행됩니다.
- 두 작업 간의 상호 작용이 줄어들고
- 각 작업이 올바르게 실행되었는지 확인합니다.
기능 테스트에 이어 부하 [11]테스트도 실시합니다.
재하시험
이 테스트는 최대 작업 부하에서 소프트웨어의 성능을 확인하기 위해 수행됩니다.소프트웨어는 어느 정도의 워크로드까지 성능이 향상되며, 그 후에는 소프트웨어의 응답 시간이 저하되기 시작합니다.예를 들어 성능 저하 없이 동시에 지원할 수 있는 사용자 수를 확인하기 위해 웹 사이트를 테스트할 수 있습니다.이 테스트는 주로 데이터베이스 및 애플리케이션 서버에 도움이 됩니다.로드 테스트에는 일부 소프트웨어가 [11]워크로드에서 얼마나 잘 작동하는지 확인하는 소프트웨어 성능 테스트도 필요합니다.
회귀 검정
회귀 테스트는 이전 버그 수정을 통해 새로운 버그가 도입되었는지 확인하기 위해 사용됩니다.회귀 테스트는 소프트웨어 기능을 변경하거나 업데이트할 때마다 수행됩니다.이 테스트는 소프트웨어의 [11]길이와 기능에 따라 정기적으로 실시됩니다.
테스트 계획
신뢰성 테스트는 다른 유형의 테스트에 비해 비용이 많이 듭니다.따라서 신뢰성 테스트를 실시할 때는 적절한 관리와 계획이 필요합니다.이 계획에는 구현되는 테스트 프로세스, 환경에 대한 데이터, 테스트 일정, 테스트 포인트 등이 포함됩니다.
테스트 케이스 설계상의 문제점
테스트 케이스를 설계할 때 발생하는 일반적인 문제는 다음과 같습니다.
- 테스트 케이스는 소프트웨어의 각 필드에 유효한 입력 값만 선택하는 것만으로 설계할 수 있습니다.특정 모듈에서 변경이 이루어진 경우 이전 값으로는 이전 버전의 소프트웨어 이후에 도입된 새로운 기능이 실제로 테스트되지 않을 수 있습니다.
- 기존 테스트 케이스에서는 처리되지 않는 중요한 실행이 소프트웨어에 있을 수 있습니다.따라서 신중한 테스트 케이스 선택을 [11]통해 가능한 모든 유형의 테스트 케이스를 고려해야 한다.
테스트를 통한 신뢰성 향상
개발 및 소프트웨어 설계 시 학습은 제품의 신뢰성을 향상시키는 데 도움이 됩니다.신뢰성 테스트는 기본적으로 소프트웨어의 장애 모드를 제거하기 위해 수행됩니다.제품의 수명 테스트는 항상 설계 부품이 완성되거나 적어도 전체 설계가 [12]완료된 후에 수행해야 합니다.고장 분석 및 설계 개선은 테스트를 통해 이루어집니다.
신뢰성 증가 테스트
[12] 이 테스트는 초기에 자주 고장날 것으로 예상되는 소프트웨어의 새로운 프로토타입을 확인하는 데 사용됩니다.고장 원인을 검출하고 결함을 줄이기 위한 조치를 취합니다.T가 프로토타입의 총 누적 시간이라고 가정합니다. n(T)는 시작부터 시간 T까지의 고장 횟수입니다.n(T)/T에 대해 그려진 그래프는 직선입니다.이 그래프는 듀안 플롯이라고 불립니다.다른 모든 사이클의 테스트와 수정을 거쳐 어느 정도의 신뢰성을 얻을 수 있습니다.
n(T)에 대한 eq.1 해결,
여기서 K는 e^b입니다.방정식의 알파 값이 0이면 주어진 고장 횟수에 대해 신뢰성이 기대만큼 향상될 수 없습니다.알파가 0보다 크면 누적 시간 T가 증가합니다.따라서 고장 횟수는 검정 길이에 따라 달라지지 않습니다.
최신 릴리즈 테스트 케이스 설계
현재 버전의 소프트웨어에 새로운 기능이 추가되는 경우 해당 작업에 대한 테스트 케이스는 다르게 작성됩니다.
- 우선 현재 버전에서 작성할 새로운 테스트 케이스의 수를 계획합니다.
- 새로운 기능이 기존 기능의 일부인 경우 새로운 기능과 기존 기능의 테스트 케이스를 공유합니다.
- 마지막으로 현재 버전과 이전 버전의 모든 테스트 케이스를 결합하여 모든 [11]결과를 기록합니다.
소프트웨어의 새로운 테스트 케이스 수를 계산하는 사전 정의된 규칙이 있습니다.N이 소프트웨어의 새로운 릴리스에 대한 새로운 동작의 발생 확률인 경우, R은 현재 릴리스에서 사용된 동작의 발생 확률이며, T는 이전에 사용된 모든 테스트 케이스의 수이다.
운용 테스트에 근거한 신뢰성 평가
동작 테스트 방법은 소프트웨어의 신뢰성을 테스트하기 위해 사용됩니다.여기서는 소프트웨어가 관련된 운영 환경에서 어떻게 작동하는지 확인합니다.이러한 유형의 평가에서 가장 큰 문제는 그러한 운영 환경을 구축하는 것입니다.그러한 유형의 시뮬레이션은 원자력 산업, 항공기 등 일부 산업에서 관찰된다.미래의 신뢰성을 예측하는 것은 신뢰성 평가의 일부입니다.
소프트웨어의 신뢰성을 테스트하기 위한 운용 테스트에는, 다음의 2개의 기술이 사용됩니다.
- 정상상태 신뢰성 평가
- 이 경우는, 전달된 소프트웨어 제품의 피드백을 사용합니다.그 결과에 따라 다음 버전의 제품에 대한 향후 신뢰성을 예측할 수 있습니다.이것은 물리 제품의 샘플 테스트와 비슷합니다.
- 신뢰성 증가 기반 예측
- 이 방법에서는 테스트 절차에 대한 문서를 사용합니다.예를 들어, 개발된 소프트웨어와 그 소프트웨어의 다른 새로운 버전을 만들고 있다고 합시다.각 버전의 테스트 데이터를 고려하여 관찰된 경향을 바탕으로 새로운 [13]버전의 소프트웨어 신뢰성을 예측합니다.
신뢰성 증가 평가 및 예측
소프트웨어의 신뢰성의 평가와 예측에서는, 신뢰성의 성장 모델을 사용합니다.소프트웨어의 동작중에, 그 장해에 관한 데이터는 통계적인 형태로 보존되어 신뢰성 성장 모델의 입력으로서 주어집니다.이 데이터를 사용하여 신뢰성 증가 모델은 소프트웨어의 신뢰성을 평가할 수 있습니다.
신뢰성 증가 모델에 대한 많은 데이터는 고장 프로세스를 나타내는 확률 모형과 함께 사용할 수 있습니다.그러나 모든 조건에 가장 적합한 모델은 없습니다.따라서 우리는 적절한 조건에 따라 모델을 선택해야 합니다.
무장애 작업을 기반으로 한 신뢰성 평가
이 경우 소프트웨어의 신뢰성은 다음과 같은 가정 하에 평가됩니다.
- 결함이 발견되면 누군가가 수리해 주나요?
- 결함을 수정해도 소프트웨어의 신뢰성에 아무런 영향을 미치지 않습니다.
- 소프트웨어의 각 수정은 [13]정확합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Software Reliability. Hoang Pham.
- ^ a b E.E.Lewis. Introduction to Reliability Engineering.
- ^ "MTTF".
- ^ IEEE Recommended Practice on Software Reliability, IEEE, doi:10.1109/ieeestd.2017.7827907, ISBN 978-1-5044-3648-9
- ^ Roger Pressman (1982). Software Engineering A Practitioner's Approach. McGrawHill.
- ^ "Approaches to Reliability Testing & Setting of Reliability Test Objectives".
- ^ Aditya P. Mathur. Foundations of Software Testing. Pearson publications.
- ^ Reliability and life testing handbook. Dimitri kececioglu.
- ^ A Statistical Basis for Software Reliability Assessment. M. xie.
- ^ Software Reliability modelling. M. Xie.
- ^ a b c d e f John D. Musa (2004). Software reliability engineering: more reliable software, faster and cheaper. McGraw-Hill. ISBN 0-07-060319-7.
- ^ a b E.E.Liwis (1995-11-15). Introduction to Reliability Engineering. ISBN 0-471-01833-3.
- ^ a b "Problem of Assessing reliability". CiteSeerX 10.1.1.104.9831.
{{cite web}}:누락 또는 비어 있음url=(도움말)