반응형
소프트웨어 개발, QA, 테스트 설계에서 자주 등장하는 두 단어가 있습니다.
바로 Verification과 Validation입니다.
둘 다 “제대로 만들었는지 확인하는 과정”처럼 들리지만, 실제로는 목적, 방식, 시점이 명확히 다릅니다.
이 차이를 제대로 이해하지 못하면 개발 중의 커뮤니케이션에도 혼선이 생기고, 테스트 전략도 흔들릴 수 있습니다.
더이상 헷갈리고 싶지 않아서 ㅋㅋㅋㅋ 글을 쓰면서 정리를 해봅니다..
🔍 한눈에 보기
Verification | Validation | |
정의 | 소프트웨어가 명세된 기능을 정확히 구현했는지 확인하는 활동 Are we building the product right? |
소프트웨어가 사용자의 요구에 부합하는지 확인하는 활동 Are we building the right product? |
초점 | 문서, 설계, 코드 등 개발 산출물의 정확성 점검 | 완성된 제품이 실제 사용 목적에 맞게 제대로 작동하는지 테스트 |
테스트 유형 | 정적(Static) 테스트 | 동적(Dynamic) 테스트 |
대표 방법 | 리뷰, 워크스루, 인스펙션, 데스크 체크, Unit Test | 시스템 테스트, 블랙박스 테스트, 사용자 수용 테스트 등 |
목적 | software correctly implements the specified functions? | software to ensure it meets the user's needs and expectations |
🛠️ 예제로 이해해보자: 전자레인지 만들기
🧪 Verification 예시
전자레인지의 설계도, 버튼 배치도, 코드 구조를 검토하며
“요구사항대로 ‘30초 버튼’이 전자기파를 30초 동안 발생시키도록 설계되었는가?”
“specification에서 요구한 각 기능이 실제 코드에 구현되어 있는가?”
를 체크합니다.이건 문서와 설계 중심의 정적 검토 활동이죠.
🧪 Validation 예시
전자레인지가 다 만들어졌다면 실제로 음식을 데워보며
“사용자가 원하는 만큼 따뜻하게 데워졌는가?”
“조작법이 직관적인가?”
“기능이 기대한 대로 작동하는가?”
등을 확인합니다.이건 사용자 관점에서의 실 사용 테스트입니다.
🤔 그럼 Unit Test는 어디에 속할까?
정답은 Verification입니다.
이유는?
- Unit Test는 작은 코드 단위(함수, 모듈)가 specification에 맞게 정확히 동작하는지 확인하는 테스트입니다.
- 목적은 “사용자 요구를 충족하는가”가 아니라 “정확하게 구현되었는가”입니다
✍️ 마무리
- Verification을 통해 우리는 정확하게 만들고 있는지(correctly implemented?)검증하고,
- Validation을 통해 우리가 만든 것이 실제로 쓸모 있는지(user needs and expectations?) 확인합니다.
배움을 기록하기 위한 공간입니다.
수정이 필요한 내용이나 공유하고 싶은 것이 있다면 언제든 댓글로 남겨주시면 환영입니다 :D
반응형
'배움 기록' 카테고리의 다른 글
FMEA란 무엇인가? 소프트웨어 개발에서의 FMEA (2) | 2025.05.29 |
---|---|
[티스토리] 인라인 코드 백틱(` `) 사용하기 / Notion 스타일로 테마 변경하기 (2) | 2024.02.27 |