[소프트웨어공학] 소프트웨어 테스트(통합 테스트 & 시스템 테스트)

[소프트웨어공학] 소프트웨어 테스트(통합 테스트 & 시스템 테스트)

단위 테스트 (Unit Test)

개발 단계에서 각 모듈이 개발 완료되는 시점에서 단위 테스트를 시행합니다.
모듈이라하면 일종의 프로그램 내의 하나의 기능으로 생각하면 쉽다.
MS Word라는 프로그램이 있다는 가정하에 Word내에 있는 기능 중, 폰트 사이즈 선택이 일종의 모듈이라 볼 수 있습니다.
다시 말해 모듈을 테스트한다는 의미는 하나의 기능만이 잘 동작하는지를 확인하는 과정입니다.

테스트하려는 모듈을 실행하려면 해당 모듈을 실행할 수 있는 환경 구성이 필요합니다.
하지만 상위 모듈이나 하위 모듈이 100% 존재한다는 보장이 없기 때문에 아래와 같은 가상의 모듈을 만들어 사용해야 합니다.

  • 테스트 드라이버 (Test Driver)
    • 테스트 대상이 되는 모듈을 호출하여 대상 모듈의 실행 결과를 받는 가상 모듈
    • 테스트 대상이 되는 모듈의, 상위 가상 모듈
  • 테스트 스텁 (Test Stub)
    • 호출하는 상황의 대상 모듈을 테스트하기 위한 가상 모듈
    • 테스트 대상이 되는 모듈의, 하위 가상 모듈


통합 테스트 (Integration Test)

모듈을 통합하는 과정에서 모듈 간 호환성의 문제를 찾아내기 위해 수행되는 테스트입니다.
다시 말해 모듈 간의 인터페이스가 올바르게 작동하는지를 테스트하게 됩니다.
ex) MS Word에서 '폰트 사이즈' 모듈과 '폰트 스타일'모듈을 통합

모듈 테스트 통합 기법
  • 빅뱅(Big-Bang) 기법
    • 전체 모듈을 모두 통합한 이후 통합 테스트를 수행하는 방식, 이때 오류가 발생했을 시 오류가 발생한 모듈을 찾기가 쉽지 않다는 단점이 있다.
  • 하향식(Top-Down) 기법
  • 상향식(Bottom-Up)기법

통합 테스트를 수행할 때 트리 구조의 모듈 구성도에서 아래로 통합하며 테스트하는것을 깊이 우선, 행 우선으로 통합하며 테스트하는 것을 너비 우선 방식이라고 한다.


시스템 테스트 (System Test)

완전하며 전체가 통합된 소프트웨어 제품을 테스팅 하는 것이다.

컴퓨터로 이루어진 시스템을 움직이게 하는 것(to exericse)이 유일한 목적인 일련의 다른 테스트이다.

  • 복구 테스트
  • 보안 테스트
  • 스트레스 테스트
  • 성능 테스트
시스템 테스팅은 소프트웨어 테스팅 중 블랙 박스(명세기반) 테스팅 범주에 해당한다.


댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?