본문 바로가기
정보처리기사

[정보처리기사 실기] 애플리케이션 테스트 관리

by 공불러 2023. 7. 17.
728x90
반응형

[정보처리기사 실기] 애플리케이션 테스트 관리

목차

    애플리케이션 테스트 관리

    오류발견

    애플리케이션 테스트 과정에서 발생하는 오류를 탐지하는 작업

    오류예방 방법 : 인스펙션, 동료 검사

    인스펙션: 개발 문서나 코드를 검토하여 오류를 예방하는 방법
    동료 검사: 동료 개발자가 서로의 코드를 검토하여 오류를 예방

     

    품질 향상

    애플리케이션 테스트를 통해 품질을 향상시키는 작업

    * 소프트웨어 테스트의 원리

    결함집중 : 결함이 발생할 가능성이 높은 부분에 집중적으로 테스트를 수행

    살충제패러독스 : 테스트 케이스의 수행으로 인해 결함이 없어지는 것이 아니라 결함을 찾을 확률이 높아져서 결함의 발견이 증가하는 현상

    테스팅은 정황에 의존한다. : 테스트의 결과와 품질은 테스트 수행 시점과 환경에 의존

    오류 부재의 궤변 : 오류를 찾지 못한 테스트 결과로 인해 시스템에 오류가 없다고 잘못된 결론을 내리는 현상

     

    소프트웨어 테스트 산출물

    테스트 계획서 : 테스트 수행 계획을 기록한 문서

    테스트 케이스 : 특정 조건에서의 입력, 실행 절차, 예상 결과 등을 정의한 문서
    테스트 시나리오 : 시나리오에 따라 테스트 케이스를 실행하는 테스트 절차
    테스트 결과서 : 테스트의 수행 결과와 오류, 결함 등을 기록한 문서

     

    *소프트웨어 테스트의 유형

    정적 테스트 

    코드나 문서를 검토하거나 분석하는 방식의 테스트

     

    동적 테스트

    화이트 박스

    기초 경로 : 프로그램의 모든 가능한 경로를 테스트하는 방식

     

    * 블랙박스 테스트

    동치 분할 : 입력값의 동등한 부류에서 대표값을 선택하여 테스트
    경계값: 입력값의 경계 부분에서 오류가 발생할 가능성이 높아 테스트 수행
    경계값 분석 : 입력값의 경계 부분을 분석하여 효율적으로 테스트 수행
    결정테이블 : 조건과 동작을 표로 정리하여 테스트 수행

    상태전이 : 시스템의 안정 상태를 유지하는 범위를 테스트

     

     

    유형 설명
    정적 테스트 코드나 문서를 검토하거나 분석하는 방식의 테스트
    동적 테스트 소프트웨어를 실행하여 동작을 검증하는 방식의 테스트
    화이트 박스 내부 구조와 동작을 검증하는 테스트
    기초 경로 프로그램의 모든 가능한 경로를 테스트하는 방식
    블랙박스 테스트
    동치 분할 입력값의 동등한 부류에서 대표값을 선택하여 테스트
    경계값 입력값의 경계 부분에서 오류가 발생할 가능성이 높아 테스트
    경계값 분석 입력값의 경계 부분을 분석하여 효율적으로 테스트 수행
    결정테이블 조건과 동작을 표로 정리하여 테스트 수행
    성태존이 시스템의 안정 상태를 유지하는 범위를 테스트

     

    테스트에 대한 시각

    • 검증과 확인: 테스트의 목적은 검증과 확인입니다. 검증은 요구사항이 충족되는지 확인하는 과정이며, 확인은 소프트웨어가 예상대로 동작하는지 검증하는 과정입니다.
    • 과정, 결과: 테스트는 과정과 결과로 이루어져 있습니다. 과정은 테스트를 계획하고 수행하는 전체 과정을 의미하며, 결과는 테스트를 통해 얻은 실제 결과를 의미합니다.
    • 회복, 안전, 강도, 성능: 테스트는 소프트웨어의 회복력, 안전성, 강도, 성능 등을 평가하는 목적을 가지고 있습니다.
    • 구조: 경로: 구조 기반 테스트에서는 소프트웨어의 구조와 경로에 초점을 맞춰 테스트를 수행합니다. 이를 통해 구조적인 결함을 발견하고 수정할 수 있습니다.
    • 회귀: 변경과 수정된 코드에서 새로운 결함이 발생하는지 확인하기 위해 회귀 테스트를 수행합니다.
    • 병행: 동일한 입력에 대해 여러 테스트를 동시에 수행하여 결과를 비교하는 방식으로 테스트를 수행합니다.

    테스트 종류

    • 명세 기반 테스트: 요구사항 명세서를 기반으로 테스트 케이스를 작성하고 수행하는 방식입니다. 동치, 경계, 결정, 유스케이스, 분류 트리, 페어와이즈, 직교 분할 등의 기법을 활용합니다.
    • 구조 기반 테스트: 소프트웨어의 구조를 분석하여 테스트 케이스를 설계하고 수행하는 방식입니다. 경로, 조건, 결정 등의 구조적인 요소에 초점을 맞춰 테스트를 수행합니다.
    • 경험 기반 테스트: 과거 경험과 도메인 지식을 활용하여 테스트 케이스를 작성하고 수행하는 방식입니다.

    테스트 케이스

    • 테스트 케이스는 특정한 입력 값과 실행 조건에 대해 예상 결과를 검증하기 위해 설계된 테스트 항목입니다.
    • 테스트 항목 명세서는 테스트 케이스의 목록과 설명을 포함하는 문서입니다.
    • 위험 평가는 테스트 항목의 우선 순위를 결정하는 과정으로, 위험을 최소화하기 위해 중요한 테스트 항목을 식별합니다. 요구사항은 테스트 항목에 대한 우선 순위를 결정하는 데 도움을 줄 수 있습니다.
    • 테스트 케이스 정의는 테스트를 수행하기 위해 테스트 환경을 구축하고 테스트 자원을 할당하는 과정을 의미합니다.

    테스트 오라클 유형

    • 샘플링 오라클은 테스트 결과를 검증하기 위해 표본 데이터를 사용하는 방식입니다. 표본 데이터를 기반으로 예상 결과와 실제 결과를 비교하여 테스트를 평가합니다.

    V모델

    • V모델은 개발 단계와 검증 단계를 상호 보완적으로 진행하는 모델입니다.
    • 개발 단계에서는 요구사항 분석, 설계, 구현 등이 수행되고, 검증 단계에서는 테스트 계획, 설계, 수행, 검증이 수행됩니다.

    테스트 레벨 종류

    • 단위 테스트: 개발자가 개별 모듈을 테스트하는 단계로, 알파 테스트라고도 불립니다.
    • 인수 테스트: 개발자와 고객이 협력하여 시스템의 사용자 요구사항을 검증하는 단계로, 베타 테스트라고도 불립니다.

    테스트 시나리오의 개념

    • 테스트 시나리오는 테스트 케이스들의 집합으로, 테스트를 수행하는 순서와 조건을 정의한 것입니다.

    구조 기반 테스트

    • 구조 기반 테스트는 소프트웨어의 구조와 경로를 기반으로 테스트 케이스를 설계하고 수행하는 방식입니다.

    살충제 패러독스

    • 살충제 패러독스는 테스트의 목적이 결함을 찾는 것이 아닌, 결함이 없는 것처럼 보이게 하는 것에 초점을 맞추는 현상을 의미합니다. 이로 인해 테스트에서 결함을 발견하는 능력이 제한될 수 있습니다.

     

     

    테스트 수행에 대한 내용

    테스트 수행은 소프트웨어의 품질을 확인하기 위해 작성된 테스트 케이스를 실행하는 과정입니다. 다음은 테스트 수행과 관련된 내용을 설명하고 정리한 것입니다.

    점증적 테스트

    점증적 테스트는 개발 단계에 따라 기능을 점진적으로 추가하면서 테스트를 수행하는 방식입니다. 초기에는 핵심 기능을 테스트하고, 그 후에 추가적인 기능을 순차적으로 테스트합니다.

     

    비점증적 테스트

    비점증적 테스트는 전체 시스템을 대상으로 테스트를 수행하는 방식입니다. 초기에 개발된 모든 기능을 포함하여 테스트를 진행합니다.

     

    하향식 방식 통합 테스트 : stub

    하향식 방식은 제어 모듈에서 최하위 모듈로 향해가며 테스트를 수행하는 방식입니다. 하위 모듈들을 통합하면서 기능을 검증하고 테스트합니다.

     

    STUB (스텁)

    아직 개발되지 않은 모듈의 기능을 대체하기 위해 사용되는 더미 모듈입니다. 테스트 수행 시 필요한 기능을 임시로 대체하여 테스트를 진행합니다.

    상향식 방식 통합 테스트 driver

    상향식 방식은 최하위 모듈에서부터 제어 모듈로 상향하면서 테스트를 수행하는 방식입니다. 최하위 모듈부터 점진적으로 통합하면서 기능을 검증하고 테스트합니다.

     

    DRIVER (드라이버)

    아직 개발되지 않은 모듈과 통합하여 테스트를 수행할 때, 대상 모듈의 기능을 대체하기 위해 사용되는 모듈입니다. 테스트 수행 시 필요한 기능을 임시로 대체하여 테스트를 진행합니다.

     

    Cluster

    클러스터 테스트는 모듈 간 상호 작용이 많은 복잡한 소프트웨어 시스템에서 통합 테스트를 수행하는 방식입니다. 모듈 간의 종속성과 상호 작용을 중심으로 테스트를 진행합니다.

     

    빅뱅, 상향식, 하향식

     

    통합 테스트 방식 드라이버/스텁 장점 단점 점증 vs 비점증
    빅뱅 통합 테스트 필요 없음 빠른 테스트 수행 가능 결함의 원인 파악 어려움 비점증적
    상향식 통합 테스트 스텁 결함 조기 발견 가능 테스트 일정 관리 어려움 점증적
    하향식 통합 테스트 드라이버 기능 통합 순서 파악 용이 결함 발견이 늦어질 수 있음 점증적

     

    테스트 자동화 도구

    장점 vs 단점

    장점 단점
    시간과 비용 절약 초기 설정과 구성이 복잡할 수 있음
    반복적인 테스트 자동화 모든 유형의 테스트를 자동화하기에 제한이 있을 수 있음
    일관된 결과 얻음 테스트 자동화 도구에 대한 추가 비용 발생
    더 높은 테스트 커버리지 달성 일부 테스트 시나리오의 자동화 어려움
    테스트 재사용성 향상  
    테스트 프로세스 효율성 향상  

    테스트 자동화 도구 유형

    1. 정적 분석 도구 (실행하지 않음)

    - 소스 코드를 분석하여 잠재적인 오류나 결함을 찾는 도구입니다.

    2. 테스트 실행 도구

    - 데이터 주도형 테스트 도구: 테스트 데이터를 기반으로 테스트 케이스를 자동으로 실행하는 도구입니다.

    - 키워드 주도형 테스트 도구: 사용자가 정의한 키워드를 이용하여 테스트 케이스를 작성하고 실행하는 도구입니다.

    3. 성능 테스트 도구

    - 시스템의 성능과 응답 시간을 테스트하는 도구입니다.

    4. 테스트 통제 도구

    - 테스트 수행에 필요한 리소스를 관리하고 테스트 환경을 제어하는 도구입니다.

    5. TEST Harness

    - 테스트를 자동화하기 위해 필요한 드라이버, 스텁, 슈트, 테스트 케이스, 스크립트, 목 오브젝트 등을 포함하는 도구입니다.

    테스트 결과 분석

    소프트웨어 결함: 테스트 수행 중 발견된 오류 또는 결함을 의미합니다.

    에러: 사람에 의한 실수로 인해 발생하는 오류를 의미합니다.

    결함/결점/버그: 소프트웨어에서 발생하는 결함을 의미합니다.

    실패/문제: 소프트웨어가 실행될 때 예상한 결과를 얻지 못하는 상황을 의미합니다.

    728x90
    반응형

    댓글