SW 검증 방법 (정적 테스트 vs 동적 테스트)
SW 검증 방법
정적 테스트 : 소프트웨어를 실행하지 않고 검증하는 기법을 일컫는다.
- 프로그램을 실행하기 전, 소스코드에 존재하는 잠재적 취약점을 발견하는 기법
목적에 맞는 프로그램을 짜기 위해 코드를 작성하고, 컴파일 단계를 거쳐 이상이 없는 상태를 프로그램을 실행하기 전의 코드라고 일컫는다. 정적분석의 경우 해당 코드를 특정한 가이드라인, 혹은 법규화된 구조를 활용하여 면밀히 뜯어보는 과정을 이야기한다.
- 최근 사이버보안/업데이트 버규화로 인한 secure coding이 강조되며, 정적 검증에 대한 부분이 강화되고 있음.
- 기법 : 리뷰와 정적 분석
1) 리뷰
전문가들이 함께 산출물을 검토하여 결함을 검출하는 방법 - Code Review 라고 함
2) 정적 분석
상용으로 사용되는 정적분석 도구 : Checkstyle, Cppcheck, PMD, SonarQube, StyleCop, cobertura, cpplint 등
동적 테스트 : 실제 구현된 소프트웨어를 실행시켜 검증하는 기법을 일컫는다.
- 프로그램을 실행한 후, 실제적으로 발생하는 오류를 발견하고, 문제를 해결 및 분석하는 기법
- 기법 : 명세기반(black box), 구조기반(white box), 경험기반
1) 명세기반 테스트 (Black box test) - 검증해야하는 sw가 실행파일의 형태로 존재하여야함
: 명세서를 기반으로 테스트 케이스를 결정하는 방법
2) 구조기반 테스트 (White box test) - 검증해야하는 sw가 소스코드 형태로 존재하여야함
: 기존 소스코드를 참고하여 구조를 파악하고, 테스트 케이스를 결정하는 방법
3) 경험기반 테스트
: QA 나 검증하는 사람들의 경험을 토대로 테스트 케이스를 결정하는 방법
개발 및 품질 검사 과정
1) Coding - 정적 테스트
2) Testing - 동적 테스트
3) S/W등록/검사결과 제출 - 검사결과 도출
4) 제출결과 분석
5) 개발자 검증결과 평가
6) 자체품질 검토
7) SW Realease