본문 바로가기
IT 각종 공부

소프트웨어 테스트 (Software test) - 2편

by 채완대디 2021. 9. 3.
반응형

전편에서 소프트웨어 테스트에 대한 기본 사항을 다루었다. 이번 포스팅에서는 테스트를 실제로 수행할 때 필요한 이론, 기법에 대해 알아보기로 한다. 

 

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 결과, 전문가 컨설팅 등)를 기반으로 작성된다.

 

 

반응형

댓글