소프트웨어 정적 시험(Static Testing)은 소프트웨어 개발 과정에서 코드나 문서 등을 분석하여 오류를 발견하는 품질 향상 기술입니다. 정적 시험은 소프트웨어가 실행되지 않은 상태에서 이루어지며, 소프트웨어 특정 부분을 집중적으로 검토하여 결함을 발견하는 것을 중점으로 합니다. 이는 소프트웨어 개발 초기 단계부터 진행되며, 시험 대상은 소스 코드, 설계문서, 요구 사항 등이 될 수 있습니다.
소프트웨어가 실행되지 않은 상태에서 시험이 이루어진다는 말 처럼 하드웨어 (Target : 소프트웨어 탑재된 H/W) 없이 소프트웨어 소스가 있고, 컴파일이 가능한 개발 PC에서 시험이 진행 됩니다.
그렇기 때문에 개발 PC에 정적 시험에 사용하는 툴을 설치 해야 합니다.
다양한 정적 시험 기법이 있지만, 방위사업청에서 요구하고 있는 무기체계 소프트웨어 개발 매뉴얼에 나와 있는 내용으로 살펴보겠습니다.
무기체계 소프트웨어 개발 매뉴얼 (부록7) 에는 소프트웨어 정적(Static) 시험을 다음과 같이 정의 하고 있습니다.
- "소프트웨어 정적(Static) 시험"이란 소프트웨어를 실행하지 않은 상태에서 잠재적인 결함을 검출하는 시험을 말하며, 코딩 규칙(Coding Rule) 검증 시험, 취약점 점검 시험 및 소스코드 메트릭(Code Metrics) 점검을 의미 한다.
위에서 보듯이 소트웨어 정적시험은 3개지 유형으로 분리 될 수 있습니다.
- "코딩 규칙"이란 소프트웨어 구현에 적용하는 소스 코드 작성 규칙으로서 [부록 6] "무기체계 소프트웨어 코딩 규칙"을 따른다.
[부록 6]에서는 코드규칙 적용 기준이 있다.
- 체계의 특성에 가장 적합한 위 '3항'의 관련 표준 준수를 윈칙으로 한다.
여기서 말한 '3항'을 보면 코딩 규칙은 다음과 같다.
1) MISRA-C : C로 개발된 소프트웨어를 대상으로 하는 코딩 규칙 모음
2) MISRA-C++ : C++로 개발된 솦트으웨어를 대상으로 하는 코딩 규칙 모음
3) JSF++ : 요건 잘 모르겠네요. ^^
4) Code conventions for the Java Programming Language(Oracle) : Java로 개발된 소프트웨어를 대상으로 하는 코딩 규칙 모음
5) C# Coding convention 또는 .Net Framework Degign Guideline(Microsoft) : C# 또는 .Net Framework로 개발된 소프트웨어를 대상으로 하는 코딩 규칙 모음
- "취약점 점검"이란 소프트웨어 소스 코드가 CWE(Common Weakness Enumeration) 목록에 정의된 취약점을 포함하고 있는지 점검하는 활동을 말한다.
- "소스코드 메트릭"이란 소프트웨어의 복잡도 감소, 유지보수 용이성 중대 등 소프트웨어 품질향상을 위한 소스코드의 품질 측정지표를 말한다.
'소프트웨어 신뢰성 시험' 카테고리의 다른 글
소프트웨어 동적시험(Dynamic Testing) 이란? (3) | 2025.02.02 |
---|---|
Open Source 검사 (ScanCode) (0) | 2024.08.29 |
정적 시험 (Static Test - MISRA C 2012) (0) | 2024.02.25 |