소프트웨어 테스트 기법

반응형
  • 소프트웨어 테스트 기법의 개요
    • 소프트웨어 테스트 기법의 개념
      • 테스트 기법들은 가능한 한 많은 잠재적 장애를 도출하고자 하는 테스트의 목적을 달성하고자 개발
      • 테스트 기법 적용의 주된 원칙은 입력 도메인, 시나리오, 상태, 데이터 흐름 등을 고려하여 체계적으로 접근하는 것
    • 일반적인 테스트 기법의 분류
      • 화이트 박스(White-box) 테스트
        • 모듈의 구조, 분기, 실행 경로 등을 테스트하는 과정
        • 테스트하는 사람이 모듈의 내용을 상세히 알고 있다는 것을 전제
      • 블랙 박스(Black-box) 테스트
        • 테스트를 실시하는 사람이 모듈 내부에 대한 상세 지식이 없다는 것을 전제
        • 프로그램 사양서로부터 가능한 모든 입력 조건(예측 가능/불가능 포함)에 대하여 테스트 케이스를 선정
      • 블랙 박스 테스트와 화이트 박스 테스트의 비교
구분 블랙 박스 테스트 화이트 박스 테스트
제품지식 제품의 기능을 알고 있음 제품의 내부 작용을 알고 있음
테스트 결과 작동 결과를 보여줌 내부 로직의 맞물림을 보여줌
사용처 소프트웨어 인터페이스 세부적인 절차 테스트
테스트 항목
  • 소프트웨어 기능 작동 여부
  • 입력의 정확한 수용 여부
  • 출력의 정확한 수용 여부
  • 외부 정보의 무결성 유지
  • 모듈 내 모든 경로의 1회 이상 실시 여부
  • True/False의 논리적 비교
  • 모든 Loop의 실행
  • 내부 자료구조 조사
오류 형태 부정확/누락 기능, 인터페이스 오류, 자료구조/외부 DB 접근 오류, 성능 오류, 초기화 및 종료 오류 초기화 결함, 인덱싱 및 증가 결함, Loop의 경계선에 나타나는 경계 결함
테스트 유형
  • 동등 집단 분할법
  • 경계값 분석법
  • 의사결정 테이블
  • 오류 예측
  • 루프 검사
  • 데이터 흐름 검사
  • 조건 검사
  • 기초 경로 검사

   

  • 소프트웨어 엔지니어의 직관과 경험에 의한 분류
    • 임시 응변식(Ad hoc) 테스트
      • 정형화된 기법에 의해 식별하기 쉽지 않은 특별한 테스트를 시행할 때 유용한 방법으로, 가장 일반화된 기법
      • 소프트웨어 엔지니어가 가진 유사한 프로그램에 대한 기법, 직관, 경험에 의존
    • 탐색(Exploratory) 테스트
      • 테스트 계획 수립 시에 미리 테스트를 정의하지 않고 테스트 수행 시점에서 동적으로 설계하고 실행하는 기법
      • 테스트의 효과성은 소프트웨어 엔지니어의 지식과 경험에 의해 좌우되며 테스트하는 동안 관찰된 제품 수행 결과 , 애플리케이션에 대한 친숙성, 플랫폼, 자애 프로세수, 결함과 장애의 유형, 특정 제품과 관련된 위험 등의 출처로 부터 도출됨
           
  • 명세 기반 기법(Specification-based Techniques)에 따른 분류
    • 동등 집단 분할법(Equivalent Partitioning)
      • 입력 도메인을 부분 집합들의 모음이나 동등 집단(Equivalent Class)로 나누고, 각 클래스를 대표하는 테스트 케이스를 선정하는 방법
      • 프로그램 처리 로직상 같은 방식으로 처리되는 입력 데이터들을 하나의 클래스로 간주하고, 이 클래스에 대한 테스트 케이스를 만드는 방법
    • 경계값 분석법(Boundary-value Analysis)
      • 보다 쉽게 오류를 발견할 수 있도록 테스트 케이스에서 변수들의 입력 값 도메인을 경계나 그 근처로 선택하는 방법
      • 견고성(Robustness) 테스트는 경계 값 분석 기법의 확정 형태로 기대하지 않은 입력이나 잘못된 입력에 대한 프로그램의 테스트를 위하여 테스트 케이스 생성시 변수의 입력 도메인 외부에서 선택하는 방법
    • 의사 결정 테이블(Decision Table)
      • 조건과 결과로 예측도는 행동의 논리적 관계를 파악하여 가능한 조합을 고려하여 테스트 케이스를 선택
      • 대표적 기법인 Cause-Effect Graphing에서 입력 데이터 간의 관계가 출력에 미치는 상황을 체계적으로 분석하여 효율성 높은 테스트 케이스 생성
    • 유한 상태 머신 기반(Finite-state Machine-based)
      • 프로그램을 유한적 상태를 지닌 기계로 모델링하여 실행해야 할 상태와 전이를 다루기 위한 테스트를 선택
    • 정형화된 명세에서의 테스트(Testing from Formal Specification)
      • 기능적 테스트 케이스 도출 및 테스트 결과를 검사하기 위한 참조 출력으로 명세를 동시에 사용
    • 랜덤 테스트(Random Test)
      • 테스트 케이스를 순수하게 랜덤으로 생성
           
    ※ 블랙박스 테스트는 동등 분할, 경계값 분석 방식을 주로 사용
  •    
  • 코드 기반의 기법에 따른 분류
    • 제어 흐름 기반 기준(Control Flow-based Criteria)
      • 경로 테스트
        제어 흐름도에서 모든 입.출구의 제어 흐름 경로가 실행되도록 테스트 케이스 설계
      • 문장 테스트
        프로그램 내의 각 코드 라인이 단 한 번이라도 실행되도록 테스트 케이스를 설계
      • 분기 테스트
        프로그램의 모든 실행 경로가 최소한 번 이상 실행되도록 테스트 케이스를 설계
      • 논리적 경로 테스트
        발생 가능한 모든 경로들의 조합들에 대하여 최소한 한번 이상 실행되도록 테스트 케이스를 설계
    • 데이터 흐름 기반 기준(Data Flow-based Criteria)
      제어 흐름도에 프로그램 변수들의 정의, 사용, 소멸에 대한 상세한 설명이 되어 있어 이 정의와 사용에 따라 테스트 경로를 선택
    •    
  • 결함 기반 기법에 따른 분류
    • 오류 예측(Error Guessing)
      전문 지식과 이력 레코드(Historical Record)를 이용하여 주어진 프로그램에서 가장 잠재되어 있을 만한 결함을 찾아내기 위한 테스트 케이스 구성
    • 돌연변이(Mutation) 테스트
      테스트 대상 프로그램에 약간의 구문 변화를 준 프로그램을 만들어 모든 테스트 케이스를 원 프로그램과 수정된 프로그램에 적용하여 차이를 발견
반응형