본문 바로가기

ComputerScience/Software Engineering

소프트웨어공학 - 20. Verification and Validation (V&V)

728x90

1. Verification and Validation (V&V)

- 소프트웨어의 개발 프로세스에서 우리가 의도한 대로 잘 만들어지고 있는지 리뷰와 조사를 통해 검증하는 것을 verification이라고 한다.

- 검사, Inspection은 요구사항, 디자인, 코드 등의 산출물들을 점검하는 것을 말한다.

- inspection은 프로그램이 실제로 구동되어야 검사할 수 있는 항목에 대해서는 점검이 어렵다. 

- 개발 산출물들이 requirement를 잘 충족하고 있는지 검사하는 것을 Validation이라고 한다.

2. Testing

- 소프트웨어가 해야할 일들을 잘 수행하는지 testing을 통해 성취된다.

- 주 목적은 defect를 탐지하는 것이다.

 

Development testing

- 개발 단계에서 bug, defect를 탐지한다.

- object, function 단위로 개별 Unit에 대해 테스트를 수행하는 Unit testing도 여기에 속한다. (기능 동작 점검)

- 테스트를 마친 unit들이 구성하는 component 별로 테스팅을 수행하는 것을 component testing이라고 한다. (컴포넌트 인터페이스 점검)

- 컴포넌트들을 모아서 만들어진 시스템을 테스트 하는 것을 system testing이라고 한다. (component간의 상호작용 점검)

- 직접 코드의 로직을 알고 있는 경우가 많기 때문에 주로 white box testing이 수행된다.

 

Release testing

- 사용자에게 실제로 제품을 인도하기 전에 완성된 버전의 결과물을 테스트한다.

- 검증팀은 내부 로직과 관계없이 input,output만 가지고 테스르트를 수행하므로 주로 black box testing이 수행된다.

 

User testing

- user 환경에서 이루어지는 테스트를 말한다.

- 사용자도 내부 로직을 모르기 때문에 주로 black box testing이 수행된다.

 

Black box testing

- 테스트하는 대상의 내부는 전혀 모르는 상태에서 input, output 비교만으로 correctness를 점검한다.

 

White box testing

- 테스트 대상의 내부 로직을 잘 알고 있는 상태에서는 각 구조나 단계마다 다양한 test cases가 만들어질 수 있다.

3. Equivalence Partition

- 테스트 과정에서 모든 경우를 검사하는 것보다 동등한 효과를 낼 수 있는 부분들로 partition하여 테스트를 수행하는 것을 말한다.

- 시간과 비용을 절약하면서도 0부터 14까지 다 테스트 해본 것과 동일한 효과를 나타낸다.

- 예를들어 위처럼 세가지 class로 구분하고나면 0, 5, 6, 10 , 11, 14 끝값에 대해서만 테스트를 수행할 수 있다.

- 배열에 찾는 원소가 있는지 없는지 equivalence partition을 통해 점검하려고 한다.

- equivalence partition : Input으로 주어진 원소가 배열에 있을때/ 없을때/ input이 오직 하나의 원소일때/input이 여러 원소일때 등으로 나눌 수 있다.

- 원소가 하나일때, 배열에 있을때

- 원소가 하나일때, 배열에 없을때

- 원소가 여러개일때, 첫번째 원소가 배열에 있을때

- 원소가 여러개일때, 중간 원소가 배열에 있을때

- 원소가 여러개일때, 하나도 배열에 없을때,

- 이렇게 경우의 수를 잘 파티션하면 훨씬 경제적인 test case set을 만들어낼 수 있다.

- 이 예시는 input과 output만으로 black out test case를 만든 예시이다.

- 만약 원소 찾기 로직이 binary search 라고 잘 알고 있으면 위처럼 처음, 끝, 중간, 미드 포인트 보다 클때, 미드포인트모다 작을때로 case를 파티션할 수 있을 것이다.

- white box test를 수행예시이다.

728x90
반응형