CS기본지식

[ISTQB] 5장 - 테스트 관리

미소5 2025. 1. 27. 14:11
728x90
반응형
테스트 계획

  • 테스트 계획서의 내용 : 테스팅 정황(예: 범위, 테스트 목적, 제약 사항, 테스트 베이시스), 테스트 프로젝트의 가정 및 제약 사항, 이해관계자(예: 역할, 책임, 테스팅 관련성, 채용 및 훈련 요구사항), 의사소통(예: 의사소통 방법 및 빈도, 문서 양식) , 리스크 목록(예: 제품 리스크, 프로젝트 리스크), 테스트 접근법(예: 테스트 레벨, 테스트 유형, 테스트 기법, 테스트 산출물, 시작 조건 및 완료 조건, 테스팅의 독립성, 수집할 메트릭, 테스트 데이터 요구사항, 테스트 환경 요구사항, 조직의 테스트 정책 및 테스트 전략과의 편차), 예산 및 일정

Q.
다음 중 테스트 계획의 목적이 아닌 것은?
 
a. 단위 테스트와 단위 통합 테스트를 위한 테스트 데이터와 기대 결과 정의
b. 단위 테스트 레벨의 완료 조건으로 “100% 구문 커버리지와 100% 분기 커버리지를 달성해야 한다” 정의
c. 테스트 진행 상황 보고서에 포함할 내용과 보고서 양식 설명
d. 테스트 전략에서 해당 테스트 레벨에 시스템 통합 테스트를 요구함에도 불구하고 이를 테스팅에서 제외한 이유 설명
 

더보기

정답: a

 

b) 테스트 계획의 목적 중 하나는 시작 조건과 완료 조건

c) 보고서 양식은 테스트 계획에 들어가는 전형적인 내용 

d) 이것은 준수할(또는 준수하지 않을) 테스트 정책 및 전략과의 편차를 설명하는 예시입니다. 테스트 계획의 목적 중 하나는 테스팅이 기존 테스트 정책과 테스트 전략을 준수함을 보여주는 것입니다. (또는 테스팅이 그것을 준수하지 않는 이유를 설명)


  • 반복 주기릴리스 계획에 대한 테스터의 기여
    • 릴리스 계획:  제품 릴리스를 계획하는 단계로 제품 백로그를 (재)정의하며, 큰 사용자 스토리를 작은 사용자 스토리들로 세분화하는 작업을 포함. 또한, 개별 반복 주기의 테스트 접근법과 테스트 계획을 위한 기반이 된다. 릴리스 계획에 참여하는 테스터는 테스트 가능한 사용자 스토리와 인수 조건이 작성되도록 하고, 프로젝트 및 품질 리스크 분석에 참여하고, 사용자 스토리와 관련된 테스트 노력을 추정하고, 테스트 접근법을 결정하고, 릴리스를 위한 테스팅을 계획한다.
    • 반복 주기 계획: 개별 반복 주기를 계획하는 것으로 반복 주기 백로그와 관련. 반복 주기 계획에 참여하는 테스터는 사용자 스토리의 구체적인 리스크 분석에 참여하고, 사용자 스토리의 테스트 용이성을 판단하고, 사용자 스토리를 업무(특히 테스팅 업무) 단위로 분류하고, 각 테스팅 업무에 필요한 테스트 노력을 추정하고, 테스트 대상의 기능 및 비기능적 측면을 식별하고 구체화한다.

  • 시작 조건
    • 자원의 가용성(예: 인력, 도구, 환경, 테스트 데이터, 예산, 시간), 테스트웨어 가용성(예: 테스트 베이시스, 테스트 가능한 요구사항, 사용자 스토리, 테스트 케이스), 테스트 대상의 초기 품질 수준(예: 모든 스모크 테스트가 합격함) 등
  • 완료 조건 
    • 충분함에 대한 측정(예: 달성한 커버리지 수준, 해결되지 않은 결함 수, 결함 밀도, 실패한 테스트 케이스 수)과 종료 기준(예: 계획한 모든 테스트 실행, 정적 테스트 수행, 발견한 모든 결함 보고, 모든 리그레션 테스트 자동화 완료), 시간 및 예산의 소진

추정 기법

  • 비율 기반 추정(Estimation based on ratios). 메트릭 기반 기법으로 조직에서 수행한 이전 프로젝트 수치를 수집해 유사 프로젝트를 위한 “표준” 비율을 도출한다. 이런 표준 비율을 가지고 새로운 프로젝트에 필요한 테스트 노력을 추정할 수 있다. 예를 들어, 이전 프로젝트에서 개발 노력 대 테스트 노력의 비율이 3:2였고, 현재 프로젝트에서 개발 노력을 600MD로 예상한다면, 테스트 노력은 400MD로 추정할 수 있다.
  • 외삽법(Extrapolation). 메트릭 기반 기법으로 현재 프로젝트에서 데이터 수집을 위해 가능한 한 빨리 측정을 수행한다. 관찰 결과가 충분히 쌓이면 이 데이터를 가지고 외삽법(보통 수학적 모델 사용)을 적용해 남은 작업에 필요한 노력의 근사치를 추정할 수 있다. 이 방법은 반복적 소프트웨어 개발수명주기(SDLC)에 매우 적합하다. 예를 들어, 팀이 지난 세 번의 반복 주기에 들인 평균 노력으로 다음 반복 주기의 테스트 노력을 추정할 수 있다.
  • 와이드밴드 델파이(Wideband Delphi). 반복적, 전문가 기반 기법으로 전문가의 경험을 기반으로 추정을 한다. 각 전문가는 독립적으로 노력을 추정한다. 결과를 수집해서 합의된 범위를 벗어난 편차가 있다면 전문가들이 각자의 추정치에 대해 논의 후, 논의 결과를 바탕으로 다시 한번 새로운 추정치를 제시한다. 합의에 도달할 때까지 이 과정을 반복한다. 
  • 3점 추정(Three-point estimation)
    • 최종 추정치(E) =  ( a+ 4*m +b ) / 6
    • 가장 낙관적인 추정치(a), 유력한(확률적으로 가장 높은) 추정치(m), 가장 비관적인 추정치(b)

 


  • 테스트 케이스 우선순위지정법
    • 리스크 기반 우선순위지정: 리스크 분석 결과에 따라 테스트 실행 순서를 결정한다.
    • 커버리지 기반 우선순위지정: 테스트 실행 순서를 커버리지(예: 구문 커버리지)에 따라 결정한다. 가장 높은 커버리지를 달성하는 테스트 케이스를 먼저 실행한다. 
    • 요구사항 기반 우선순위지정: 테스트 실행 순서를 해당 테스트 케이스의 기반이 되는 요구사항의 우선순위에 따라 결정한다. 요구사항의 우선순위는 이해관계자가 정의한다. 

테스트 피라미드

  • 테스트 피라미드는 테스트에 따라 입도(상세한 수준)가 다를 수 있다는 것을 보여주는 모델이다. 테스트 피라미드 모델은 테스트 자동화 수준에 따라 지원하는 목표가 다를 수 있다는 것을 보여줌으로써 팀의 테스트 자동화와 테스트 노력 할당을 도와준다.
  • 피라미드의 각 층은 하나의 테스트 그룹을 나타낸다. 층이 올라갈수록 테스트 입도가 낮고, 테스트 격리가 어려워지며, 테스트 실행 시간도 길어진다. 아래층에 있는 테스트는 규모가 작고, 독립적이며, 빠르고, 대상이 되는 기능이 작기 때문에 적절한 커버리지를 달성하기 위해 많은 테스트가 필요한 경우가 많다. 높은 층은 복잡하고 상위 수준의 엔드-투-엔드 테스트를 대변한다. 이런 상위 수준 테스트는 보통 하위층의 테스트보다 속도가 느리며, 큰 규모의 기능을 확인하기 때문에 적은 수로 적절한 커버리지를 달성할 수 있다.  

 
테스팅 사분면은 애자일 소프트웨어 개발에서 테스트 레벨을 적합한 테스트 유형, 활동, 테스트 기법, 작업 산출물과 묶고 있다. ( 여러 기준에 따라 테스트 레벨과 테스트 유형을 그룹화 )이는 테스트 관리자가 필요한 모든 테스트 유형과 테스트 레벨을 소프트웨어 개발수명주기(SDLC)에 포함하고, 테스트 레벨에 따라 테스트 유형 별 연관성이 다르다는 점을 이해하는 데 도움을 준다. 또한, 모든 이해관계자에게 테스트 유형을 구분하고 설명하는 방법을 제공한다.

  • 1사분면(기술 측면, 팀 지원). 이 사분면은 컴포넌트 및 컴포넌트 통합 테스트를 포함한다. 이런 테스트는 자동화해야 하며, 지속적인 통합(CI) 프로세스에 포함돼야 한다.
  • 2사분면(비즈니스 측면, 팀 지원). 이 사분면은 기능 테스트, 사례, 사용자 스토리 테스트, 사용자 경험 프로토타입, API 테스팅, 시뮬레이션 등을 포함한다. 이런 테스트는 인수 조건을 확인하며, 수동으로 실행하거나 자동화할 수 있다.
  • 3사분면(비즈니스 측면, 제품 평가). 이 사분면은 탐색적 테스팅, 사용성 테스팅, 사용자 인수 테스팅을 포함한다. 이런 테스트는 사용자를 중심으로 이루어지며, 수동으로 실행하는 경우가 많다.
  • 4사분면(기술 측면, 제품 평가). 이 사분면은 스모크 테스트와 비기능 테스트(사용성 테스트 제외)를 포함한다. 이런 테스트는 자동화되는 경우가 많다.

리스크 관리

  • 리스크 관리 활동
    • 리스크 분석  
      • 리스크 식별: 리스크 목록 생성
      • 리스크 평가: 식별한 리스크를 분류, 우선순위 결정, 조치 방법을 제안
        • 리스크 수준 = 리스크 발생 가능성 × 리스크 영향도
    • 리스크 제어  
      • 리스크 완화 : 평가 때 제안된 조치를 실행
      • 리스크 모니터링 : 리스크 완화 조치가 효과적인지 확인, 새로운 리스크를 식별

  • 제품 리스크 제어 : 분석한(식별 및 평가된) 제품 리스크에 취하는 모든 조치
    • 예를 들어, 테스팅을 통한 리스크 완화, 리스크 수용, 리스크 전가, 대안 계획 등이 이루어질 수 있다

테스팅으로 제품 리스크 완화를 위해 취할 수 있는 조치는 다음과 같다:

  • 주어진 리스크 유형에 적절한 경험과 기술을 갖춘 테스터 선정
  • 적절한 수준의 테스팅 독립성 적용
  • 리뷰 및 정적 분석 수행
  • 적절한 테스트 기법 및 커버리지 수준 적용
  • 영향을 받는 품질 특성을 다루는 적절한 테스트 유형 적용
  • 리그레션 테스팅을 포함한 동적 테스팅 수행

테스트 모니터링, 테스트 제어, 테스트 완료

 

  • 테스팅에 사용하는 메트릭
    • 프로젝트 진행 상황 메트릭(예: 작업 완료율, 자원 사용률, 테스트 노력 투입률)
    • 테스트 진행 상황 메트릭(예: 테스트 케이스 구현 진행률, 테스트 환경 준비 진행률, 실행/미실행 및 합격/불합격 테스트 케이스 수, 테스트 실행 시간)
    • 제품 품질 메트릭(예: 가용성, 응답 시간, 평균 장애 시간)
    • 결함 메트릭(예: 발견/수정한 결함의 수와 우선순위, 결함 밀도, 결함 발견 비율)
    • 리스크 메트릭(예: 잔여 리스크 수준)
    • 커버리지 메트릭(예: 요구사항 커버리지, 코드 커버리지)
    • 비용 메트릭(예: 테스팅 비용, 조직의 품질 비용)

Q. 다음 중 제품 품질 지표인 것은?
a. 평균 고장 시간 b. 식별된 결함 수 c. 요구사항 커버리지 d. 결함 탐지율

더보기

답: a

b) 결함 메트릭

c) 커버리지 메트릭

d) 결함 메트릭


  • 테스트 보고서 
    • 테스트 진행 상황 보고서 : 테스팅의 지속적인 관리를 지원하며, 계획에서 벗어나거나 상황이 바뀌어 테스트 일정, 자원, 테스트 계획을 수정해야 할 경우 그것을 할 수 있는 충분한 정보를 제공 
      • 테스트 기간 , 테스트 진행 상황(ex 예정보다 빠르다 또는 늦어지고 있다, 주목할 만한 편차 포함), 테스팅 진행 방해 요소와 대응 방법 , 테스트 메트릭 , 테스팅 중 식별한 신규 및 변경된 리스크 , 다음 주기에 예정된 테스팅
    • 테스트 완료 보고서 : 테스팅의 특정 단계(ex 테스트 레벨, 테스트 주기, 반복 주기)를 요약하고, 후속 테스팅을 위한 정보를 제공 
      • 테스트 요약 , 원래 테스트 계획(즉, 테스트 목적과 완료 조건)에 기반한 테스팅 및 제품 품질 평가 , 테스트 계획과의 편차( ex 계획한 일정, 기간, 공수와의 차이) , 테스팅 방해 요소와 대응 방법 , 테스트 진행 상황 보고서를 기반으로 한 테스트 메트릭 , 완화되지 않은 리스크&수정되지 않은 결함 , 테스팅 관련 교훈

 
 
 


형상 관리

 

  • 형상 관리(CM, Configuration Management)는 테스트 계획서, 테스트 전략서, 테스트 컨디션, 테스트 케이스, 테스트 스크립트, 테스트 결과, 테스트 로그, 테스트 보고서와 같은 작업 산출물을 형상 항목으로 식별, 제어, 추적하는 지침을 제공한다.
  • 복잡한 형상 항목(예: 테스트 환경)의 경우, 형상 관리는 구성요소, 구성요소 간 관계, 각각의 버전 등을 기록한다.
  • 형상 관리는 다음과 같이 테스팅을 지원한다. 
    • 테스트 항목(테스트 대상의 개별 부분)을 포함한 모든 형상 항목에는 고유한 식별자가 부여되고, 버전이 관리되며, 변경사항이 있는지 추적되고, 다른 형상 항목과 가지는 연관성이 식별돼 테스트 프로세스 전체에서 추적성이 유지된다.
    • 식별된 모든 문서와 소프트웨어 항목은 테스트 문서에서 명확히 참조된다.
  • 지속적 통합, 지속적 전달, 지속적 배포, 그리고 관련된 테스팅은 일반적으로 자동화된 데브옵스 파이프 라인으로 구현하며, 여기에 보통 자동화된 형상 관리가 포함돼 있다.

테스트 도구
  • 테스팅 지원 도구
    • 관리 도구 - 소프트웨어 개발수명주기(SDLC), 요구사항, 테스트, 결함, 형상 관리를 용이하게 해서 테스트 프로세스 효율성을 높인다.
    • 정적 테스팅 도구 - 테스터의 리뷰와 정적 분석 수행을 지원
    • 테스트 설계 및 구현 도구 - 테스트 케이스, 테스트 데이터, 테스트 절차  생성
    • 테스트 실행 및 커버리지 도구 – 자동 테스트 실행 및 커버리지 측정 
    • 비기능 테스팅 도구 - 수동으로 실행하기 어려운 비기능 테스트를 수행할 수 있게 한다.
    • 데브옵스 도구 - 데브옵스 배포 파이프라인, 작업 흐름 추적, 자동 빌드 프로세스, 지속적인 통합 및 배포 등을 지원
    • 협업 도구 - 원활한 커뮤니케이션을 지원
    • 확장성 및 배포 표준화 지원 도구(예: 가상 머신, 컨테이너화 도구)
    • 테스팅에 도움이 되는 기타 도구(예: 테스팅에 활용하면 스프레드시트도 테스트 도구가 된다)

*정적분석도구: 맞춤법검사기, 가독성도구


  • 테스트 자동화 활용 시 잠재적 리스크 :

• 도구의 효과(기능 및 사용 편의성 포함)에 대한 비현실적인 기대
도구 도입, 테스트 스크립트 유지 관리, 기존 수동 테스트 프로세스 변경에 필요한 시간, 비용, 노력에 대한 부정확한 추정
• 수동 테스팅이 더 적합한 곳에 테스트 도구 사용
• 도구에 지나치게 의존(예: 사람의 비판적 사고의 필요성 무시)
• 폐업, 도구 지원 중단, 다른 공급업체로 도구 매각, 열악한 지원(예: 문의, 업그레이드, 결함 수정에 대한 대응관련) 등의 문제가 생길 수 있는 도구 공급업체에 대한 종속성
• 지원이 중단되거나(즉, 더는 업데이트되지 않거나), 추가 개발을 통해 내부 컴포넌트를 빈번하게 업데이트해야 할 필요가 있을 수 있는 오픈소스 소프트웨어의 사용
• 자동화 도구가 개발 플랫폼과 호환되지 않을 수 있음
• 규제 요건/안전 표준을 준수하지 않는 부적합한 도구의 선택


 

728x90
반응형