2019년 1월 23일
소프트웨어 정적 테스트, 동적 테스트
I. 프로그램 실행 여부 기반, 정적-동적 테스트
가. 정적-동적 테스트 개념
정적 테스트 | 동적 테스트 |
---|---|
프로그램을 실행 전 소스코드 파싱 기반 문법, 코드 등 잠재적 취약점 발견 기법 | 프로그램 실행 후 실제 발생 오류 발견 및 문제 해결 분석 기법 |
나. 정적-동적 테스트 특징/장단점
항목 | 정적 테스트 | 동적 테스트 |
---|---|---|
특징 | – 코딩 규칙, 가이드 준수 여부 검사 | – 단독분석보다 정적 기법 병행 수행 적용 |
장점 | – 코드 실행 전 사용 | – 오류 탐색 정확도 높음 |
단점 | – 정확도 상대적 낮음 | – 코드 전체 수행 어려움 |
- 소스코드 분석은 실제 코드 작성 후 결과물을 대상으로 문제점 발견을 위한 결함 분석 기법
II. 정적-동적 테스트 유형
가. 정적 테스트 유형
유형 | 세부 기법 | 설명 |
---|---|---|
흐름 분석 | 경로 분석 | – 흐름 그래프 상 모든 경로 수행 – 변수들 사이 인과관계 확인 |
제어 흐름 분석 | – 모든 구분, 블록 조합 검사 – 기본, 문장, 분기, 조건 커버리지 | |
데이터 흐름 분석 | – 프로그램 변수 정의/사용 시험 – All path, defs, uses 등 | |
정형 분석 기법 | 정형 분석 | – S/W 수학적 표현, 정확도 제고 – 안정성/보안성 중요 SW 적용 |
문법 체크 | 패턴 매칭 | – 코드 표준 준수 여부 확인 – 텍스트 형태, 트리구조 패턴 매칭 |
보안 분석 | 보안 분석 | – 보안 취약점 원인 위험도 분류 – 수정 권장사항 제공 |
분석 구간 | 지역 분석 | – 하나의 함수만 대상 |
모듈 레벨 | – 클래스나 유닛 기준 분석 | |
전역 분석 | – 전체 프로그램 대상 분석 |
- 모든 경로에 대해 분석하므로 TC에 영향 없고, 케이스 작성 소요 시간과 비용 절감
나. 동적 테스트 유형
유형 | 세부 기법 | 설명 |
---|---|---|
분석기 | 코드 커버리지 | – 코드 함수 내 경로 분석 – 코드 커버리지 측정, McCabe IQ |
네트워크 분석기 | – 네트워크 충돌 횟수 길이 초과 패킷 개수 정보 수집 | |
Assertion 분석기 | – 프로그램 행위에 대한 Assertion 충족 여부 검사 | |
체커 | 런타임 에러 체커 | – 자동화 도구 이용 실행 시 – RTE Basis, Polyspace |
보안 체커 | – 보안 취약점 검출 – 모의 해킹, 크래킹 시도 | |
상태 체커 | – 메모리 할당, 누수 – 모듈 별 수행시간 분석 | |
메모리참조 에러 체커 | – 코드 메모리 및 성능 프로파일링 – 빌드/컴파일 과정 소스 분석 | |
분석 도구 및 기법 | 캡쳐-재생 | – 실제 코드 동작 시 각 라인 추적 – 함수 별 소모 시간 측정 – JTAG, Trace32, APM Multi-ICE 등 |
동작 추적 | ||
디버거 | ||
인스트루먼팅 | – 소스코드에 메모리 동작 및 성능 분석 위한 별도 코드 삽입 |
- 동적 분석은 실제 동작 시 수행되므로 동적 분석 도구 연결 인터페이스 존재 필요(파일, 시리얼 등)
One Comment
잘 읽고 갑니다.