애플리케이션 테스트 


 

애플리케이션 테스트: 애플리케이션에잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차

애플리케이션 테스트 원리

       완벽한 테스팅은 불가능 : 결함이 없다고 증명할 수 없음

       파레토 법칙 ; 20%의 코드에서 전체 결함의 80%가 발견

       살충제 패러독스 : 동일한 테스트를 반복하면 결함이 발견되지 않는다(기출)

       정황 의존성 ; 소트으웨어 성격에 맞게 테스트

       오류-부재의 궤변 : 요구사항을 충족시키지 못하면 결함이 없어도 품질이 높다고 할 수 없다

 

 테스트 오라클(Test Oracle): 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법

 

테스트 오라클 종류

    참 오라클  : 모든 입력값에 대하여 기대하는 결과를 제공하는 오라클

    샘플링 오라클 : 특정한 몇개의 입력값에 대해서만 기대하는 결과를 제공 오라클 ( 기출)

    휴리스틱 오라클 : 특정 입력값에 대해 올바른 결과 제공 , 나머지 값들에 대해서는 추정(휴리스틱)으로 처리 오라클

    일관성 검사 오라클 : 애플리케이션 변경이 있을 때 수행 전과 후 결과값이 동일한지 확인 오라클

 

 

프로그램 실행 여부에 따른 분류

    정적테스트 : 실행하지 않고 구조를 분석하여 논리성 검증 ( 워크스루 , 인스펙션 , 코드검사) 

    동적테스트 : 실행하여 결함을 검출하는 테스트 

 

화이트박스 테스트 : 논리적은 모든 경로를 테스트함

화이트박스 테스트 유형 (기출 21-2)

         구문(문장) 커버리지 : 모든 명령문을 한번 이상 수행하는 커버리지 Statement coverage

         결정 커버리지 : 결정 포인트 내 전체 조건식이 한번 이상 참과 거짓 결과를 수행  decision 

         조건 커버리지 ; 결정 포인트 내 개별 조건식이 한번 이상 참과 거짓 결과를 수행  condition 

        조건/결정 커버리지 : 결정 + 조건

         변경 조건/결정 커버리지 : 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주게 하는 커버리지 modificiation

       다중 조건 커버리지 : 모든 개별 조건식의 가능한 조합을 100%보장하는 커버리지    Multiple Condition Coverage

       기초 경로 커버리지 : 수행가능한 모든 경로 테스트 기법 Base Path 

       제어 흐름 테스트 : 제어구조를 그래프형태로 나타내어 내부 로직 테스트 control flow test

     데이터흐름 테스트 : 제어 흐름 그래프에 사용현황 추가한 테스트

 

 

블랙박스 테스트 ; 사용자의 요구사항 명세를 보면서 수행하는 테스트 ( 기출) (기출 21-1)

유형

    동등 분할 테스트 : 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트               (Equivalence Partitioning)

    경계값 분석 테스트 : 입력 조건의 경계값을 테스트 케이스로 선정하여 검사 ( 기출)

Boundary Value Analysis

    결정 테이블 테스트 : 요구사항의 논리와 발생조건을 테이블 형태로 나열하여 조건과 행위를 모두 조합해 테스트

   상태 전이 테스트 : 다른상태로 전이되는 경우의 수 테스트 State Transition

    유스케이스 테스트 : 유스케이스로 모델링 되어있을때 테스트 케이스를 명세화해 수행

    분류 트리 테스트 : 트리구조로 분석하여 테스트 케이스 설계

    페어와이즈 테스트 : 테스트 데이터 값들 간에 최소한 한 번씩 조합

   원인효과 그래프 테스트 ; 그래프틑 활용해 입력 데이터간 영향을 분석하여 효용성이 높은 케이스 선정 테스트

cause effect

   비교 테스트 : 여러 버전의 프로그램에 같은 입력값을 넣어 동일한 데이터가 나오는지 테스트

Comparability test

   오류 예측 검사 - 과거의 경험이나 감각으로   error gusing

 

 

 테스트 시각에 따른 분류

        검증(Verification): 소프트웨어 개발 과정을 테스트, 개발자 또는 시험자의 시각

        확인(Validation): 소프트웨어 결과를 테스트, 사용자 시각

 

테스트목적에 따른 분류

    회복 테스트 : 시스템에 실패를 유도하고 정상적 복귀 여부 테스트 recovery 

    안전 테스트 ; 불법적인게 시스템을 파괴하지 못하도록 보안적인 결함을 미리 점검 Security

   성능 테스트 ; 시스템의 응답시간, 업무량 요구반응속도 등 측정  Pergormance

    구조 테스트 ; 시스템의 내부 논리경로, 복잡도 평가  Structure

    회귀 테스트 ; 시스템의 변경 수정 코드에 새로운 결함이 없음을 확인하는 테스트  Regression

    병행 테스트 ; 변경된 시스템과 기존 시스템에 동일한 데이터 입력후 결과 비교 테스트 Parallel

    강도 테스트 : 과부화 시 정상적으로 작동 하는지 테스트 stress

 

 

테스트 커버리지(Test Coverage): 주어진 테스트 케이스에 의해 수행되는 소프트웨어 테스트 범위를 측정하는 테스트 품질 측정 기준

 

테스트커버리지 유형      

       기능 기반 커버리지: 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정하는 방법     

       라인 커버리지: 전체 소스 코드의 라인수를 모수로 테스트 시나리오가 수행한 소스 코드의 라인수를 측정하는 방법           코드 커버리지: 소스 코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트되었는지를 측정하는 방법

 

 

코드 커버리지 

       구문 커버리지(statment) - 모든 구문에 대해 시행

       조건 커버리지(condition) - 개별 조건식에 대해

       결정 커버리지(deision) - 모든 분기문에 대해 

        변경/조건 커버리지  - 전체 조건식의 결과에 영향을 주는 커버리지

       다중 조건 커버리지 - 모든 개별 조건식 조합을 실행.

 

테스트 하네스 도구

      테스트 드라이버 : 상향이 테스트시 하위모듈 구동시 자료 입출력을 제어하기 위해

       테스트 스텁 : 하향식 테스트시.

       테스트 슈트 : 일정한 순서에 의하여 수행될 개발 테스트

       테스트 케이스 : 테스트할 입력과 예상 결과 정의

        테스트 스크립트 : 테스트 케이스를 수행하여 결과를 보고 할 목적의 명렬ㅇ어

         목 오브젝트 : 테스트를 위해 사용자 행위를 미리 조건부로 입력.

 

 

애플리케이션 성능 측정 : 처리량(throighput) , 자원 사용률 Resource Usage , 응답 시간Response Time , 경과시간(turnaround time)

 

 

 

성능 테스트 유형

    부하 테스트 : 부하를 증가시켜 시스템의 임계점 찾기  Load Test

    강도 테스트 : 임계점 이상의 부하를 가하여 비정상적인 상황에서 테스트

    스파이크 테스트 : 짧은 시간에 사용자가 몰릴때 시스템의 반응 측정

    내구성 테스트 : 오랜시간동안 시스템에 높은 부하를 가하여 시스템 반응

   

 

테스트 종류에 따른 분류

      명세 기반 테스트(블랙박스 테스트): 프로그램의 요구사항 명세서를 기반으로 테스트 케이스를 선정하여 테스트 하는 기법

      구조 기반 테스트(화이트박스 테스트): 소프트웨어 내부 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트 기법

      경험 기반 테스트(블랙박스 테스트): 유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 수행하는 테스트

 

 

 

 

테스트 레벨(Test Level): 함께 편성되고 관리되는 테스트 활동의 그룹

테스트 레벨 종류   ( 기출 21-1)

     단위 테스트 : 사용자 요구사항에 대한 단위 모듈 테스트

     통합 테스트 : 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템 테스트

     시스템 테스트 : 개발된 소프트웨어가 정상적으로 수행되는지 검증 테스트

     인수 테스트 : 계약상의 요구사항이 만족되었는지 확인하는 테스트

 

 

소프트웨어 개발단계: 요구사항 → 분석 → 설계 → 구현

테스트 단계: 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트

 

인수 테스트

    사용자 인수 테스트 : 사용자가 시스템 사용의 적절성 여부 확인

    운영상의 인수 테스트 ; 시스템 관리자가 시스템 인수 시수행하는 테스트

   계약  : 계약상의 인수/검수 조건을 준수하느닞

   규정 인수 : 소프트웨어가 정부 지침,법규에 맞는지

   알파 테스트 : 사용자가 개발자와 함께 하는 테스트

   베타 테스트 : 사용자에게 사용하게 하고 피드백 받는 테스트

 

테스트 시나리오(Test Scenario): 테스트 수행을 위한 여러 테스트 케이스의 집합, 테스트 케이스의 동작 순서를 기술한 문서이며 테스트를 위한 절차를 명세한 문서

 

 

 

단위 테스트(Unit Test): 개별적인 모듈(또는 컴포넌트)을 테스트

 

목(Mock) 객체 생성 프레임워크: 객체 지향 프로그램에서는 컴포넌트 테스트 수행 시 테스트 되는 메서드는 다른 클래스의 객체에 의존하는데 이런 경우 메서드를 고립화하여 테스트하는 것이 불가능하므로 독집적인 컴포넌트 테스트를 위해서는 스텁의 객체 지향 버전인 목 객체가 필요하다

 

 

통합 테스트(Intergration Test): 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트

 

통합테스트 수행방법 비교

       빅뱅 테스트 : 모든 모듈을 동시 통합 후 테스트

        상향식 테스트 :

       하향식 테스트:

       샌드위치 테스트: 상위는 하향식 하위는 상향식 

 

 

테스트 자동화 도구: 반복적인 테스트 작업을 스크립트 형태로 구현함으로써, 테스트 시간 단축과 인력 투입 비용을 최소화하는 한편, 쉽고 효율적인 테스트를 수행할 수 있는 방법

 

테스트 자동화 도구 유형

    정적분석 도구 : 애플리케이션을 실행하지 않고 분석  (기출)

    테스트 실행 도구 : 테스트 스크립트를 실행하고 테스트

    성능 테스트 도구 : 가상의 사용자를 이용하여 목표 달성 여부

   테스트 통제 도구 : 테스트 관리 계획 수행 결함관리 수행

   테스트 하네스 도구 : 테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적 테스트

 

 

 

소프트웨어 결함: 개발자 오류로 인해 만들어지는 문서 또는 코딩상의 결점으로 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생하는 현상

테스트 결함 관리: 단계별 테스트 수행 후 발생한 결함의 재발 방지와 유사 결함 발견 시 처리 시간 단축을 위해 결함을 추적하고 관리하는 활동

 

결함 분석 방법

    구체화: 결함의 원인을 찾기 위해 결함을 발생기킨 입력값, 테스트 절차, 테스트 환경을 명확히 파악하는 방법

    고립화: 입력값, 테스트 절차, 테스트 환경 중 어떤 요소가 결함 발생에 영향을 미치는지 분석하는 방법

    일반화: 결함 발생에 영향을 주는 요소를 최대한 일반화 시키는 방법

 

 

 

 

결함 심각도별 분류: 단순 결함(미관상 안좋음) → 경미한 결함(표준위반) → 보통 결함(사소한 기능 오작동) → 주요 결함(기능 장애) → 치명적 결함(데이터손실)

+ Recent posts