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
- 요구사항 검증: correctness, completeness, consistency
- 평가: review, simulation
- 구현의 결과물: 소스파일 검증 (소스파일은 실행이 불가능한 파일)
▶ Test phase verification (실행 기반 테스트)
- 구현의 결과물: 실행파일 검증
테스트 케이스


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
- Testing: bug로 인해 발생한 문제를 찾는다. (by. tester)
- Debugging: bug를 발생시킨 문제를 찾고, 코드를 고친다. (by. 개발자)
- Confirm testing: failure가 해결되었음을 다시 확인한다. (by. tester)

Test Process
1. 단위 테스트 (Unit/Component Test)
: 개발자가 자신이 구현한 부분을 테스트한다.
- 결함이 발견될 때마다 수정이 용이하다.
- 주된 테스트 방법: white-box 테스트; 입력의 흐름을 알고 test
Cf) black-box 테스트: SW 내부 동작은 모르고, 결과만을 보고 test
▶ 드라이버(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. (버그가 없음을 증명하지는 않는다.)
출처: 이화여자대학교 박지현교수님 소프트웨어공학
'소프트웨어공학' 카테고리의 다른 글
| [소프트웨어공학] L9 - Verification, Validation, and Test: SW Test Techniques (0) | 2023.11.17 |
|---|---|
| [소프트웨어공학] L9 - Verification, Validation, and Test: Fundamentals of SW Test (2) (0) | 2023.11.17 |
| [소프트웨어공학] L8 - Model-driven Engineering (0) | 2023.11.13 |
| [소프트웨어공학] L7 - 수강시스템 OOP 실습 (0) | 2023.11.12 |
| [소프트웨어공학] L7 - Object Oriented Development Process Using UML (0) | 2023.11.12 |