: 소프트웨어가 실행되지 않는 환경에서, 자동화된 도구를 활용하여 정적 테스트를 수행하여 결함을 찾아내는 기법
ex. 비공식적 리뷰, 기술적 리뷰, 워크쓰루, 인스펙션 등
- 코딩 규칙 검증 (MISRA 규칙)
- C, C++ 등
- 메트릭 점검 (6종류 소스코드 메트릭 규칙)
→ 현재 대부분 "예외처리"ex. 한 함수안에 실행가능한 코드 200줄 이상 시, 오류 복잡도 20 이상 시, 오류 (복잡도 x, 가독성 o)
- 취약점 점검 (CWE-658(C)/659(C++)/660(Java))
ex. runtime error (메모리 할당 오류, null 포인터 참조로 인한 die, 수학 연산식 내 0으로 나누기, 분모가 0 등)
: 소프트웨어가 실행중인 환경에서 다양합 입,출력 데이터, 사용자 상호작용의 변화들을 점검하는 기법
▶ 코드 커버리지
: 소프트웨어의 테스트 케이스가 얼마나 충족되었는지를 나타내는 지표
테스트를 진행 시, '코드 자체가 얼마나 실행되었는지'를 수치로 확인 가능
- 명세기반 테스트 (= 블랙박스 테스트)
'사용자' 관점의 테스트 방법
: 소프트웨어의 내부구조나 작동원리를 참고하지 않고,
사용자의 요구사항이 기술된 명세나 테스터 경험을 바탕으로 동작을 검사하는 테스트 방식
ex. 동등분할, 경계값 분석, 결정 테이블 테스트, 상태 전이 테스트, 분류 트리 테스트 등
- 구조기반 테스트 (= 화이트박스 테스트)
'개발자' 관점의 테스트 방법
: 응용 프로그램의 내부구조 및 동작을 상세히 검사하는 테스트 방식
ex. 구문 커버리지, 결정 커버리지, 조건 커버리지, 조건/결정 커버리지, 다중조건 커버리지 등
1) 문장 커버리지: ;(=semicolon) 기준 모든 문장 test 2) 분기 커버리지: 조건문, 반복문 기준 test 3) MC/DC 커버리지: 분기문 안에 있는 개별 조건문 포함 test 4) all pass test
- 경험기반 테스트
ex. 오류 추정, 탐색적 테스트 등