1. Validation에 대한 ISO 9000의 정의

[프로젝트 실무 과제 #01] Validation 과 Verification의 정의와 차이점

Confirmation by examination and through provision of objective evidence that the requirements for a specific intented use or application have been fulfilled.

요구 사항이 컴포넌트나 시스템을 특정하게 의도적으로 사용 또는 활용하는 것을 충족시키는지 조사에 의해서나 객관적인 증거 제공으로 확인하는 것

2. Verification에 대한 ISO 9000의 정의

Confirmation by examination and through the provision of objective evidence that specified requirements have been fulfilled.

명세된 요구 사항이 충족되었는지를 조사에 의해서나 객관적인 증거 제공으로 확인하는 것.

3. Validation과 Verification의 차이점

“Verification”과 “Validation”은 검증한다는 비슷한 개념을 가지고 있지만 사용자의 요구사항과 얼마나 밀접한 관련을 가지고 있는지의 차이가 있다. “Verification”은 개발단계의 산출물이 그 단계의 초기에 설정된 조건을 만족하는지 여부를 결정하기 위해 구성 요소나 시스템을 평가하는 프로세스이고, “Validation”은 명세된 요구사항을 만족하는지 검증하는 것을 말한다.

[그림1] 은 V모델 테스팅 체계 (V-Model Testing Framework)을 보여주고 있으며, 흔히 “Verification”은 인간에 의한 테스팅(Human testing)이라고 불리는데, 그 이유는 주로 산출물 위주의 검토형태로 이루어지기 때문이다. “Verification”은 본격적인 구축(implementation) 단계 이전에 요구사항명세서, 설계명세서, 코드등과 같은 산출물을 대상으로 평가(Evaluating), 검토(reviewing), 점검(inspecting)등을 하는 프로세스이며, 구체적인 방법은 점검 (Inspection). 워크스루(Walkthrough), 동료 검토(Buddy Checks)등이 있다.

[그림 ]

“Validation”은 명시된 요구사항들을 만족하는지 여부를 확인하기 위해 개발단계 말이나 중간에 구성요소나 시스템을 평가하는 프로세스이다. “Validation”은 실제적으로 소프트웨어를 실행하기 때문에 “컴퓨터 기반 테스팅 (Computer-Based Testing)”이라 불리며, “Validation”의 활동은 크게 하위레벨 테스팅 (Low-level testing)과 상위레벨 테스팅 (High-level testing)으로 나누어진다.

Low level testing은 각각의 프로그램 단위를 한번에 하나씩 또는 합쳐서 수행하는 것으로 프로그램의 내부구조에 대한 상세한 지식을 요구하며, 여기에는 단위 테스팅 (unit testing)과 통합 테스팅 (integration testing)이 속한다.

high level testing은 전체를 대상으로 완성된 제품을 대상으로 테스팅을 실시하는 것이다. 일반적으로 내부개발인원이 수행하는 Low level testing과는 달리 객관적인 차원에서 내부개발조직과 관련 없는 제3의 조직에서 high level testing을 수행한다. high level testing은 목적에 따라 사용성 테스팅 (usability testing), 기능 테스팅 (function testing), 시스템 테스팅 (system testing), 인수 테스팅 (acceptance testing)으로 구분된다.

4. Validation과 Verification에 관한 학자들의 정의들

	Validation	Verification
"Software Engineering - A Practitioner's Approach" by Roger. S. Pressman	Validation refers to a different set of activities that ensure that the software that has been built is traceable to customer requirements. Validation 은 고객의 요구사항을 만족시키는 소프트웨어를 확인하는 다른 행동들의 집합이다. "Are we building the right product?" "당신을 올바른(요구사항에 맞는) 제품을 만들고 있는가?“	Verification refers to the set of activities that ensure that software correctly implements a specific function. Verification 은 명세된 기능이 올바르게 구현된 소프트웨어인지 확인하는 행동들의 집합이다. "Are we building the product right?" “당신은 올바르게 제품을 만들고 있는가?”
"Software Engineering Theory and Practice" by Shari Lawrence Pfleeger	"Validation ensures that the system has implemented all of the requirements so that each system function can be traced back to a particular requirement; system test also verifies the requirements. Validation은 시스템이 모든 요구사항들을 구현했는지 확인하는 것이고, 그래서 각 시스템의 기능은 특정한 요구사항(시스템 테스트 또한 요구사항을 검증한다)으로 추적될 수 있어야 한다.	Verification ensures that each function works correctly. That is Validation makes sure that the developer is building the right product and verification checks the quality of implementation." Verification은 각 기능이 정확히 동작하는지 확인하는 것이다. 개발자가 올바른 제품을 만들고 있는지는 Validation이 확실하게 해준다. Verification은 구현의 품질을 체크한다.
"Testing Computer Software" by Cem Kamer, Jack Falk and Nguyen	"You validate a program by checking it against the published user or system requirements. System testing and integrity testing are exe of validation tests." "당신은 발주자 또는 시스템 요구사항에 대한 체크로 프로그램을 validate한다. 시스템 테스팅과 무결성 테스팅은 validate 테스트들 이전 단계이다.“	"You verify a program by checking it against the most closely related design documents or specifications if there is an external specification the function test verifies at." “당신은 가장 밀접하게 관계된 설계 문서들 또는 명세서에 대한 체크로 프로그램을 검증한다. 만약 external specification이 있다면 기능 테스트는 그것을 검증하는 것이다.“
"Software testing in the Real world" by Ed Kit	"Validation is the process of evaluation a system or component at the end of the development process to determine whether it satisfies specified requirements." ""Validation 은 개발과정 끝에서 명세된 요구사항들을 만족하는지 결정하는 평가과정이다.“	"Verification is a human examination or review of the work product." “Verification은 인간에 의한 산출물 조사 또는 리뷰이다.”

5. 정리

○ Validation : Am I building the right product?

내가 올바른 제품을 만들고 있는가? 요구사항에 맞는 제품을 만들고 있는가?

○ Verification : Am I building the product right?

내가 올바르게 제품을 만들고 있는가? 명시된 기능의 품질이 올바르게 구현되고 있는가?