CSTS_FL-5 동적 테스팅 (17문제)

violet·2024년 8월 12일

CSTS_FL

목록 보기
5/11

13. 동적 테스팅 개요


13-1. 동적 테스팅 개요

소프트웨어를 실행하는 방식으로 테스트를 수행

요구 사항은 어떤 입력에 대한 기대 결과를 명시

입력을 넣었을 때 기대 결과와 다른 결과가 발생하는 경우
소프트웨어 결함이 있다고 판단

  • 장점 : 소스 코드가 제공되지 않는 경우에도 수행가능
  • 단점 : 실행환경 요구

  • 명세 기반 방법

    • 프로그램의 내부 논리 구조를 참조하지 않고
      사용자의 요구 명세나 설계 정보를 이용

    • 시스템의 명세 정보를 얻을 수 있는 한 적용 대상에 제한이 없으며
      테스트 전 과정에 걸쳐 사용 가능

  • 구조 기반 방법

    • 제어 흐름이나 자료 흐름 정보를 이용

    • 프로그램의 내부 구조 정보를 기반으로 테스트 케이스를 설계

    • 구조적 테스트, 화이트박스 테스트, 글래스 테스트

  • 경험 기반 테스트

    • 테스트 케이스 설계 X

    • 도메인에 대한 테스터의 경험, 테스트 결과, 테스터의 직관을 주로 활용하여 테스트

    • 오류 추정 , 탐색적 테스트



14. 구조기반 테스팅


14-1. 구조기반 테스팅 개요

  • 제어 흐름이나 자료 흐름 정보를 이용하여 테스트 케이스를 설계

  • 프로그램의 내부 구조 정보를 기반으로 테스트 케이스를 설계

    • 구조적 테스트 = 화이트박스 테스트 = 글래스 테스트



14-2. 문장 테스팅

  • 모든 문장 최소 한 번 실행

    전체조건식개별조건식 A개별조건식 B
    FTF
    FFT
  • 문장 커버리지 계산

    • 제어 흐름 그래프의 모든 블록이 수행되었다면 100%

  • 문장 커버리지 장 단점

    • 장점 : 적은 개수로 간단하게 진행 가능
    • 단점 : 가능한 경우들을 모두 검증하지 못함

  • 문장 커버리지 예시
    • 8개의 블록중에 4개가 쓰였으므로 50%로 계산



14-3. 결정 테스팅

= 분기 커버리지

  • 전체조건식 T and F

    전체조건식개별조건식 A개별조건식 B
    F TF
    T TT
    • 모든 결정문 (전체조건식)의 결과가
      참이 되는 경우와 거짓이 되는 경우를 최소한 한 번은 실행
  • 결정 커버리지 계산

  • 결정 테스트는 문장 테스트를 포용
    • 문장테스트 ⊂ 결정테스트
  • 결정 커버리지 예시
    • 3가지의 분기를 가지는 전체조건식 B 에 대하여 모든 경우(C/D/E)를 만족해야 100%이므로
      ABCF/ABDF/ABEF 총 3가지



14-4. 조건 테스팅

  • 개별조건식 각각 T and F

    전체조건식개별조건식 A개별조건식 B
    F T F
    F F T
    • 모든 개별조건식이
      true가 되는 경우와 false이 되는 경우 모두를 실행
  • 조건 커버리지 계산

  • 조건 커버리지 예시
    • 전체조건식 2개와 개별조건식 4개가 존재하는데
      TC2와TC3만 있다면 개별조건식 4가지에 대한 T 와 F인 경우가 모두 도출되므로
      TC1은 필요가 없음.



14-5. 조건/결정 테스팅

  • 결정 테스트와 조건 테스트를 모두 만족

    전체조건식개별조건식 A개별조건식 B
    F F F
    T T T
    • (개별조건식 각각 T and F) + (전체조건식 T and F)
  • 조건/결정 커버리지 계산

  • 조건/결정 커버리지 예시
    [표1]

    4가지 (조건2개에 대한 T and F +결정 2개에 대한 T and F)
    각각 T and F가 나와야 하므로 8가지 경우의 수를 모두 만족해야함
    • TC1 , TC2
      • 총 8개의 케이스중에서 결정1에 대한 false 값이 없어서 7개 만족
        결정/조건 커버리지는 ⅞ * 100 = 88%
    • TC1 , TC2 , TC33
      • 4가지 조건에 대한 3가지 케이스에서 8가지 경우 모두 만족 (12/7)
        • 결정/조건 커버리지는 = 100%
        • 결정/조건 커버리지를 만족하는 최소 집합 X
    [표2]
    • TC1 , TC2
      • 총 8개의 케이스중에서 8가지의 경우의 수 필요조건 모두 만족
        • 결정/조건 커버리지는 100%
        • 결정/조건 커버리지를 만족하는 최소 집합 O



14-6. 변경 조건/결정 테스팅

  • (=) MCDC
  • 한 분기문 안에 개별조건식 A,B,C가 있을때 B,C의 T/F가 동일한 경우
    A의 T/F가 다름으로 인해 분기문의 T/F가 달라질경우
    해당 분기문은 변수 A에 대한 MCDC를 만족하므로 MCDC커버리지는 1/3으로 약 34%가 된다.
  • 커버리지 100%를 달성하기 위한 최소 테스트케이스 개수
    • 개별조건식의수+1



14-7. 다중 조건 테스팅

  • 개별조건식의 모든 조합식을 실행

    전체조건식개별조건식 A개별조건식 B
    T T T
    F T F
    F F T
    F F F
    • TT/TF/FT/FF
  • 문장 테스트, 결정 테스트, 조건 테스트 및 결정 조건 테스트를 모두 포용

  • 다중 조건 커버리지 계산

  • 다중 조건 커버리지 예시

    • 다중 조건 커버리지를 만족하는 최소 집합의 갯수
      => 2의 N제곱



14-8. 기본 경로 테스팅

  • Basic path test
  • 테스트 대상이 선형적으로 실행가능한 경로의 집합
  • 순환복잡도 구할때와 동일함


15. 명세기반 테스팅


15-1. 명세기반 테스팅 개요

  • 명세 기반 테스트

    • = 블랙박스 테스트
      = 기능 테스트

    • 프로그램의 내부 논리 구조를 참조하지 않고
      사용자의 요구사항 명세설계 정보 등을 이용하여 테스트 케이스를 개발

    • 대상 시스템의 명세 정보를 얻을 수 있는 한, 적용 대상에 제한이 없음

    • 개발 전 과정에 걸쳐 사용 가능 (단통시인)

  • 명세 기반 테스트의 이점

    • 프로그램 코드가 아닌
      명세를 바탕으로 테스트 케이스를 설계하므로
      규모가 큰 테스트에도 효과적

    • 테스터가 구현 언어라든지 알고리즘 같은
      구현에 관한 지식이 없어도 테스트를 수행가능

    • 사용자 관점에서 테스트를 수행하기 때문에
      효과적으로 결함을 검출

    • 명세 결함(일관성이나 애매모호한 점)이 드러나는 기회

    • 명세가 완성되는 순간 테스트 케이스들을 설계 가능

      • 코드 구현될 때까지 기다릴 필요 X
    • 누락 결함(Missing function error) 검출가능성이 높아짐



15-2. 동등분할


Equivalence partitioning

  • 테스트 케이스의 개수를 줄이기에 효과적인방법

  • 소프트웨어 테스트의 근간을 이루는 방법

  • 몇 개의 동등 클래스로 분할하여
    각 클래스에서 하나의 값을 선택

    • 동등 클래스가 정상 작동한다면 동등 클래스의 나머지 값들도 정상 작동한다고 가정
  • 유효하지 않은 입출력도 고려


  • 동등분할 수행 절차

    1. 명세에서 입출력 식별

    2. 각 입력/출력 영역을 동등 클래스들로 분할

    3. 각 동등 클래스에서 하나의 대푯값을 선정

  • 동등분할 수행 예시 01


  • 동등분할 방법

    • One-to-One 동등 분할

      • 입출력의 1 대 1 관계를 명시적 표시

        • Ex.) 나이x성별의 조합 별로 모든 출력을 다 확인함
      • [예시]

        • 만약 프로그램이 이 테스트 케이스를 타당하게 입력으로 받아 처리한다면

          • 명백하게 프로그램이 입력 필드들에 대한 검증 작업을 하지 않음
        • 만약 프로그램이 이들을 입력으로 받아들이지 않는다면

          • 테스터 입장에서는 어떤 필드가 문제인지 알 수없음
        • 유효하지 않은 테스트 케이스를 설계하는 경우에는
          한 번에 하나의 필드만 유효하지 않은 입력으로 구성

    • 최소화 동등분할 방법

      • 하나의 테스트 케이스에 여러 개의 동등분할 클래스 포함

        • One-to-One 동등 분할 방식보다 테스트 케이스의 수를 줄일수 있음

        • 테스트 케이스는 One-to-One 방식으로 설계하고,
          유효한 테스트 케이스는 최소화 동등 분할 방식을 이용하는 것도 방법



15-3. 경계값 분석


Boundary Value Analysis

  • 입력 영역 경계 근처에 있는 값들을 이용하여 테스트 케이스를 설계

  • 클래스의 경계와 경계 근처에 있는 값들을 사용하여 테스트 케이스를 설계

  • 경곗값 부근에 있는 것을 테스트로 사용하여
    결함 발견 효용성이 높음

경계값 분석 방법

  • 2-value BVA

    • 경곗값
    • 경계 외부
  • 3-value BVA

    • 경곗값
    • 경계 외부
    • 경계 내부


  • 경계값 분석 수행 절차

    1. 명세에서 입출력 식별

    2. 입출력 영역을 동등 클래스들로 분할

    3. 분할된 클래스들 경곗값 식별

    4. 경계값 분석 실행 (2-value BVA / 3-value BVA)

    5. 결과값에 대한 기대 출력을 명세로 구하여
      테스트 케이스를 설계

      • One-to-One 방법
      • 최소화 방식

  • 경계값 분석 예시

    • (3-value)
      • X가 10과 20 사이의 범위를 가졌을때 경계값 분석
        9 , 10 , 21
        • 9
          • 경계 외부 (최소값 수식 검증)
        • 10 or 20
          • 경계값
        • 21
          • 경계 외부 (최대값 수식 검증)



15-4. 조합 테스팅


Combinatorial test

  • 동등 분할이나 경계값분석(BVA) 등의 방법을
    조합하여 테스트 케이스를 구성

  • 조합테스트 방법

    • Each choice 테스트

      • 각각 1개의 입력값에 대해 입력이 가능한 값을
        최소한 1회 이상 사용하여 테스트

      • 테스트 케이스 수가 매우 적은 편

      • 여러 인자의 상호작용을 고려 X

        • 단 하나의 입력 인자에만 의존할 때 좋음
    • 페어와이즈 테스트

      • 1개의 입력쌍(2개)에 대해 입력이 가능한 값을
        최소한 1회 이상 사용하여 테스트

        • Ex.) 2X3개일때 최소 테스트 개수 => 4개
      • 모든 입력에 대해 존재할 수 있는 모든 상호작용을 고려하지 않고
        두 개의 입력 간에 가능한 모든 상호작용만을 고려

    • ALL combinations 테스트

      • 모든 입력 인자의 모든 가능한 클래스 조합으로 테스트
    • Base choice 테스트

      • 기반이 되는 조합 미리 선정하여 고정하고
        고정하지 않은 나머지 입력값들 중에 한개만 변경하여 테스트

      • 사용자의 관점에서 선택될 빈도가 가장 높고,
        정상 동작할 수 있는 것을 선정

      • 선정된 기반 테스트에서
        하나의 인자에만 변경을 주며
        나머지는 기반 테스트의 값으로 고정


  • 조합테스트 절차

    1. 입력 식별

    2. 동등 클래스끼리 분할

    3. 적절한 조합 테스트 방법을 선정하여 입력값 조합

    4. 각 입력 조합에 대해 명세를 분석하여 기대 결과를 할당



15-5. 결정표 테스팅


Decision table test

  • 각 규칙이 최소한 한 번은 테스트 될 수 있도록 테스트 케이스들을 생성

    • 규칙을 실행하는 데 요구되는 조건의 조합을 만족하는
      입력 / 출력을 식별하여 테스트 케이스를 구성
  • 결정표는 조건행위를 기술하는 부분으로 구성

  • 결정 테스트 양식


  • 결정표 테스트 절차

    1. 모든 조건을 분석

    2. 모든 조건의 조합에 대한 행위를 결정

    3. 결정표 수립

    4. 가능하지 못한 조건의 조합은 배제

    5. 결정표 축약

    6. 결정표의 각 규칙이 최소한 한 번은 테스트될 수 있도록 테스트 케이스 생성

    • 1~4 단계
      • 조건을 분석하고 가능한 조합으로 결정표 수립
    • 5 단계
      • 결정표 축약
    • 6 단계
      • 축약된 결정표대로 테스트 케이스 만들기



15-6. 상태 전이 테스팅


State-transition test

  • 시스템을 상태 전이도(STD)로 모델링해서
    테스트 케이스들을 선정

  • 상태 전이도 (ex.형광등)

    • : 시스템 상태

    • 검은 원 : 시스템의 시작점

    • 화살표 : 상태 간의 전이

    • “/” 다음에 나오는 명령 : 시스템 행위


  • 상태 전이 테스트 종류

    • 상태 테스트(State test)

      • 모든 상태
        최소한 한 번 방문하는 설계

        • Ex.) A에서 조건에 따라 A->B , A->C 로 조건이 분기될때
          이 두개를 모두 테스트
    • 단일 전이 테스트(Single transitions text, 0-switch 테스트)

      • 모든 유효한 전이
        최소한 한 번 방문하는 설계

        • Ex.) A에서 조건에 따라 A->B , A->C 로 조건이 분기될때
          둘중에 한개만 테스트 함
    • All transitions 테스트

      • 유효한 전이+유효하지 않은 전이
        모두 최소한 한 번 방문하는 설계

        • Ex.) A->B->C->D->E 라고 가정했을때
          A->C 도 테스트함 (유효하지 않은 전이)
    • 다중 전이 테스트(Multiple transition test, N-switch text)

      • n+1개의 전이 시퀀스
        최소한 한 번 방문하는 설계
        • A->B->C->D->E
          A->Z->C->D->E

          두개의 루트가 있을때
          A이면서 B인 조건을 만족하는 상황을 테스트 (복수 조건)

  • 상태 전이 테스트 절차

    1. 상태 전이도 모델링

    2. 상태 전이도에서 전이 트리 도출

      • 루트 노드 : 상태 전이도의 초기 상태
    3. 전이 트리에서 유효한 전이 경로에 대한 테스트 케이스 생성

    4. 유효하지 않은 전이에 대한 테스트 케이스 생성

  • 상태 전이 테스트 예시

    • [절차1]

      • 테이프 재생기 명세에서 상태 전이도 모델링
    • [절차2]

      • 단일 전이 트리 도출
    • [절차3]

      • 단일 전이 테스트에 따른 테스트 케이스 집합
        • 유효한 전이 테스트
        • 상태 전이도에 명시적으로 기술된 상태와 이벤트의 조합만을 고려
    • [절차4]

      • 유효하지 않은 전이 테스트



16. 경험기반 테스팅


기존의 테스트 경험, 테스트 대상이 되는
시스템 및 해당 도메인에 대한 경험 등을 바탕으로 수행하는 테스트 방법

16-1. 오류 추정

  • 개발자가 범할 수 있는 실수를 추정하고
    이에 따른 결함이 검출되도록
    테스트 케이스를 설계

  • 매우 직관적이고 상황에 따라 적합한 방식으로 수행되므로
    일반화된 기법과 절차 정의 X.

  • 명세 기반 테스트의
    동등 분할이나 경곗값 분석 방법과 함께 사용 가능

  • 테스터의 직관과 경험을 활용하여
    결함이 발생할 것을 예측하여 테스트 하는 방법

  • 테스트 대상에 대한 이해 필요

  • 일반적인 구현 오류에 대한 지식 필요

  • 과거 데이터 및 테스트 결과 평가가 있다면 참고 가능



16-2. 탐색적 테스팅

  • 테스트케이스 설계 X 상태로,
    테스트 대상에 대한 이해, 테스트 케이스 설계, 테스트 실행을 한번에 병행

    • 테스트 대상에 대한 이해를 바탕으로 즉석에서 테스트 케이스를 결정하고
      문서화 없이 해당 테스트를 바로 수행

      • 테스터의 지식에 전적으로 의존
  • 애자일 방법을 사용하는 웹 응용 시스템의 테스트에 적합

  • 세션 기반 테스팅을 활용하여 테스트를 구조화

profile
기억저장소

0개의 댓글