[소프트웨어개발] 테스트 레벨

thingzoo·2024년 2월 4일
0
post-thumbnail

단위테스트(Unit Test)

개별 모듈을 시험하는 것으로 모듈이 정확하게 수행하는지 검증

  • 소프트웨어 개발 초기 단계 수행, 코드작성 직후
  • 테스트케이스는 주로 모듈 설계 단계에서 준비
  • 주로 구조기반 테스트 시행

단위 모듈

  • 한 가지 동작을 수행하는 기능을 모듈로 구현한 것
  • 독립적인 컴파일 가능
  • 다른 모듈에 호출되거나 삽입되기도 함

단위모듈 구현의 원리

  • 단계적 분해: 단순한 형태로 시작하여 점진적으로 상세화
  • 추상화: 복잡한 문제를 간단하고 일반적인 형태로 변환
  • 독립성: 높은 응집도와 낮은 결합도로 모듈의 독립성 강화
  • 정보은닉: 모듈 내부 데이터 및 로직의 외부로부터 보호
  • 분할정복: 큰 문제를 작은 문제로 나누어 해결

단위 모듈 테스트 방법

  • 화이트박스 테스트
  • 메서드 기반 테스트
  • 화면 기반 테스트

단위 테스트 자동화 도구

  • JUnit: Java를 위한 단위테스트 프레임워크
  • CppUnit: C++를 위한 단위테스트 프레임워크
  • Unittest: Python 표준 라이브러리 중 하나, 자동화된 테스트 지원
  • HttpUnit: HTTP 서버와의 상호작용을 테스트할 수 있는 Java 라이브러리

통합 테스트

여러 모듈 또는 서브시스템을 결합(통합)하고, 그 사이의 인터페이스 오류 및 모듈 간 상호작용 오류를 검증

통합 테스트 수행 방법의 분류⭐️

  • 비점증적 방식: 빅뱅
  • 점증적 방식: 상향식, 하향식

상향식테스트(Bottom Up Integration Test)

  • 프로그램의 하위모듈에서 상위모듈방향으로 통합하면서 테스트 진행
    • 하위모듈들을 클러스터(Cluster)로 결합
    • 상위모듈로 더미 모듈인 드라이버(Driver) 작성
    • 통합된 클러스터 단위로 테스트
    • 테스트 완료후 클러스터는 프로그램 구조의 상위로 이동해 결합하고
    • 드라이버는 실제모듈로 대체됨

하향식테스트(Top Down Integration Test)

(20.8)

  • 프로그램의 상위모듈에서 하위모듈방향으로 통합하면서 테스트 진행
  • 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있음
  • 상위모듈에서는 테스트케이스 사용 어려움
    • 아직 개발되지 않은 하위모듈은 더미모듈인 스텁(Stub)으로 대체(20.6)
    • 깊이우선방식(DFS), 넓이우선방식(BFS)에 따라 스텁들이 실제모듈로 교체
    • 모듈이 통합될 때마다 테스트 실시
    • 새로운 오류가 발생하지 않음을 보증하기위해 회귀테스트 실시

빅뱅테스트

  • 모든 구성 요소들을 한꺼번에 통합하여 테스트
  • 소규모 시스템에 편리한 테스트 방식

백본 테스트

  • 샌드위치 테스트
  • 하위 수준에서는 상향식 통합, 상위수준에서는 하향식 통합
  • 대규모 프로젝트에서 사용하는 방식
  • 비용이 많이 듦

시스템 테스트

완전히 통합된 소프트웨어를 대상으로, 소프트웨어와 시스템 사양 간 일치성 검증

  • 실제 사용환경과 유사하게 만든 테스트 환경에서 수행해야함
  • 유형
    • 기능 테스트: 블랙박스테스트
    • 비기능 테스트: 화이트박스테스트

인수 테스트⭐️

(20.8)
시스템을 배포하거나 실제 사용할 만한 준비가 되었는지 평가

  • 사용자의 요구사항을 모두 충족하는지
  • 시스템에 예상대로 동작하는지
  • 유형
    • 알파테스트: 개발자 통제 하에, 사용자가 개발환경에서 수행(20.6)
      • 내부에서 자체 진행, 실제 사용환경에서 동작, 관련자만 참여
    • 베타테스트: (통제되지 않는)실제 운영환경에서 여러 사용자가 수행(=필드테스팅)
      • 알파테스트 후, 정식 출시 전
profile
공부한 내용은 바로바로 기록하자!

0개의 댓글