CSTS

16. 테스트 평가 및 개선

SNNP 2021. 3. 5. 19:51

테스트 활동에 대한 평가는 수행된 테스트 활동이 얼마나 많은 결함을 얼마나 효율적으로 검출했는가를 기준으로 수행

 

테스트 활동 평가


  • 테스트 효율성 = 테스트 효과성 / 테스트 비용
유형 평가 메트릭 설명
테스트 케이스
기반 메트릭
테스트 케이스 실패율 성공적인 테스트 케이스의 비율
테스트 케이스 효율성 결함당 사용된 테스트 케이스 수
결함 기반
메트릭
검출 결함 수 검출된 결함의 수
검출 결함 밀도 단위 크기 당 검출된 결함의 수
결함 검출 비율 전체 결함 중에 검출된 결함의 비율
결함 구속 효율성 해당 단계에서 발생한 결함을 검출하는 비율

테스트 케이스 기반 메트릭

테스트 케이스 실패율

  • 테스트 케이스 실패율은 사용된 전체 테스트 케이스 중에서 테스트 대상이 기대와 다른 결과를 보인 실패한 테스트 케이스의 비율로 정의
  • 테스트 케이스 실패율은 테스트 설계 및 구현 활동에서 테스트 케이스를 생성하기 위해 사용된 테스트 설계 기법이 해당 테스트 대상의 피처를 얼마나 효과적으로 테스트하고 있는지를 의미

테스트 케이스 효율성

  • 테스트 케이스 효율성 = 생성된 전체 테스트 케이스 수 / 검출된 전체 결함의 수
  • 실패한 각 테스트 케이스가 서로 다른 결함을 의미하지 않을  수도 있음.
  • 여러 개의 테스트 케이스가 결국 동일한 하나의 결함을 검출하는 데 기여할 수 있음.

결함 기반 메트릭

검출 결함 수와 검출 결함 밀도

  • 효과적인 테스트를 진행했다면 더 많은 수의 결함을 검출할 수 있음
  • 검출된 결함의 수는 테스트 효과성을 평가하기 위한 척도로서 부적합할 수 있음
  • 많은 결함이 있는 시스템에서 더 많은 수의 결함을 찾을 수 없기 때문
  • 검출 결함 밀도는 검출된 결함의 수를 시스템의 규모로 나눈 값으로 시스템 규모 측면에서는 객관화된 기준
  • 유사한 시스템에 대한 테스트 데이터를 장기간 축적하였다면 축적된 과거 데이터와의 비교를 통해 상대적으로 테스트 활동의 효과성을 평가할 수 있음
  • 결함의 발생에 영향을 미치는 요인들이 동일한 시스템을 개발하고 테스트하면서 검출 결함 수와 검출 결함 밀도에 대한 데이터를 축적했다면, 이 값들과 지금 수행한 테스트에서 구한 검출 결함 수와 결함 밀도를 비교함으로써 현재 테스트 활동이 얼마나 효과적인지 상대적으로 평가 가능

결함 검출 비율과 결함 구속 효율성

  • 결함검출비용 = 검출된 결함의 수 / 존재하는 결함의 수
  • 검출된 결함의 수는 실패한 테스트를 분석하여 구할 수 있음
  • 결함 검출 비율은 테스트에 대한 전반적인 평가 뿐만 아니라 테스트 레벨 별, 테스트 대상 별로 계산될 수 있음
  • 결함 구속효율성율 = 검출된 해당 단계의 결함 수 / 해당 단계에서 발생한 결함 수

테스트 활동 개선


테스트 계획 활동 개선

  • 테스트 대상과 범위 그리고 테스트 종료 기준을 결정함으로써 테스트 활동이 어떤 것을 대상으로, 무엇에 초점을 두고, 언제 종료될지에 대한 중요한 결정이 이루어짐
  • 테스트 효과성과 효율성을 높이기 위해 위험 분석을 바탕으로 테스트 대상, 피처 그리고 테스트 전략 등 결정
  • 효과적인 테스트가 수행되지 않았다면 위험 분석 방법 개선을 고려해야 함
  • 위험 분석 방법이 개선되면 그 결과에 따라서 테스트 대상, 피처 등이 영향을 받음
  • 각 테스트 대상별 테스트 완료 기준도 강화될 것임

테스트 설계/구현 및 테스트 환경 구축/관리 활동 개선

  • 테스트 전략을 조정하여 테스트 강도를 변화시킬 수 있음
  • 강한 수준의 테스트 기법과 테스트 완료 기준을 사용하여 더욱 강도 높은 테스트를 실행할 수 있음
  • 테스트 케이스 및 테스트 절차 개발, 테스트 환경 구축, 테스트 절차 선택 및 실행, 테스트 절차 실행 결과 및 비교 등과 같은 테스트 세부 작업에 대한 자동화의 가능성을 검토하여 가능하다면 자동화를 도입해 테스트의 효율성을 높이도록 함
  • 기존에 사용되는 테스트 도구의 자동화 기능을 충분히 활용하여 테스트 활동의 효율성을 높일 수 있음
  • 테스트 완료 기준을 조정하여 테스트 목적의 달성 수준에 영향을 줄 수 있음

테스트 실행 및 결함 보고 활동 개선

  • 테스트 프로세스를 구성하는 활동 중 일반적으로 테스트 실행에 가장 많은 시간이 소요됨
  • 다수의 테스트 절차를 적용하여 그 결과를 관찰하고 예상 결과와 비교하는 데는 많은 시간이 소요됨
  • 적용한 자동화 지원 도구가 실제로 테스트 활동에서 어떻게 사용되는지 분석하여 도구의 효율성을 평가
  • 테스트 도구를 적극적이고 효과적으로 활용하여 테스트 설계 및 구현 활동과 테스트 실행이 잘 진행되는지 분석
  • 테스트 프로세스를 정의할 때 명시적이고 구체적으로 선택된 테스트 도구를 활용하여 테스트 자동화에서 기대하는 효율성 달성
  • 결함 분석 시 구체화, 일반화, 고립화가 충분하지 않은 경우에 개발자는 해당 결함을 정확하게 재연하여 효율적으로 수정하는 데 어려움이 있을 수 있으므로 이때는 결함 분석 및 추정방법을 조정함으로써 발견된 결함의 수정 비용을 줄일 수 있음

테스트 활동 평가에 따른 개선

낮은 테스트 케이스 실패율

  • 결함을 검출하지 못하고 통과되는 테스트 케이스가 많음
  • 모듈 자체에 결함이 거의 없는 경우에도 대부분의 테스트 케이스가 실패될 것
  • 결함이 적은 것으로 간주될 수 있는 모듈은 리그레션 테스트를 수행할 때 제외하여 컴포넌트 테스트에 소요되는 비용 감소

낮은 테스트 케이스 효율성

  • 하나의 결함을 발견하는 데 많은 수의 테스트 케이스가 사용되는 것
  • 요약하면 테스트 케이스 간의 독립성을 높여서 여러 테스트 케이스가 동일한 결함을 검출하는 것을 예방할 수 있음
  • 낮은 테스트 케이스 효율성도 낮은 테스트 케이스 실패율과 마찬가지로 기본적으로 해당 모듈에 결함이 적기 때문
  • 낮은 테스트 케이스 효율성의 원인이 낮은 테스트 케이스 실패율일 수 있음

낮은 검출 결함의 수와 검출 결함 밀도

  • 근본적으로 테스트 대상에 적은 수의 결함이 있었기 때문에 검출된 결함의 수가 적을 수 있음
  • 유사한 시스템에 대해서 축적된 데이터가 있다면 서로 비교하여 현재 테스트 활동에 대한 평가가 가능
  • 유사한 시스템에 대한 기존의 테스트에서 검출된 결함의 수 또는 결함 밀도가 작은 수의 결함을 검출하거나 검출된 결함의 밀도가 낮다면 현재 수행된 테스트 활동이 효과적이지 않음을 뜻함
  • 테스트 대상과 범위가 부적절하여 시스템에 존재하는 결함을 검출하지 못하는 테스트 케이스들이 사용되었을 가능성이 있음

낮은 결함 검출 비율과 결함 구속 효율성

  • 우선 낮은 결함 검출 능력을 보이는 단계의 테스트 범위를 확대해 볼 수 있음
  • 구현/컴포넌트 테스트에서 낮은 결함 구속 효율성이 목격되는 경우에는 컴포넌트 테스트에 더 많은 노력을 투입하도록 함
  • 낮은 결함 검출 능력을 보이는 단계의 테스트 강도를 강화하여 더 많은 결함을 검출할 수 있음
  • 인스펙션을 효과적으로 수행하지 못했던 원인을 분석하여 개선할 수도 있음
  • 체크리스트가 불충분하여 결함을 검출하지 못했는지를 분석

 


테스트 프로세스 평가 모델


프로세스 참조 모델

프로세스 그룹 프로세스
조직 테스트 프로세스 그룹 조직 테스트 프로세스
테스트 관리 프로세스 그룹 테스트 계획 프로세스
테스트 모니터링 및 제어 프로세스
테스트 종료 프로세스
동적 테스트 프로세스 그룹 테스트 설계 및 구현 프로세스
테스트 환경 구축 및 관리 프로세스
테스트 실행 프로세스
결함 보고 프로세스
정적 테스트 프로세스 그룹 소프트웨어 리뷰 프로세스
정적 분석 프로세스

프로세스 역량 레벨

프로세스 역량 레벨 설명
레벨 0 : 미완료 수준 
incomplete

프로세스가 이행되지 않거나 프로세스 목적을 달성하지 못함
프로세스 속성 : 없음
레벨 1 : 수행 수준
performed

이행된 프로세스가 프로세스 목적을 달성
프로세스 속성 : 프로세스 수행
레벨 2 : 관리 수준
managed

앞서 서술된 수행된 프로세스가 관리되는 방식(계획, 모니터링, 조정)으로 이행
작업 산출물이 적절하게 수립되고, 통제되고, 유지됨
프로세스 속성 : 수행 관리, 작업 산출물 관리
레벨 3 : 확립 수준
established

앞서 서술된 관리된 프로세스가 프로세스 성과를 달성할 수 있는
정의된 프로세스를 사용하여 이행
프로세스 속성 : 프로세스 정의, 프로세스 전개
레벨 4 : 예측 수준
predictable

앞서 서술된 확립된 프로세스가 프로세스 성과를 달성하기 위해 정의된 제한 내에서 운용
정량적 관리에 대한 요구가 식별되고 변동의 이상 원인을 식별하기 위해 측정 자료가 수집되고 분석
프로세스 속성 : 정량적 분석, 정량적 통제
레벨 5 : 혁신 수준
innovating

앞서 서술된 예측 가능한 프로세스가 조직의 변경에 대응하기 위해 지속적으로 개선
프로세스 속성 : 프로세스 혁신, 프로세스 혁신 이해
  • 프로세스 수행 : 프로세스의 목적을 달성하는 정도
  • 수행 관리 : 프로세스의 수행이 관리되는 정도
  • 작업 산출물 관리 : 프로세스를 통해 생산되는 작업 산출물이 적절하게 관리되는 정도
  • 프로세스 정의 : 정의된 프로세스의 전개를 지원하기 위해 표준 프로세스가 관리되는 정도
  • 프로세스 전개 : 프로세스 성과를 달성하기 위해 표준 프로세스가 정의 프로세스로서 전개되는 정도
  • 정량적 분석 : 정보에 대한 니즈가 정의되고, 프로세스 요소 간의 관계가 식별되고 데이터가 수집되는 정도
  • 정량적 통제 : 예측 가능한 프로세스의 수행을 관리하기 위해 객관적인 데이터가 사용되는 정도
  • 프로세스 혁신 : 프로세스 정의 및 전개에 대한 혁신적인 접근 방식을 조사하여 프로세스의 변경을 식별하는 정도
  • 프로세스 혁신 이행 : 프로세스의 정의, 관리 및 수행에 대한 변경이 프로세스의 혁신 목적을 달성하는 정도

프로세스 평가 지표

  • 각 프로세스의 달성 정도를 평가하기 위해 평가 지표가 사용됨
  • 프로세스 평가 지표는 수행 지표와 역량 지표로 분류됨

프로세스 평가지표 유형

  • 수행 지표 : Base practice, Work product
  • 역량 지표 : Generic practice, Generic resource, Generic work product

+) 결함 구속 효율성 = 해당 단계에서 발생한 결함을 해당 단계에서 검출한 비율을 말함