소프트웨어 검증
Software verification소프트웨어 검증은 소프트웨어가 모든 예상 요건을 완전히 충족시키는 것을 목표로 하는 소프트웨어 엔지니어링 분야입니다.
폭넓은 범위와 분류
검증의 정의는 광범위하기 때문에 소프트웨어 테스트와 동등합니다.이 경우 검증에는 다음 두 가지 기본적인 접근법이 있습니다.
- 동적 검증(experimental, dynamic testing, 또는 단순 테스트라고도 함) - 결함(소프트웨어 버그)을 찾는 데 유용합니다.
- 정적 검증(분석 또는 정적 테스트라고도 함) - 프로그램의 정확성을 입증하는 데 유용합니다.그러나 소프트웨어가 실제로 수행하는 프로세스와 정적 검증이 수행하는 작업 간에 하나 이상의 충돌이 있을 경우 잘못된 긍정이 발생할 수 있습니다.
동적 검증(테스트, 실험)
동적 검증은 소프트웨어 실행 중에 수행되며 동작은 동적으로 체크됩니다.일반적으로 테스트 단계라고 불립니다.검증은 리뷰 프로세스입니다.테스트의 범위에 따라 세 가지 패밀리로 분류할 수 있습니다.
- 소규모 테스트: 단일 기능 또는 클래스를 확인하는 테스트(단위 테스트)
- Test in the large: 클래스 그룹을 체크하는 테스트입니다.
- 모듈 테스트(단일 모듈)
- 통합 테스트(복수의 모듈)
- 시스템 테스트(시스템 전체)
- 승인 테스트: 소프트웨어의 승인 기준을 확인하기 위해 정의된 정식 테스트
- 기능 테스트
- 비기능 테스트(성능, 스트레스 테스트)
소프트웨어 동적 검증의 목적은 활동(예를 들어 바이오 화학 데이터를 분석하기 위한 의료 소프트웨어 보유) 또는 하나 이상의 활동의 반복적 수행(예: 웹 서버에 대한 스트레스 테스트)에 의해 발생한 오류를 발견하는 것이다. 즉, 활동의 현재 제품이 처음과 같이 정확한지 확인하는 것이다.액티비티)를 참조해 주세요.
정적 검증(분석)
정적 검증은 소프트웨어가 실행 전에 코드를 검사하여 요건을 충족하는지 확인하는 프로세스입니다.예를 들어 다음과 같습니다.
분석에 의한 검증 - 분석검증방법은 조사, 수리계산, 논리평가 및 고전교과서 방식 또는 인정된 일반용도 전산방식을 이용한 계산에 의한 검증에 적용한다.분석에는 측정 데이터 및 관찰된 테스트 결과를 샘플링하여 계산한 기대값과 관련지어 요건에 대한 적합성을 확립하는 작업이 포함됩니다.
폭이 좁다
좀 더 엄격하게 정의하면 검증은 정적 테스트와 동등하며 아티팩트에 적용되도록 되어 있습니다.또한 (소프트웨어 제품 전체의) 검증은 동적 테스트와 동등하며 실행 중인 소프트웨어 제품(요건을 제외한 아티팩트가 아닌)에 적용되도록 되어 있습니다.요구 사항 검증은 정적 및 동적으로 수행할 수 있습니다(아파트 검증 참조).
검증과의 비교
소프트웨어 검증은 소프트웨어 검증과 혼동되는 경우가 많습니다.검증과 검증의 차이:
- 소프트웨어 검증에서는 다음과 같은 질문을 던집니다.제품이 올바르게 구축되고 있습니까?즉, 소프트웨어가 사양에 적합합니까?(집이 청사진에 따르듯이)
- 소프트웨어 검증에서는 다음과 같은 질문을 던집니다. "우리는 올바른 제품을 만들고 있습니까?즉, 소프트웨어는 사용자가 정말로 필요로 하는 기능을 하고 있습니까?(주택은 소유자가 필요로 하는 것과 원하는 것에 부합하기 때문에)
「 」를 참조해 주세요.
레퍼런스
- IEEE: SWEBOK: 소프트웨어 엔지니어링 지식 체계 가이드
- 카를로 게지, 메흐디 자자예리, 디노 만드리올리:소프트웨어 엔지니어링의 기초, 프렌티스 홀, ISBN0-13-099183-X
- Alan L. Breitler:인공신경망에서 파생된 소프트웨어의 검증 절차, 국제시험평가협회지, 2004년 1월, 제25권, 제4호.
- Vijay D'Silva, Daniel Kroening, Georg Weissenbacher: 정식 소프트웨어 검증을 위한 자동화된 기술 조사.IEEE 트랜스집적회로 및 시스템 CAD 27(7): 1165-1178 (2008)