배움 기록

Verification vs Validation 의 차이? 목적을 생각하기!

Spezi 2025. 5. 23. 01:30
반응형

소프트웨어 개발, 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

 

 

 

 

반응형