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를 수행예시이다.
'ComputerScience > Software Engineering' 카테고리의 다른 글
소프트웨어공학 - 22. Exception Handling (0) | 2022.06.03 |
---|---|
소프트웨어공학 - 21. Code coverages for white box testing (0) | 2022.06.03 |
소프트웨어공학 - 19. Test-Driven Development (0) | 2022.05.29 |
소프트웨어공학 - 18. SOLID (0) | 2022.05.19 |
소프트웨어공학 - 17. GRASP (0) | 2022.05.12 |