10장 - 애플리케이션 테스트 관리

박경서·2024년 4월 10일
post-thumbnail

소프트웨어 테스트의 이해

소프트웨어 테스트의 기본원칙

  1. 소프트웨어 테스트 원리
    • 결함 존재 증명
    • 완벽 테스팅은 불가능
    • 초기 집중
    • 결함 집중
    • 살충제 패러독스
      • 동일한 테스트에 대한 반복적 테스트는 새로운 버그를 찾지 못한다.
    • 정황 의존성
    • 오류-부재의 원인

  2. 소프트웨어 테스트 산출물
    • 테스트 계획서
    • 테스트 베이시스
      • 테스트 설계를 위한 기준이 되는 문서
    • 테스트 케이스
      • 테스트를 위한 설계 산출물
    • 테스트 슈트
      • 실행환경에 따라 구분
    • 테스트 시나리오
      • 테스트가 필요한 상황을 작성한 문서
    • 테스트 스크립트
      • 테스트 실행 순서를 작성
    • 테스트 결과서

소프트웨어 테스트 유형

테스트 기법에 따른 분류

  1. 정적 테스트

    • 실행하지 않고 구조를 분석
    • 리뷰
      • 동료검토
        • 2~3명이 0진행
      • 인스펙션
        • 전문가가 검사
      • 워크스루
        • 회의 전에 배포하여 사전 검토
  2. 동적 테스트

    • 실행하여 검출
    • 화이트박스, 블랙박스 테스트

    2-1) 화이트박스 테스트 = 구조기반 테스트

    • 응용프로그램의 내부 구조와 동작을 검사

    • 소스 코드의 모든 문장을 한 번 이상 수행

      a. 구문 커버리지 (Statement)

      • 프로그램 내 모든 명령문을 적어도 한 번 이상 수행
      • 조건문 결과와 관계없이 구문 실행 개수로 수행

      b. 결정 커버리지 = 선택/분기 커버리지 (Decision/Branch)

      • 각 분기의 결정 포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행

      c. 조건 커버리지 (Condition)

      • 각 분기의 결정 포인트 내의 개별 조건식이 참 한번, 거짓 한번의 결과가 되도록 수행

      d. 기본경로 커버리지 (Base 0Path)

      • 수행 가능한 모든 경로를 다 테스트
      • 맥케이브의 순환복잡도

    2-2) 블랙박스 테스트

    • 외부 사용자의 요구사항 명세를 보면서 수행

      a. 동등분할 테스트 = 동치/균둥 분할 테스트 (Equivalence Partitioninh)

      • 도메인 별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출

      b. 경곗값 분석 테스트 (Boundary Value Analysis)

      • 최솟값 바로 위, 최대치 바로 아래 등 경곗값을 포함하여 설계

      c. 결정 테이블 테스트 (Decision Table)

      • 테이블 형태로 나열 후 조합하여 테스트

      d. 상태전이 테스트 (State Transition)

      • 객체의 상태를 구분
      • 다른 상태로 전이되는 경우의 수를 테스트

      e. 유스케이스 테스트 (Use Case)

      • 유스케이스로 모델링

      f. 분류트리 테스트 (Classification Tree Method)

      • 트리구조로 분석 및 표현

      g. 페어와이즈 테스트 (Pairwise)

      • 테스트 데이터값들을 최소 한번씩 조합
      • 커버해야 할 범위를 적은 양의 테스트로 구성하기 위함

      h. 원인-결과 그래프 테스트 (Cause-Effect Graph)

      • 그래프를 활용하여 효용성이 높은 테스트 케이스 선정

      i. 비교 테스트 (Comparison)

      • 동일한 결과가 나오는지 비교하여 테스트

      j. 오류추정 테스트 (Error guessing)

      • 실수를 추정하여 결함이 검출되도록 설계

테스트 시각에 따른 분류

  • 검증
    • 개발 과정을 테스트
    • 개발자 혹은 시험자의 시각
  • 확인
    • 사용자 시각
    • 결과를 테스트하여 제대로 동작하는지 확인

테스트 목적에 따른 분류

  • 회복 테스트
    • 고의로 실패를 유도하여 정상적 복귀 여부를 테스트
  • 안전 테스트
    • 보안적인 결함을미리 점검
  • 성능 테스트
    • 반응하는 속도 등 테스트
  • 구조 테스트
    • 복잡도를 평가
  • 회귀 테스트
    • 일종의 반복 테스트
  • 병행 테스트
    • 변경된 시스템과 기존 시스템에 동일한 데이터 입력 후 결과 비교

테스트 오라클

  • 결과가 참인지 거짓인지를 판단하기 위해 사전에 정의된 참값을 입력하여 비교
  • 종류 (참샘휴일) -> 참새가 휴일에 쉰다.
    • 참 오라클
      • 모든 입력 값에 대하여 기대하는 결과를 생성함
      • 발생된 오류를 모두 검출 가능
    • 샘플링 오라클
      • 특정한 몇개의 입력값에 대해서만 기대하는 결과 제공
    • 휴리스틱 오라클
      • 샘플링 오라클을 개선
      • 특정 입력값에 대해 올바른 결과 제공
      • 나머지 값들은 휴라스틱(추정) 값 처리

애플리케이션 테스트 시나리오 작성

테스트 레벨

  • V모델

    • 개발자 관점 + 사용자 관점에서의 최종 산출물에 대한 확인을 지원하기 위한 모델
  • 테스트 레벨

    • 단위테스트
      • 사용자 요구사항에 대한 모듈, 컴포넌트에 초점
    • 통합테스트
      • 단위테스트를 통과후 테스트
      • 인터페이스 관련 오류
    • 시스템테스트
      • 통합된 시스템의 기능 점검
    • 인수테스트
      • 알파테스트
        • 개발자 환경에서 통제된 환경
      • 베타테스트
        • 실제환경에서 일정 수의 사용자에게 피드백
profile
안녕하세요, 박경서입니다.

0개의 댓글