전편에서 소프트웨어 테스트에 대한 기본 사항을 다루었다. 이번 포스팅에서는 테스트를 실제로 수행할 때 필요한 이론, 기법에 대해 알아보기로 한다.
1. 테스트 케이스
테스트 케이스의 필수 구성 요소: 입력값
- 기본적으로 SW가 ‘해야 할 것’과 ‘하지 말아야 할 것’을 확인한다.
- 확인하고자 하는 SW 동작을 반영한 입력값이 필요하다.
테스트 케이스의 필수 구성 요소: 예상 결과
- 출력 결과 판단 시에 결과를 긍정적으로 판단하는 심리적 경향이 있다.
- 테스트 결과의 신뢰성을 확보하기 위하여 테스트 수행 전에 예상 결과를 정의한다.
- 예상 결과는 테스트 결과에 직접적으로 영향을 미치므로 예상 결과에 대한 정확한 정의가 필요하다.
2. 테스트 드라이버와 테스트 스텁
드라이버 (Driver)
테스트 대상에 대해 다음 사항을 call 한다.
- 변수 초기화, 파라미터 초기화, 테스트 케이스 설정, 테스트 대상 모듈 호출 등
스텁 (Stub)
테스트 대상으로부터 다음 사항을 call 한다. - 단위 프로그램에 의해서 사용되는 (호출되는) 모듈
3. 테스트 커버리지
‘테스트 커버리지 (Test Coverage)’를 통해서 테스트 케이스의 효용성 증가
- 테스트 커버리지를 만족시키는 테스트 케이스를 설계하여 수행한다.
테스트 커버리지를 정하기 위해서는 커버리지를 위한 기준 필요
- 테스트에서 ‘Cover’ 한다는 것은 ‘적어도 한번 (at least once)’은 수행되었다는 것을 의미한다.
테스트 커버리지의 예
- 코드의 Statement를 기준으로 했을 때, 테스트가 코드를 70% 커버
- 코드의 함수를 기준으로 했을 때, 테스트가 함수를 90% 커버
- 상태차트 다이어그램을 기준으로 했을 때, 테스트가 전이를 100% 커버
- 모듈 (상세) 명세를 기준으로 했을 때, 테스트가 기술된 기능을 100% 커버
4. 테스트 케이스 vs 테스트 커버리지
테스트 수행 시, 테스트 케이스와 테스트 커버리지 관계
- 테스트 목적을 결정하고 그에 따라서 테스트 커버리지를 정의한다.
- 그리고, 테스트 커버리지를 만족시킬 수 있도록 테스트 케이스를 설계한다.
테스트 목적 및 목표를 수립한다. --> 테스트 기준을 설정하고 커버리지를 확인한다. <--> 테스트 케이스를 설계한다.
5. 테스트 케이스 설계 방법
블랙박스
- 블랙 박스 테스트 기법은 기능 요구사항 명세를 기본으로 한다.
- 기능 요구사항에 대한 명세를 토대로 휴리스틱을 적용하여 테스트 케이스를 설계한다.
주요 기법
– 동치 분할 (Equivalence partitioning)
– 경계값 분석 (Boundary value analysis)
– 페어 와이즈(Pair-wise test)
– 유즈 케이스(Use case test)
– 에러 추측 (Error guessing)
화이트 박스 테스트
- 화이트 박스 테스트는 소프트웨어 구조에 대한 확인을 목적으로 구성된다.
- 일반적으로 기준에 부합하는 경로를 선정하고, 선정된 경로를 수행하기 위해 입력값을 설계한다.
- 테스트 케이스의 ‘기댓값’에 대한 부분은 다루지 않는다.
주요 기법
– 구문 커버리지 (Statement coverage)
– 분기 커버리지 (Branch coverage)
– MC/DC 커버리지 (Modified condition/decision coverage)
6. 블랙박스 테스트: 동치 분할
동치 분할
동치 분할은, 분할된 구간 내의 테스트 입력들을 어떤 값이 선택되던지 동일한 것으로 여겨, 구간 내에서는 임의로 값을 선택하여 테스트 케이스를 설계하는 기법이다.
7. 블랙박스 테스트: 경곗값 분석 (Boundary Value Analysis)
동치 분할의 경계 부분에 해당되는 입력 값에서 결함이 발견될 확률이 경험적으로 높다는 것에 착안하여 경계에 있는 값을 기준으로 테스트 케이스를 설계하는 기법이다.
8. 블랙박스 테스트: 페어 와이즈 테스트
페어 와이즈
페어 와이즈 테스트 기법은 테스트되어야 하는 조합들을 ‘파라미터의 쌍(Pair)’에 한정함으로써 비교적 적은 수의 테스트 케이스로 다양한 조합의 테스트를 지원한다.
- 최소 입력값 조합보다 많은 경우를 테스트할 수 있다.
- N-wise 커버리지로 확장할 수 있다.
- 페어 와이즈 테스트 기법은 테스트 케이스 수를 최소화하면서도 커버리지 효과는 극대화할 수 있는 방법이다.
9. 블랙박스 테스트: 유즈 케이스 테스트
유즈 케이스 테스트
테스트 대상 기능에 대한 사용 시나리오를 기술하고 변이를 조합함으로써 테스트 케이스를 설계하는 기법이다.
유즈 케이스Flow의 조합을 통해 테스트 시나리오를 설계할 수 있는데, 일반적으로 테스트 케이스는 각 Flow가 ‘최소한 한번’ 씩 조합되도록 설계한다.
- Basic Flow: 대상 기능의 기본 시나리오를 표현한 것으로 여러 개의 스텝으로 구성한다.
- Alternate Flow: Basic Flow의 특정 스텝에서 발생할 수 있는 변형된 Flow를 표현한다.
- Exception Flow: Basic 또는 Alternative의 어떤 스텝에서도 발생할 수 있는 예외적인 상황을 Flow로 표현한다.
10. 블랙박스 테스트: 에러 추측
에러 추측
에러 추측 기법은 결함의 리스트를 열거하고 이러한 결함들을 찾아내는 테스트 케이스를 설계하는 방식이다.
결함의 리스트는 기존의 결함, 실패에 대한 자료 (품질불량 사례, 과거 차 문제점, FMEA 결과, 전문가 컨설팅 등)를 기반으로 작성된다.
'IT 각종 공부' 카테고리의 다른 글
Defect 원인 분석 (Causal Analysis)의 이론과 전략 -01 (0) | 2021.09.05 |
---|---|
SW 개발 프로세스의 이해 (0) | 2021.09.04 |
소프트웨어 테스트 (Software test) (0) | 2021.09.02 |
안전 분석 (Safety analysis) - ISO 26262 (0) | 2021.09.01 |
요구 공학 (Requirements Engineering) -3 (0) | 2021.08.30 |
댓글