초보 개발자

테스트 커버리지의 개념이란 본문

컴퓨터공학 전공/소프트웨어공학

테스트 커버리지의 개념이란

mandudu 2022. 12. 8. 19:01

** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. **

white box testing / structural testing 에서 쓰이는 개념

1. 테스팅 작업을 효과적으로 관리하기 위해서는 coverage 자동 툴이 필요하다.
2. coverage의 척도가 되는 기준을 이해하고, 여러 coverage 사이의 관계를 이해해야 한다. 

Coverage의 종류

  • Statement Coverage: 프로그램에 포함된 문장 중 얼마나 실행되었는지. 제일 약한 기준
  • Branch Coverage: 조건문을 비롯한 각종 분기 중 얼마나 많은 분기를 따라서 수행되었는지
    coverage 값에는 측정되지 않지만, 숨겨진 branch가 있을 수 있다!
  • Condition Coverage: 특정 분기문을 수행하게 되는 각각의 조건에 대해 별도로 테스트케이스 생성
    해당 분기문의 true/false가 아닌 조건의 조합에 따라 측정
  • MC/DC (Modified condition/desicion Coverage): 안전성이 중요한 avionic 소프트웨어의 경우, 엄격한 테스팅 필요

필요 이상의 복잡한 소프트웨어 → 유지/보수/확장의 과정에서 추가적인 비용 발생 및 잠재적 품질 하락
 → 간단하고 깔끔한 코드 작성이 필요  → Pair Programming이 도움이 됨

 최근 개발된 프로그래밍 언어: 가독성 강조

 

FBD: function block diagram

  • PLC(programmable logic controller) 구현에 널리 쓰이는 data flow 기반의 언어, 디지털 회로와 유사
  • ex) 원자력 발전소 시스템의 일부, 이상이 발견되고 지속되는 경우 발전소를 가동 중지시킴
    - trip condition 9가지  → 자연어 구현 시 200page, FBD 구현 시 2000개 block
  • 입력값 5개, 출력값 2개 / 순서 구현되어 있음 (1 → 2) & 3 → 4 → 5
  • 입력값-예상출력값 테스트 시 단 하나의 테스트케이스만으로도 statement, branch coverage 모두 100%
    왜? FBD는 data flow 기반이므로 내부의 모든 path를 커버할 수 있음. ( C언어는 control flow 기반 )
  • FBD의 testing은 어떻게 할 것인가 새로운 coverage 개념을 정의해야 한다
    여러 입력 중 어떤 것이 출력에 영향을 미치는지 분석, 각 입력이 출력에 영향을 미치도록 테스트케이스 생성
    실제 최종 출력에 미치는 영향을 분석하기 위해선, 값들의 관계 및 계산 과정에서 거치는 특성까지 고려해야 함