본문 바로가기
IT 각종 공부

소프트웨어 테스트 (Software test)

by 채완대디 2021. 9. 2.
반응형

임베디드 시스템의 소프트웨어 테스트에 대한 내용을 다룬다. 기본적인 테스트 분야의 용어 해설을 위주로 각 테스트 기법의 기본적인 절차를 기술한다. 

 

1. 용어 해설

  • Faults: error와 failure의 원인
  • Errors: 시스템 내에서의 의도하지 않은 상태
  • Failure: 의도한 서비스와 실제 서비스의 편차, 결과의 편차

2. Verificaiton and Validation

Verificaiton 

  • 생명 주기에서 현 단계 산출물과 바로 전 단계 산출물과의 일관성 및 일치성을 평가하는 프로세스이다.
  • 이전 단계의 요구를 일관적으로, 완전하게, 정확하게 따르고 있는지 검증한다. 
  • Are we building the product right?

Validation

  • 최종산출물(product)이 요구사항에 맞게 수행되는가를 검사하는 프로세스이다.
  • 개발한 소프트웨어가 사용자가 실제로 요구하는 사항을 만족하는지 검증한다.
  • Are we building the right product?

정적인 V&V

  • 결함을 직접적으로 찾는다.
  • 대상 시스템의 행위를 확인하지는 않는다.
  • 장애를 찾는 것은 아니다.
  • 결함을 직접적으로 제거할 수 있다.
  • 요구사항의 기능성에 따르는 결함을 찾기 위해서는 많은 노력을 필요로 한다.

동적인 V&V

  • 장애의 존재를 확인한다.
  • 대상 시스템의 행위를 확인한다.
  • 결함이 존재하지 않음을 보일 수는 없다.
  • 결함을 제거하기 위해서는 “Debugging” 과정이 필요하다.
  • 요구사항의 기능성에 따르는 장애를 찾기에 용이하다.
  • 일반적으로 “Testing”이라고 불린다.

3. 테스트 기본 개념

테스트의 정의

  • 오류를 발견하려는 의도로 프로그램 또는 시스템을 실행하는 프로세스 (Myers, 1979)
  • 명세된 요구사항을 만족하는지 검증하거나 실제와 기대되는 결과 간의 차이를 식별하기 위해 시스템을 수동 또는 자동화된 방법으로 시험하고 평가하는 프로세스 (IEEE, 1990)
  • 프로그램 또는 시스템이 그것에 부과된 것을 수행하는지 확신을 수립해가는 프로세스 (Hetzel, 1973)

테스트의

  • 남아 있는 결함 발견
  • 명세 충족 확인
  • 사용자 및 비즈니스의 요구 충족 확인
  • 결함 예방
  • 품질 수준에 대한 자신감 획득과 정보 제공
  • 개발 프로세스 점검, 이슈 제기
  • 논리적 설계의 구현 검증
  • 시스템과 소프트웨어가 적절히 동작함을 확인

4. 테스트이 일반적 원리

원리 1 – 테스트는 결함이 존재함을 밝히는 것

SW의 잔존하는 결함을 간과할 가능성은 줄이지만, 결함이 전혀 발견되지 않는 경우라도 결함이 없이 완전하다는 것은 증명 불가하다.

원리 2 – 완벽한 테스트 (Exhaustive test)는 거의 불가능

모든 가능성을 테스트하는 것은 지극히 간단한 SW를 제외하고는 불가능하다. 무한 경로, 무한 입력값, 무한 타이밍은 불가능하기 때문이다. 리스크 분석과 결정된 우선 순위에 테스트를 집중한다.

원리 3 개발 초기부터 테스트를 시작

개발의 시작과 동시에 테스트를 계획하고 전략적으로 접근하는 것을 고려한다.

요구사항 명세서와 설계서 등의 개발 중간 산출물을 분석하여 테스트 케이스 도출 등 각 단계별 테스트 목표에 따라 테스트한다.

원리 4 결함 집중 (Defect clustering)

적은 수의 모듈에 대다수의 결함이 발견되는 등, 일정 모듈에 결함이 집중되는 현상이 발견될 수 있다.

원리 5살충제 패러독스 (Pesticide paradox)

동일한 테스트가 반복적으로 수행되는 경우 결국 동일한 테스트 케이스들로는 더 이상 새로운 결함을 찾아내지 못한다.

원리 6테스트는 정황 (Context)에 의존적

테스트는 정황에 따라 다르게 진행한다.

Safety critical SW와 전자상거래 사이트의 테스트는 다르다.

원리 7오류-부재의 궤변 (Absence-of-errors fallacy)

개발된 시스템이 사용자 또는 비즈니스의 요구를 충족시키지 못한다면, 결함을 찾고 결함을 제거하여도 품질이 높다고 볼 수 없다. 

 

(2편에서 계속)

반응형

댓글