본문 바로가기
CS기본지식

[CSTS 요약 정리] 2. 테스트 설계기법

by 미소5 2024. 3. 2.
  • 테스트설계기법
    • 정적 테스트 : 테스트 대상을 실행하지 않는 방식으로 테스트
    • 동적 테스트 : 테스트 대상을 실행하는 방식으로 테스트

 


☆암기☆

  • Q. 다음 지문에서 설명하는 정적테스트 기법은?
  • 정적 테스트
    • 정적분석: 자동화된 도구를 이용하여 결함을 검출하거나 복잡도를 측정
    • 리뷰 : 검토하여 결함을 검출, 프로젝트의 진행상황을 점검
      • 소프트웨어 개발 중에 생성되는 모든 산출물(요구사항명세서, 설계 명세서, 테스트 계획서 등)이 리뷰 대상이다. → 결함제거비용 감소
      • 관리 리뷰
        • 프로젝트 진행상황을 모니터하고, 계획과 현재 일정 상태를 평가 +자원,일정,프로젝트범위 등 변경
        • 회의는 관리스태프들이 참여하며, 관리자가 주재
      •  기술리뷰
        • 정의된 계획 및 명세 검토(평가)
        • 대표 엔지니어가 주재하며, 관리자도 참가할 수 있다.
      • 인스펙션: 동료검토(비슷한 수준이나 역할의 사람들이 소프트웨어 산출물을 검토)
        • 가능한 한 개발 초기에 검사해야만 개발 초기 작업물에서 문제를 찾아낼 수 있다. →결함은 가능한 한 이른 시기에 제거해야 한다.
        • 작성자가 아닌 사람이 주재 (작성자는 주재자가 될 수 없다.)
        • 관리자직책은 참여 금지
      • 워크쓰루: 작성자가 작업물을 따라 돌아다니며 작업물에 대한 설명을 진행하고 검출된 결함에 대한 권고 및 조치사항들을 기록한다.
        • 결함 검출 뿐 아니라, 참가자들의 교육이나 지식공유를 위해 수행되기도 한다.
        • 보통 작성자 본인이 회의를 주재하며 기록자 역할도 담당할 수 있다.
        • 관리자직책은 참여 금지
      • 감사: 객관적인 표준과 규제를 준수하고 있는지 평가
        • 목적: 소프트웨어 제품 및 프로세스가 규제, 표준, 가이드라인, 계획, 절차를 준수하고 있는지를 독립적으로 평가

 


  • 동적테스트
    • 명세기반테스트 (블랙박스 테스트): 소스코드를 참고하지 않고 요구사항명세나 설계정보 등을 이용하여 테스트케이스를 설계 (ex. 임의의 입력값으로 테스트)
      • 명세정보를 얻을 수 있는 한, 적용 대상에 제한이 없으며  컴포넌트 테스트, 통합테스트, 시스템테스트, 인수테스트 전과정에 걸쳐 사용될 수 있다.
    • 구조기반테스트 (화이트박스 테스트) : 소스코드를 참고해서 테스트케이스를 설계 (ex. 특정 경로를 실행하는 입력값으로 테스트)
    • 경험기반테스트
      • 오류 추정: 실수를 추정하고 이에 따른 결함이 검출되도록 테스트케이스를 설계 (ex 동등분할의 유효하지않은 분할, 경곗값 분석 등)
      • 탐색적 테스트문서화 없이 즉석에서 테스트케이스를 결정하여 바로 수행한다. 이렇게 테스트를 수행해가며, 테스트 대상이 어떻게 동작하는지, 어떤 기능이 동작하는지 파악해나간다.
        • 애자일 방법을 사용하는 웹 응용 시스템에 적합 (개발 주기가 매우 짧기 때문에 세부명세서에 쓸 시간 부족)

 


 

  • 구조기반테스트 : 모든 가능한 경로를 테스트 하는 것은 불가능하므로, 일부 경로만 테스트한다. 이때 다음 테스트들이 일부 경로를 선정하는 기준을 제공한다.
    1. 문장테스트
    2. 결정테스트
    3. 조건테스트
    4. 결정조건테스트
    5. 다중조건테스트

 

  • 문장테스트: 프로그램의 모든(실행가능한) 문장을 최소한 한번은 실행
    • 문장커버리지 = TC집합에의해 실행된 문장의 수/ 전체 실행가능한 프로그램 문장의 수
    • 전체 6개의 문장 중에서 5개의 문장이 실행됐다면, 문장커버리지는 5/6. 즉 83.3%.

 

  • 결정테스트:  프로그램의 모든 결정문이 가질 수 있는 결과가 발생하게 하는 테스트케이스 집합
    • 결정커버리지 = TC집합에의해 실행된 결정문의 결과 수/ 전체 프로그램의 결정문의 결과 수
    • if (x>0 && y<=-3) 은 1개의 결정문이다.
    • 전체 프로그램에서 결정문이 3개이면, 결정문의 결과 수는 총 6개(if문의 수 ×2)이다. 

 

  • 조건테스트:  프로그램의 모든 조건이 참이되는 경우와 거짓이 되는 경우 모두 발생하게 하는 테스트케이스 집합
    • 조건커버리지 = TC집합에의해 실행된 개별 조건의 결과 수/ 전체 프로그램의 개별 조건의 결과 수
    • 프로그램에 조건이 x>0, y>0, z>0 이 있다. 조건의 결과가 각각 TC1={true, false, false}, TC2={false, true, true}인 테스트케이스 2개는 조건테스트를 만족하는 테스트케이스 집합이다. (조건커버리지=100%)
    • TC1은 총 6개의 결괏값 중에 3개가 산출됐으므로, 조건커버리지는 3/6. 즉 50%.

 

  • 결정 조건 테스트: 결정테스트와 조건테스트를 모두 만족하는 테스트케이스 집합
    • 결정/조건커버리지 = TC집합에의해 실행된 결정문과 개별 조건의 결과 수/ 전체 프로그램 결정문과 개별 조건의 결과 수
    • 전체 프로그램에서 결정 및 조건문이 총 4개이면, 결정 및 조건문의 결과 수는 총 8개(4 × 2)이다. 

 

    • 다중 조건 테스트: 프로그램의 결정들에 사용된 모든 조건의 조합발생하게 하는 테스트케이스 집합
      • 다중조건커버리지 = TC집합에의해 실행된 조건들의 조합 수/ 전체 프로그램 개별 조건들의 조합 수
      • 조건이 2개이면 모든 가능한 조합은 4개이다. → 조건의 수가 a개이면, 가능한 조합은 2ª개
      • 전체 프로그램에서 2개의 결정문이 있고, 첫번째결정은 2개의 조건, 두번째결정은 1개의 조건으로 구성됐다.  → 조건 조합의 수는 총 6개이다. (첫번째 결정에서 4개의 조건 조합+ 두번째 결정에서 2개의 조건 조합)

 


  • 결정테스트는 문장테스트를 포함 (결정테스트를 만족하는 TC집합은 문장테스트를 만족한다.)
  • 결정테스트와 조건테스트는 서로 포함 X
  • 다중조건테스트는 문장테스트, 결정테스트, 조건테스트, 결정조건테스트를 모두 포함

 


  • 명세기반테스트
    1. 동등 분할
    2. 경곗값 분석
    3. 조합 테스트
    4. 결정표 테스트
    5. 상태 전이 테스트

  • 동등 분할: 프로그램 입력이나 출력영역을 몇 개 영역(동등클래스)으로 분할하여, 각 클래스에서 하나의 값을 선택하여 테스트케이스로 이용  → 입력/출력이 분할되어 나온 클래스들이 테스트 케이스에 최소한 한 번은 포함
    • 동등클래스들은 서로 공통된 값이 없어야 한다.
    • 유효한 입력 및 출력 뿐 아니라, 유효하지 않은 입력 및 출력(전혀 기대하지 않은 입력값)도 고려해야 한다.
    • 테스트를 효과적으로 수행하면서도 테스트케이스 개수를 줄이는 방법
    • One-to-One 동등 분할, 최소화 동등 분할

 

  • 경곗값 분석: 입력영역 경계 근처에 있는 값들을 테스트케이스로 이용

 

  • 조합 테스트: 동등분할이나 BVA 등의 방법으로 입력 인자를 여러 클래스(또는 값)로 분할하였을 때 이들을 조합하여 테스트케이스를 구성
    • Each choice 테스트 : 각 입력인자의 분할된 클래스에서 최소한 하나의 입력값이 테스트케이스에 포함
    • 페어와이즈 테스트 : 각 인자의 값(클래스)과 다른 인자의 값(클래스)을 최소한 한번은 조합
      • 모든 입력에 대해 존재할 수 있는 모든 상호작용이 아닌, 모든 두개의 입력 간에 가능한 모든 상호작용만을 고려
    • Base choice 테스트: 기반이 되는 테스트 조합을 미리 선정하고, 기반 테스트에서 하나의 인자에만 변경을 주어(나머지는 기반 테스트의 값으로 고정) 테스트케이스를 생성
    • all combinations 테스트 : 모든 입력인자의 모든 가능한 클래스 조합이 테스트케이스에 포함

 

  • 결정표 테스트: 결정표를 이용하여 테스트케이스를 설계 
    • 결정표: 모든 조건과 조건들의 모든 가능한 조합에 취해야할 행위를 열거한 표 →가능한 조건 조합 중 어떤 경우가 누락되었는지 알 수 있다.

 

  • 상태 전이 테스트: 시스템을 상태전이도로 모델링한 후 테스트케이스들을 상태전이도에서 체계적으로 선정
    • 상태테스트: 상태전이도의 모든 상태를 최소한 한번 방문
    • 단일전이테스트 (0-switch 테스트) : 상태전이도의 모든 유효한 전이들을 최소한 한번 방문
    • all transition 테스트 : 유효한 전이(0-switch 테스트)를 포함하여 유효하지 않은 전이들도 최소한 한번 방문
    • 다중전이테스트 (N-switch 테스트) : 상태전이도의 N+1개의 전이 시퀀스들을 최소한 한번 방문

 


 

728x90
반응형