초보 개발자
테스트 커버리지의 개념이란 본문
** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. **
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 개념을 정의해야 한다
여러 입력 중 어떤 것이 출력에 영향을 미치는지 분석, 각 입력이 출력에 영향을 미치도록 테스트케이스 생성
실제 최종 출력에 미치는 영향을 분석하기 위해선, 값들의 관계 및 계산 과정에서 거치는 특성까지 고려해야 함
'컴퓨터공학 전공 > 소프트웨어공학' 카테고리의 다른 글
정형검증 기법은 소프트웨어 품질에 어떻게 기여할 수 있을까? (3) | 2022.12.08 |
---|---|
Concolic Testing (0) | 2022.12.08 |
소프트웨어 테스팅은 정말 어려운가? 왜 어려운가? (0) | 2022.12.08 |
소프트웨어의 개발비용을 어떻게 산정할까? (0) | 2022.12.08 |
UML을 잘 알아야 하는 이유 (0) | 2022.12.08 |