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
+) 결함 구속 효율성 = 해당 단계에서 발생한 결함을 해당 단계에서 검출한 비율을 말함