본문 바로가기
dev, tech/quality, testing

Software Testing

by 구띵 2009. 12. 8.

<테스트 정보를 얻는 문서 종류에 따라>

Testing 1. 명세에 기반을 둔 테스팅 (블랙박스 테스팅)

Testing 2. 구현 기반 테스팅 (화이트 박스 테스팅)

 

<테스팅 방법>

1. 동적 테스팅 방법 - 프로그램 실행을 요구 (블랙박스 테스팅, 화이트 박스 테스팅)

     - 실제 프로그램을 테스트 데이터에 의해 실행 (<- 프로그램 명세나 논리구조에서 테스트 데이터 생성에 필요한 정보를 추출)

     *. 해당 테스트 데이터에 대해 올바른 결과가 무엇인지를 판별할 수 있는 수단(지금까지 대부분 오라클(oracle)의 역할을 사람이 직접 수행)

 

2. 정적 테스팅 방법 - 프로그램 실행을 요구하지 않음

 

# 화이트 박스 테스팅

<화이트박스 테스팅의 절차>

1. 데이터 적합성 기준(test data adequacy criterion) 선정

 - 모든 입력 데이터를 사용하여 테스트가 불가능 하므로 기준을 정해야 함

 - 적합성 기준(또는 테스팅 완료 기준 또는 테스트 데이터 선정 기준 또는 테스트 데이터 집합)

   a. 문장 적합성 기준(statement adequacy criterion),

   b. 분기 적합성 기준(branch adequacy criterion)

   c. 조건 적합성 기준(condition adequacy criterion)

   d. 자료 흐름 적합성 기준(dataflow adequacy criterion)

 

2. 데이터 생성(test data generation)

 - 가장 많은 노력이 들고, 자동화가 어려움 -> 선정된 기준을 토대로 테스트 데이터를 생성

 - 명세나 프로그램 코드를 분석하여 생성

 

3. 데이터 실행(test data execution)

 - 프로그램 입력으로 생성된 데이터를 사용, 오류를 찾아 제거

 

<문장 적합성 기준>

1. 정의 : 프로그램을 구성하는 모든 문장들이 최소한 한번은 실행될 수 있는 입력 데이터를 테스트 데이터로 선정하는 기준

2. 장점 : 보다 적은 개수의 테스트 데이터들로 쉽게 만족,

3. 단점 : 프로그램상에 존재하는 가능한 경우를 모두 검증하지 못함(올바르게 실행되는지 알 수가 없다)

 

<분기 적합성 기준>

*. 프로그램의 제어 흐름 그래프(CFG, Control Flow Graph)에 대해 먼저 이해하는 것이 필요하다.

 - 프로그램의 각 기본 블록(basic block)을 노드로 나타내고, 제어 흐름을 노드 간의 간선으로 표시한 것

 - 기본 블록 : 순서적으로 실행되는 문장들의 집합(블록 내에 속하지 않는 경우, 문장 하나도 기본블록의 단위로 볼 수 있음)

 

1. 정의 : 프로그램상에 나타난 모든 조건문의 결과가 1)참이 되는 경우, 2)거짓이 되는 경우, 모두를 최소한 한번은 실행하게 하는 입력데이터들을 테스트 데이터로 선정하는 기준

2. 응용 : CFG에서 나타나는 모든 분기 또는 간선들을 최소한 한번은 실행하게 하는 입력 데이터들을 고려

 

<조건 적합성 기준>

*. 기본 관계식(기본 조건식) : 수식이 관계 연산자(=, <>, <=)만을 적용하거나 불(bool) 변수로만 이루어진 관계식

1. 정의 : 프로그램에 사용된 모든 조건식의 경우 뿐만 아니라 해당 조건식이 기본 관계식으로 이루어졌을 때 각 기본 관계식이 참이 되는 경우와 거짓이 되는 경우 모두를 테스트할 수 있는 입력 데이터들을 테스트 데이터 집합으로 선정하는 기준

 

2. 조건 적합성 기준이 변화된 형태, '변형된 조건 적합성 기준'(Modified Condition Adequacy Criterion, MCDC)

  정의 : 각 기본 조건식이 다른 기본 조건식들과는 무관하게 전체 조건식의 평가에 영향을 미치는지 알아 보기 위한 테스트 데이터 생성 기준

 

- MCDC용 테스트 데이터 구하기 : 1), 2)의 과정을 거쳐 테스트 데이터 선정

    : 1) 기존 조건식 A에 대해 두 개 선정

        - A를 참으로 만드는 테스트데이터,

        - A를 거짓으로 만드는 데이터

      2) A를 제외한 모든 조건식들의 값은 동일하고

        - 전체 조건식의 값이 참이 되는 경우

        - 전체 조건식의 값이 거짓이 되는 경우

 

<자료 흐름에 기반한 적합성 기준>

1. 정의 : 프로그램에 나타나 있는 자료 흐름 정보를 이용하여 테스트 데이터 선정 기준을 확립

2. 기준 선정을 위한 조건

    1) 자료 흐름에 대한 기본적인 이해가 필요

  *. 해당 문장에서 정의 : 프로시져의 입력 인자, 할당문의 왼쪽에 있는 변수와 같이 값이 새로 설정되거나 변경되는 경우의 변수

  *. 참조 : 값이 변경되지 않고 수식 계산이나 조건식을 평가할 때 사용되는 변수

     a) c-use(계산 참조) : 변수가 일반 수식을 계산할 때 사용 - CFG에서 노드

     b) p-use(조건식 참조) : 변수가 조건식의 참, 거짓을 결정할 때 사용 - CFG에서 간선

  *. def-clear 경로 : 제어 흐름 그래프 상에서 노드를 지나가면서 어떤 변수에 대한 재정의가 일어나지 않을 때, 이 변수에 대한 def-clear 경로라고 한다.

    2) 기본적으로 노드 간의 자료 흐름을 테스트하는 것이기 때문에 노드에서 전역적으로 참조되는 변수만을 고려

  *. 전역적으로 참조 : 동일한 노드에서 특정 변수에 대해 정의하는 문장이 앞서 존재하지 않기 때문에 다른 노드에서 정의된 값에 영향을 받는 경우

 

3. 자료 흐름 개념을 기반으로 하는 적합성 기준

    1) All-definitions 적합성 기준

    2) All-uses 적합성 기준

    3) All-du-경로 적합성 기준

 

<기본경로 테스팅>

1. 정의 : 프로그램을 제어 흐름 그래프로 표현하고 그래프 상에 존재하는 기본 경로(basis path)들을 테스트 하는 방법

   *. 기본 경로 집합 : 선형적으로 독립적인 프로그램 경로(linearly independent path)들의 집합, 이것을 이용하여 프로그램 상에 존재하는 어떤 경로도 조합하여 표현

2. 방법

   1) CFG에 있는 각 간선을 고유번호로 구분

   2) 프로그램 경로를 간선 벡터(edge vector)를 사용하여 표현 (간선벡터의 크기는 CFG긔 간선 개수로 결정, i번째 항목은 간선이 몇번 사용되었는지를 나타냄)

   3) 다른 경로들의 선형 조합으로 표현

   4) 기본 경로 집합 구하기 : 프로그램 상에 존재하는 선형적으로 독립된 최대 경로 집합을 구한다.

   5) 기본 경로 집합을 토대로 실행할 수 있는 테스트 데이터를 생성하고, 테스트

 

<도메인 테스팅>

 

<뮤테이션 테스팅>

 

<심볼릭 실행>

 

# 블랙 박스 테스팅

<동등 분할>

 

<경계 값 분석>

 

<cause-effect>

 

 

## 정적 테스팅

<코드 검사(code inspection)>

 

<워크 스루(walkthrough)>

 

### 테스팅 전략

<단위 테스팅> : 모듈이 구현된 후에 개별적인 모듈에 대해 수행하는 테스트, 상세 설계 정보를 이용하여 각 모듈이 올바른 기능을 수행하는지 판별

 

*. 테스트 드라이버 : 테스트 대상이 되는 모듈을 호출하여 준비한 테스트 데이터를 제공하고, 모듈의 결과를 받는 모듈

 

*. 스텁(stub) : 구현이 안되었거나 개별적인 테스트가 이루어지지 않았을 때 대치할 수 있는 모듈

 

<통합 테스팅> : 모듈간의 인터페이스를 테스트하는 것이 주 목적, 모듈 간의 의존 관계를보여주는 구조 설계 문서를 이용

 

<시스템 테스팅> : 모듈들을 통합하여 완전한 시스템이 구성될 때까지 개발자에 의해 수행되는 테스팅, 사용자의 요구 사항에 맞게 구현되었는지를 시스템 전체 대상으로 검사

 

 

 

 

 

 

 

'dev, tech > quality, testing' 카테고리의 다른 글

테스팅 문서 표준 (IEE829)  (0) 2010.08.29
iso26262  (0) 2010.08.29
Certification Kit ?  (0) 2010.08.29
기본 코드 커버리지 종류  (0) 2009.12.16
White-Box Testing  (0) 2009.12.14

댓글