정적 테스트 대 동적 테스트

정적 테스트

테스트 대상을 실행하지 않고 테스트 수행.

  • 리뷰
    개발 단계별 산출물이 품질 목표에 부합하는지 점검, 검토.
    산출물에 존재하는 결함 검출이 목적

  • 정적 분석
    결함으로 판단할 수 있는 특정한 패턴이 소스 코드에 있는지 분석.


장점
- 경제성 : 실행환경을 필요로 하지 않고 설계 수준에서 결함을 검출하고 해결하기 때문.

- 도메인별 자동화 도구를 활용한 대규모 소스 코드 분석
   프로그래밍 개발표준인 MISRA C, MISRA C++, JSF AV C++ 등은
   자동차, 항공기같은 안전이 중요시되는 소프트웨어 개발에 필수로 요구됨


단점
- 결함이 아닌 문제를 결함으로 보고하는 False positive의 단점이 있음
- False positive의 비율이 높아지면 도구의 테스트 결과를 신뢰하지 않는 부작용 발생


동적 테스트

테스트 대상을 실행하여 결함 검출.
  • 명세 기반
    프로그램의 구조, 내부 논리를 참고하지 않고 테스트 케이스를 개발.
    대신 사용자의 요구 명세, 설계 정보를 이용하여 개발한다.
    컴포넌트-통합-시스템-인수 테스트 등 전 과정에 걸쳐 사용될 수 있음.



  • 구조 기반
    프로그램의 제어 흐름이나 자료 흐름 정보를 이용하여 테스트 케이스 설계.
    프로그램 내부 구조 정보를 기반으로 테스트 케이스를 설계하므로
    화이트박스 테스트라고도 한다.


  • 경험 기반
    테스트 케이스 설계 바탕으로 테스트를 수행하는 대신
    도메인에서 테스터의 경험, 기존 테스트 산출 결과, 직관을 활용하여 수행.
    대표적으로
    오류 추정
    탐색적 테스트

    가 있다.

장점
  • 소스코드 없어도 수행이 가능하다.
  • 코드 분석으로 확인하기 어려운 요구사항을 확인할 수 있다.
    (-초 이내에 이벤트가 발생해야한다 와 같은 제약이 있는 경우)

단점
  • 소프트웨어를 실행하기 위한 환경이 요구된다.
  • 그 환경은 외부 시스템과 연계가 필요한 환경일 수도 있다.

댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code TIL 6 : 6장. 객체와 자료구조

백엔드 개발자가 Djnago fullstack 사이드 프로젝트를하며 ( html, css, vanillaJS 그리고 JS프레임워크 )