정적분석 & 동적분석

이유정·2023년 9월 5일
0

검증

목록 보기
2/7

1. 정적분석

: 소프트웨어가 실행되지 않는 환경에서, 자동화된 도구를 활용하여 정적 테스트를 수행하여 결함을 찾아내는 기법
ex. 비공식적 리뷰, 기술적 리뷰, 워크쓰루, 인스펙션 등

  • 코딩 규칙 검증 (MISRA 규칙)
    - C, C++ 등
  • 메트릭 점검 (6종류 소스코드 메트릭 규칙)
    → 현재 대부분 "예외처리"
ex. 한 함수안에 실행가능한 코드 200줄 이상 시, 오류
복잡도 20 이상 시, 오류 
(복잡도 x, 가독성 o)
  • 취약점 점검 (CWE-658(C)/659(C++)/660(Java))
ex. runtime error
(메모리 할당 오류, null 포인터 참조로 인한 die,
수학 연산식 내 0으로 나누기, 분모가 0 등)

2. 동적분석

: 소프트웨어가 실행중인 환경에서 다양합 입,출력 데이터, 사용자 상호작용의 변화들을 점검하는 기법

▶ 코드 커버리지
: 소프트웨어의 테스트 케이스가 얼마나 충족되었는지를 나타내는 지표
테스트를 진행 시, '코드 자체가 얼마나 실행되었는지'를 수치로 확인 가능

  • 명세기반 테스트 (= 블랙박스 테스트)
    '사용자' 관점의 테스트 방법
    : 소프트웨어의 내부구조나 작동원리를 참고하지 않고,
    사용자의 요구사항이 기술된 명세나 테스터 경험을 바탕으로 동작을 검사하는 테스트 방식
    ex. 동등분할, 경계값 분석, 결정 테이블 테스트, 상태 전이 테스트, 분류 트리 테스트 등
  • 구조기반 테스트 (= 화이트박스 테스트)
    '개발자' 관점의 테스트 방법
    : 응용 프로그램의 내부구조 및 동작을 상세히 검사하는 테스트 방식
    ex. 구문 커버리지, 결정 커버리지, 조건 커버리지, 조건/결정 커버리지, 다중조건 커버리지 등
1) 문장 커버리지: ;(=semicolon) 기준 모든 문장 test
2) 분기 커버리지: 조건문, 반복문 기준 test
3) MC/DC 커버리지: 분기문 안에 있는 개별 조건문 포함 test
4) all pass test
  • 경험기반 테스트
    ex. 오류 추정, 탐색적 테스트 등
profile
안녕하세요 이유정입니다. 반갑습니다.

0개의 댓글