소프트웨어 개발의 빠른 혁신 속도는 품질 보증의 중요성을 그 어느 때보다 강조하고 있습니다 특히 고품질 코드를 유지하는 것은 개발자와 QA 팀 모두에게 필수적인 과제가 되었습니다. 이러한 맥락에서 Testwell CTC++ 는 코드 커버리지 분석 분야에서
신뢰받는 도구로 자리 잡아, 개발자와 QA 팀이 코드의 품질을 종합적으로 테스트하고 분석할 수 있도록 지원하고 있습니다.
최근 출시된 버전 10.2.0은 혁신적인 기능 추가와 성능 개선, 그리고 주요 버그 수정으로 이전보다 더욱 강력한 활용성을 제공합니다.
이번 블로그에서는 Testwell CTC++ 의 최신 업데이트가 소프트웨어 개발 환경에 어떤 가치를 더하는지, 주요 기술적 세부 사항과 실제 활용 사례를 중심으로 살펴보며, 이를 통해 개발 및 QA 팀이 얻을 수 있는 실질적 이점을 함께 탐구해 보겠습니다.
코드 커버리지가 중요한 이유
기능을 자세히 살펴보기 전에 코드 커버리지 분석이 현대 개발의 핵심으로 남아 있는 이유를 생각해 볼 필요가 있습니다. 특히 임베디드 및 보안이 중요한 영역에서 시스템의 복잡성이 증가함에 따라 코드 커버리지는 다음을 보장합니다:
- 철저한 테스트: 코드의 모든 경로, 분기 및 변경 사항을 평가합니다
- 결함 최소화: 테스트되지 않은 코드에는 배포 이후에 발견된 버그가 발생할 수 있습니다.
- 규정 준수: DO-178C, ISO 26262 등과 같은 표준은 인증 획득을 위해 높은 수준의 코드 커버리지를 필수로 요구합니다.
Testwell CTC++는 이러한 분야에서 그 가치를 입증해 왔으며, 버전 10.2.0은 기존 레거시 바탕으로 커버리지 분석의 가장 시급한 과제를 해결합니다.
버전 10.2.0의 주요 기능:
1. 소스 코드 변형에 대한 커버리지 결과 병합
현대 소프트웨어는 다양한 플랫폼, 설정, 환경에 적응하기 위해 전처리기 지시문(preprocessor directive)을 자주 활용합니다. 이로 인해 여러 소스 코드 변형이 생성되어 커버리지 분석이 복잡해지는 문제가 발생합니다.
v10.2.0 이전의 문제점: 각 소스 코드 변형이 독립적인 개체로 간주되어 각각 별도로 분석해야 했습니다. 이로 인해 커버리지 데이터가 단편화되고 여러 구성을 관리하는 팀에 추가적인 오버헤드가 발생했습니다.
v10.2.0에서의 해결책: 이제 Testwell CTC++는 이러한 변형의 결과를 병합하는 두 가지 강력한 옵션을 제공합니다:
- merge-variants: 결과를 단일 통합 보고서로 결합하여 전체 분석을 간소화합니다.
- merge-keep-variants: 심층 분석을 위해 병합된 보고서와 개별 보고서를 모두 제공합니다.
고급 시각화 기능
일부 변형에서는 활성화되어 있지만 다른 변형에서 비활성화된 라인은 시각적 막대로 표시되며, 변형 별로 차이가 있는 계측 프로브는 쉽게 식별할 수 있도록 강조 표시됩니다.
실질적 혜택:
- 디버그/릴리스, 플랫폼별 빌드 등 여러 구성을 포함한 대규모 프로젝트의 복잡성을 줄여줍니다.
- 서로 다른 빌드 환경 전반에서 커버리지 메트릭의 일관성을 보장합니다
- QA 팀이 변형별 세부 정보에 대한 액세스 권한을 유지하면서 전체적인 상황에 집중할 수 있도록 지원합니다.
실질적 혜택:
각각 고유한 전처리기 디렉터리를 사용하는 Windows 및 Linux 빌드를 지원하는 프로젝트로 가정했을 때, merge-variants를 사용하면 개발자는 필요한 경우 개별 인사이트를 유지하면서 통합된 커버리지 보고서를 생성할 수 있습니다.
2. 삼항 연산자 ?:에 대한 정당성 처리
삼항 연산자는 간결하지만 커버리지 분석에 있어서는 복잡할 수 있습니다. 조건과 결과를 한 줄로 결합하기 때문에 테스트 프로세스를 모호하게 만듭니다.
v10.2.0의 새로운 기능:
이제 Testwell CTC++에서 삼항 연산자 내에 정당성을 부여할 수 있는 기능을 제공합니다. Ex:
True | Justified as hard to test, low impact.
중요한 이유:
- 위험도가 낮거나 중요도가 낮은 브랜치를 분석하는 데 소요되는 시간을 줄입니다.
- 팀이 결정을 투명하게 문서화하여 특정 영역이 세부 테스트에서 제외된 이유를 기록할 수 있습니다.
적용 시나리오:
- 성능이 중요한 코드에서 특정 브랜치를 테스트하면 오버헤드가 발생할 수 있는 경우
- 과거 데이터를 기반으로 일부 조건이 안전하다고 간주되는 레거시 시스템으로 작업하는 경우.
3. 반환 명령문 이후의 코드 처리
제어 흐름이 복잡하면 반환문을 처리할 수 없거나 부적절하게 분석되는 코드가 종종 발생합니다. 이는 이전 버전의 제한 사항이었습니다.
영향:
- 초기 종결 패턴이 있는 함수에 대한 커버리지 정확도가 향상되었습니다.
- 복잡한 제어 흐름을 검토하는 개발자를 위한 추적성이 향상됩니다.
예시 활용 사례:
if (condition) {
return;
}
// Previously unjustifiable lines can now be analyzed and justified.
cleanupResources();
4. 세분화된 분석을 위한 새로운 보고 변수
Testwell CTC++는 사용자 맞춤형 보고 기능으로 항상 주목받아 왔으며, 버전 10.2.0에서는 이를 확장하여 새로운 변수를 제공합니다:
- $NumberOfCalls$: 함수 호출 횟수를 추적하여, 중요 경로와 잠재적 병목 구간을 파악할 수 있습니다.
- $DefinedInLine$: 함수가 정의된 줄 번호를 기록하여 대규모 코드베이스에서 추적 가능성을 향상합니다.
- $FunctionParameters$: 이제 구조화된 보고서에 포함되어 함수 인터페이스에 대한 상세한 통찰을 제공합니다.
실질적 혜택:
- 함수 정의 위치, 호출 횟수 등의 정보가 포함된 보고서를 통해 보다 정교한 분석이 가능합니다.
- 함수 정의와 호출 데이터를 보고서에 직접 표시하여 디버깅 효율성을 향상시킵니다.
- 번히 호출되는 함수를 식별하여 성능 병목 현상을 사전에 방지하거나 개선할 수 있습니다.
5. 사용 편의성 향상을 위한 접이식 HTML 보고서
대규모 프로젝트는 특히 MC/DC와 같은 복잡한 결정 조건을 포함할 경우, 방대한 양의 보고서가 생성되어 이를 탐색하는데 어려움을 겪을 수 있습니다.10.2.0 버전에서는 HTML 보고서 내 접이식/확장식 섹션이 추가되어 조건, 다중 조건, MC/DC 세부 사항 등을 효율적으로 관리할 수 있습니다.
중요한 이유:
- 테스터가 보고서의 맥락을 잃지 않고 특정 관심 영역에 집중할 수 있습니다.
- 관련성이 낮은 섹션을 접어두고 필요한 경우에만 세부 데이터를 열람하여 보고서를 보다 쉽게 탐색할 수 있습니다.
6. 툴세트 간소화 및 단순화
사용 환경에서 필요한 도구의 수를 줄여 Testwell CTC++의 사용성과 유지보수를 대폭 개선했습니다. 이는 엄격한 도구 제약 조건을 가진 환경에 적합하며, 복잡성을 줄임으로써 쉽게 통합하고 운영할 수 있도록 지원합니다.
더 이상 사용되지 않는 컴포넌트:
- ctcxmlmerge: 기존 기능이 **ctcreport**에 완전히 통합되어 중복성을 제거했습니다.
- Cygwin 지원: Windows 패키지에서 Cygwin 지원이 제외되어 설치 및 호환성 관리가 더욱 간단해졌습니다.
안정성 및 호환성 향상을 위한 버그 수정
버전 10.2.0에서는 다양한 문제를 해결하여 도구의 안정성과 호환성을 한층 강화했습니다. 주요 수정 사항은 다음과 같습니다:
- 최신 C++ 개념 구문 분석: concept 및 requires 절 처리가 개선되어 C++20 이상과의 완벽한 호환성을 보장합니다
- switch문 커버리지 정확도 향상: 중괄호가 없는 switch 케이스의 문장 수 계산 오류가 수정되었습니다.
- 형 변환이 포함된 논리 표현식 처리: (short)(b)와 같은 표현식이 커버리지 분석에서 잘못 해석되던 문제를 해결했습니다
- 네임스페이스 계층 구조 오류 수정: 함수 이름에 잘못된 네임스페이스 계층 구조가 포함되던 문제를 바로잡았습니다.
- Linux 호환성 개선: glibc 2.37에 대한 지원이 추가되어 최신 배포판에서 공유 라이브러리 로딩 관련 문제가 해결되었습니다
- Firefox HTML 렌더링 문제 해결: MC/DC 커버리지 차트의 표시 오류를 수정하여 HTML 보고서가 Firefox에서도 정확히 렌더링되도록 개선했습니다.
Testwell CTC++ v10.2.0의 주요 혜택
For Developers:
- 워크플로우 간소화: 통합 및 보고 기능이 통합되어 도구 사용이 단순해지고 작업 흐름이 최적화 됩니다.
- 디버깅 효율성 향상: 새로운 보고 변수와 개선된 커버리지 정확도로 디버깅 작업이 더욱 정밀하고 효과적으로 진행됩니다.
- 미래 지향적 호환성: C++20과 같은 최신 C++ 표준과 완벽하게 호환되어 앞으로의 기술 요구에 대응할 수 있습니다.
For QA Teams:
- 신뢰성 향상: 주요 버그 수정으로 일관되고 정확한 결과를 보장합니다.
- 분석 시간 단축: 접이식 보고서와 정당성 기능을 통해 더 신속하고 효율적인 의사결정을 지원합니다.
- 코드베이스에 대한 포괄적 통찰 제공: 통합된 커버리지 보고서로 전체 코드베이스를 한눈에 파악할 수 있습니다.
Testwell CTC++ v10.2.0은 단순한 점진적 업데이트를 넘어선 최신 소프트웨어 개발 과제를 해결하는 포괄적인 개선 사항입니다. 다양한 환경에서 생성된 변형 커버리지 데이터를 하나로 통합하여 코드베이스를 명확히 이해할 수 있게 하고, 최신 C++ 표준(C++20)을 완벽히 지원해 미래 기술 변화에도 대비할 수 있습니다. 또한, 강화된 디버깅 및 분석 기능은 더욱 신속하고 정확한 품질 관리를 가능하게 합니다.
Testwell CTC++ v10.2.0은 개발자와 QA 팀이 직면한 주요 과제를 해결하며, 코드 커버리지 분석의 새로운 기준을 제시합니다. 복잡성을 줄이고, 품질 목표를 효율적이고 효과적으로 달성하며 소프트웨어 개발과 품질 관리에서 확실한 성과와 혁신을 경험해 보세요.
Get more insights into Testwell CTC++
Testwell CTC++ v10.2.0으로 업그레이드하여 코드 품질 보증의 새로운 기준을 경험해 보세요.
Referenced from: