1. 테스트 용어 설명

    1. 테스트 케이스 : 프로그램의 요구사항 준수 여부 확인 위해 개발된 입력 값, 조건, 예상 결과
    2. 테스트 시나리오 : 적용 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합 (=테스트 케이스들의 집합)
    3. 테스트 오라클 : 테스트 수행 결과가 올바른지 확인하기 위해, 사전에 정의된 참 값을 입력하여 실제 값과 비교하는 방법
    4. 테스트 하니스 : 일부 기능 점검을 위한 변경 프로그램 (테스트 실행을 자동화하는 데 필요한 스텁드라이버 및 기타 지원 도구의 모음)
  2. 테스트 단계

    1. 단위 테스트 : 개발자가 모듈을 테스트
    2. 통합 테스트 : 통합한 모듈들의 인터페이스 시험
    3. 시스템 테스트 : 실제 시스템 환경에서 테스트
    4. 인수 테스트 : 사용자 환경에서 시스템 테스트
    5. 회귀 테스트 : 시스템 설치 후 유지 보수 단계에서 수정 영향 테스트로, 테스트 과정에서 발견된 결함을 수정하고 난 후 테스트
  3. 블랙박스 테스트, 화이트박스 테스트

    1. 블랙박스 테스트 : 내부 소스코드에 대한 정보 없이 테스트 대상의 기능이나 성능을 테스트한다.
    2. 화이트박스 테스트 : 코드를 실행하지 않고, 코드의 구조만 고려하여 테스트 케이스를 생성하는 방법이다. → 모듈의 논리적인 구조를 기능에 초점을 맞추어 체계적으로 점검
  4. 블랙박스 테스트의 동등 분할 방법, 경계 값 분석

    1. 동등 분할 방법 : 같은 결과값을 갖는 입력값들을 그룹으로 구성
    2. 경계 값 분석 : 동등 분할에 의해 분리된 동등 클래스의 경계에 중점을 두는 테스트 방법

    ex)

    Untitled

    1. 동등 분할 방법(아래의 3가지 경우로 분할) A. X ≤ 17 B. X ≥ 61 C. 18≤ X ≤ 60
    2. 경계 값 분석 경계 : min , max 이므로 테스트 케이스 : min - 1, min, min + 1, max - 1, max, max + 1
  5. 화이트 박스 테스트 3가지 검증 기준

    1. 문장 커버리지 : 각 문장이 적어도 한 번은 실행
    2. 분기 커버리지 : 모든 분기를 적어도 한 번은 실행
    3. 경로 커버리지 : 모든 실행 경로를 선택 ⇒ 분기 커버리지보다 강력, 경로가 복잡한 프로그램 테스트 용이
  6. 화이트 박스 테스트의 Cyclomatic Complexity : 메트릭으로 원시코드의 복잡도를 정량적으로 평가하는 방법

Untitled

Cyclomatic Complexity를 구하는 3가지 방법

  1. 폐쇄 영역의 수 + 1 ⇒ R의 개수 = 3
  2. 연결 선의 개수 - 노드의 수 + 2 = 9 - 8 + 2 = 3
  3. 분기 노드의 수 + 1 = 2 + 1 = 3
  4. 통합 테스트의 용어
    1. 드라이버 : 시험 대상 모듈을 호출하는 간이 소프트웨어 → 상위 모듈 역할
    2. 스텁 : 시험 대상 모듈이 호출하는 간이 소프트웨어 → 하위 모듈 역할
  5. 통합 테스트 中 모듈의 결합 순서에 따른 방법 4가지
    1. 빅뱅 통합 : 한 번에 완성된 모든 모듈을 모아 통합 → 일정에 대한 관리가 편함, 통합을 위한 스텁 구성이 필요X → 중대한 오류 발생 확률 높음, 오류의 위치와 원인 발견 어려움

    2. 하향식 통합 : 시스템 구조 상 위에서 아래로 내려오면서 통합되는 통합 테스트로, 최상위 층의 모듈에 대한 드라이버와 스텁을 작성한 후, 통과 되면 스텁을 대상 모듈로 교체하는 방식으로 구조부터 확인하기 때문에 개발자에게 유리하다. → 상위층의 중요한 모듈 인터페이스를 조기 테스트하고, 스텁을 이용하여 사용자들에게 일찍 시현이 가능하다. 하드웨어 사용이 분산되고, 오류 원인을 찾기 쉽다.

    3. 상향식 통합 : 시스템 구조상 최하위에 있는 모듈부터 위로 올라가며 통합되는 통합 테스트로, 위층의 모듈이 추가되어 서브 시스템을 구성한다.스텁이 필요없고, 드라이버가 필요하다. → 하위층 모듈을 상위층보다 많이 테스트하므로, 하위층에 중요한 기능의 모듈이 많은 경우에 적합하다. 하드웨어 사용이 분산되고 오류 원인을 찾기 쉽다. → 초기에 시스템 구조가 갖춰지지 않으며, 상위층의 중요 인터페이스를 마지막에 가서야 확인한다.

    4. 연쇄식 통합 : 특정 기능을 수행하는 모듈의 최소단위(thread) 부터 시작하는 통합 테스트로, 상대적으로 중요한 모듈부터 개발한다. → 초기에 시스템 골격을 보여주어 사용자의 의견을 빨리 확인 할 수 있다. 시스템을 여러 프로그래머에 나누어 개발하기 쉽다. → 쓰레드의 구성이 복잡해질 수 있어 드라이버와 스텁의 작성에서 오류가 발생할 수 있다.

    5. 시스템 테스트 종류

    6. 기능 테스트 : 기능적 요구와 시스템의 차이를 발견하기 위한 테스트

    7. 성능 테스트 : 시스템의 여러 측면을 체크하기 위한 테스트 ex) 작업 부하, 처리량, 반응 시간, 효율성

    8. UI 테스트 : 인간 공학적인 결함 발견을 위한 테스트 ex) 보고 느끼는 UI, 데이터 입출력 디스플레이, 오류 처리에 대한 결함…

    9. 인수 테스트 : 시스템을 당장 사용할 수 있는지 준비가 되어 있는지 확인하는 테스트로, 개발자가 아닌 의뢰자 또는 대리인이 테스트 수행

    10. 인수 테스트 中 베타 테스트 관점에서의 시스템 테스트와의 차이 : 시스템 테스트는 개발 중 주요 단계에서 시스템이 정상적으로 실행되는지 확인하는 테스트이고, 베타 테스트는 실제 사용자가 사용하는 환경에서 테스트하며, 피드백을 받는 테스트이다.