테스트 개요

테스트의 종류

단위 테스트(Unit Test)

단위 테스트란 클래스나 함수 단위의 프로그램 테스트이다. 주로 설계한 대로 그들이 움직이는지 테스트하고, 논리구조가 적절한지 확인한다.

  • 기능 확인 테스트
    • 하나의 모듈이 설계 또는 스펙대로 동작하는지 확인하는 테스트
  • 제어 흐름 테스트
    • 프로그램의 논리 구조에 따라, “명령"이나 “분기” 등이 동작하는지 확인하는 테스트
  • 데이터 흐름 테스트
    • 데이터나 변수가 ‘정의’, ‘사용’, ‘소멸’의 순서대로 실행되는가를 확인하는 테스트

통합 테스트 (Integration Testing)

통합 테스트란 단위 테스트에서 검증한 프로그램을 조합하여 실행하는 테스트이다.

  • 상태 전이 테스트
    • 상태 전이도 기반으로 동작을 확인하는 테스트

기능 테스트

기능 테스트란 통합한 프로그램을 하나의 기능으로 테스트하는 것이다.

  • 기능 확인 테스트

시스템 테스트

시스템 테스트는 각각의 프로그램이나 기능을 결합한 프로그램이 사양서대로 동작하는지 검증하기 위한 테스트이다.

  • 확인 테스트

    • 회귀 테스트
      • 프로그램 기능을 수정, 변경한 후에 변경된 부분이 올바르게 동작하는지 확인하는 테스트
    • 디그레이드 테스트(Degrade test)
      • 프로그램 기능을 추가하거나 변경함으로써, 기존에 동작하여 기능이 동작하게 하는지를 확인하는 테스트
  • 평가 테스트

    • 보안 테스트 (Security Test)
      • 악의적인 외부로부터의 공격 대응이 가능한지, 취약성이 있는지 확인하는 테스트
    • 사용성 테스트(Usability Test)
      • 시각적으로 보기 편리하며 유저가 조작, 학습, 이해가 쉬운지를 확인하는 테스트
    • 장애 허용성 테스트
      • 장애가 발생하였을 경우 지정된 기능이 유지되는지를 확인하는 테스트
  • 부하 테스트

    • 성능 테스트(Performace Test)
      • 처리 능력이 사양서를 만족하는지 확인하는 테스트
      • 시스템의 요소가 특정 상황에서 어느 정도의 성능을 보이는지 측정하는 테스트
    • 롱런 테스트
      • 장기간의 연속 가동에도 처리 능력이나 가동률에 문제가 발생하지 않는지 확인하는 테스트
    • 부하 테스트(Load Test)
      • 극단적으로 높은 부담이 있는 상황에서도 가동이 되는지 확인하는 테스트
      • 특정한 부하를 제한된 시간을 두고 웹 어플리케이션에 이상이 없는지 파악하는 테스트
    • 지속 성테스트(Endurance Test)
      • Load Test와 유사, 오랜기간 동안 부하를 줘서 하는 테스트, Aging 테스트
    • 스트레스 테스트(Stress Test)
      • 부하의 임계점을 찾기 위해 점진적으로 부하를 올리면서 진행하는 테스트
    • 최고 부하 테스트(Peak Test)
      • 일순간 감당할 수 없을 만큼 부하를 주고, 웹 어플리케이션이 죽지 않고 제대로 동작하고 회복하는지 보는 테스트

사용자 테스트

  • 수용 테스트
    • 대상의 시스템이 유저의 요구를 만족하는지 확인하는 테스트
  • 운용 테스트
    • 실제 운영 환경에서 시스템이 정상적으로 동작하는지를 확인하는 테스트
  • 알파 테스트
    • 개발자 이외의 사람이 조작하여, 결함함이 있는지 확인하는 테스트
  • 베타 테스트
    • 개발 및 릴리즈 전의 제품을 개발자 이외의 일반 유저가 조작하여, 결함이 없는지 확인하는 테스트

테스트 기법

화이트 박스 테스트

화이트 박스 테스트는 시스템의 내용을 이해하고 의식적으로 수행하는 테스트를 의미한다. 주로 단위 테스트 에서 사용되며 다음 테스트가 분류된다.

  • 제어 흐름 테스트
  • 데이터 흐름 테스트

화이트 박스 테스트를 수행 할 때 논리 구조(처리 흐름 및 실행 순서)를 시각화해야 한다. 그 방법 중 하나는 순서도이다.

테스트 커버리지

테스트 커버리지란 시스템 또는 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타낸 것이다. 즉, 수행한 테스트가 테스트의 대상을 얼마나 커버했는지를 비율로 나타낸다.

대표적인 코드 커버리지는 아래와 같다.

  • 구문 커버리지(Statement Coverage)
    • 라인(Line) 커버리지라고 부르기도 한다. 코드 한 줄이 한번 이상 실행된다면 충족된다.
  • 결정 커버리지(Decision Coverage)
    • 브랜치(Branch) 커버리지라고 부르기도 한다. 모든 조건식이 true/false를 가지게 되면 충족된다.
  • 조건 커버리지(Condition Coverage)
    • 여기서의 조건은 모든 조건식을 얘기한다. 내부 조건이 true/false의 경우를 충족하는 지를 본다.

그 밖에 코드 커버리지도 존재한다.

  • 조건/결정 커버리지(Condition/Decision Coverage)
  • 변형 조건/결정 커버리지(Modified Condition/Decision Coverage)
  • 다중 조건 커버리지(Multiple Condition Coverage)
  • 경로 커버리지(All Path Coverage)

블랙박스 테스트

블랙박스 테스트는 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사하는 방식이다.

화이트 박스 테스트를 이용한 단위 테스트가 끝나면 시스템의 내부 구조를 의식하지 않는 테스트를 진행한다.
주로 기능 테스트와 시스템 테스트로 분류된다.

블랙박스 테스트에서는 다음과 같은 순서를 따라 테스트를 수행한다.

  1. 시험의 목적을 정의한다.
  2. 기능을 도출한다.
  3. 테스트 관점 추출한다. (예: 양식에서 게시된 값 확인)
  4. 테스트 관점의 기능에 할당한다.
  • 정상 케이스
  • 비정상 케이스
  • 조합한 케이스
  • etc.
  1. 테스트 기법 결정한다.

참고




최종 수정 : 2023-08-14