본문 바로가기
소프트웨어공학

[소프트웨어공학] L9 - Verification, Validation, and Test: Fundamentals of SW Test

by leziwn.cs 2023. 11. 13.
Verification, Validation, Testing
Verification, Validation, Review, Testing

▶ Verification vs. Validation

  • Verification: 각 단계에서 올바르게 진행되고 있는가? 잘 만들고 있는가?
    --> Are we building the product right?
  • Validation: 최종 단계가 적절한가? 잘 만들었는가?
    --> Are we building the right product?

 

▶ Review vs. Testing

  • Review: 각 단계마다의 산출물을 검토한다. --> Static test
  • Testing: 실행 결과를 확인한다. --> Dynamic test

 

Design phase verification vs. Test phase verification

Design phase verification vs. Test phase verification

▶ Design phase verification

  • 요구사항 검증: correctness, completeness, consistency
  • 평가: review, simulation
  • 구현의 결과물: 소스파일 검증 (소스파일은 실행이 불가능한 파일)

▶ Test phase verification (실행 기반 테스트)

  • 구현의 결과물: 실행파일 검증

 

 

테스트 케이스

테스트 케이스
차량용 네비게이션 SW - 테스트 케이스

 

 

Quality Attribute and Test

Quality Attribute and Test

 

 

Error, Fault, Failure

: Error --> Fault --> Failure

▶ Error

: People makes errors.

 

▶ Falut

: Error가 어떤식으로 나타나는가?

  • Software fault
  • Hardware fault
    - Permanent fault -- 예) 배터리 성능 문제
    - Transient fault: 일시적인 결함 -- 예) 방사능 노출로 인한 error

▶ Failure

: 잘못된 결과

 

 

Testing vs. Debugging
  1. Testing: bug로 인해 발생한 문제를 찾는다. (by. tester)
  2. Debugging: bug를 발생시킨 문제를 찾고, 코드를 고친다. (by. 개발자)
  3. Confirm testing: failure가 해결되었음을 다시 확인한다. (by. tester)

Testing vs. Debugging

 


Test Process
1. 단위 테스트 (Unit/Component Test)

: 개발자가 자신이 구현한 부분을 테스트한다.

  • 결함이 발견될 때마다 수정이 용이하다.
  • 주된 테스트 방법: white-box 테스트; 입력의 흐름을 알고 test
    Cf) black-box 테스트: SW 내부 동작은 모르고, 결과만을 보고 test

▶ 드라이버(Driver) vs. 스터브(Stub)

드라이버(Driver) vs. 스터브(Stub)

  • 드라이버(Driver): 내가 원하는 함수를 실행시키도록 한다.
  • 스터브(Stub): 다른 사람이 작성한 함수를 호출해야 하는 경우, 가상으로 함수를 작성하여 호출한다.

 

2. 통합 테스트 (Integration Test)

: 상호 연동하는 동작을 테스트한다. --> 연결 부분이 잘 연결되었는지 확인한다.

  • 개발자가 아닌, 제3자 tester에 의한 테스트가 필요하다.
  • 테스트 데이터: High-level design 단계에서 나오는 설계 산출물의 정보를 이용하여 테스트 데이터를 생성한다.

 

3. 시스템 테스트 (System Test)

: 단위 테스트, 통합 테스트가 완료된 후, 시스템 테스트

  • 테스트 데이터: Requirement specification 단계로부터 나오는 정보를 이용하여 테스트 데이터를 생성한다.
  • 기능 테스트, 비기능 테스트

 

4. 인수 테스트 (Acceptance Test)

: 완성된 시스템이 얼마나 사용자의 요구사항을 만족하였는지 테스트한다. (사용자 관점)

 

 

테스트 프로세스 (요약)

테스트 프로세스 (요약)

 

 

주요 테스트 활동
  • Test identification (테스트 항목 정의) - 테스트 설계 단계
  • Test data selection (테스트 케이스 선정): 효과적으로 테스트될 수 있도록 하는 테스트 데이터를 선정한다.

--> 소프트웨어 테스팅: Process of selecting good test data locating fault in the program.

 


Principles of Test
  • Testing shows presense of defects. (버그가 없음을 증명하지는 않는다.)

 

 

 

 

 

출처: 이화여자대학교 박지현교수님 소프트웨어공학