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

18. 애플리케이션 통합테스트 - 1과목 소프트웨어 테스트 관리

by 공불러 2024. 3. 28.
728x90
반응형

18. 애플리케이션 통합테스트 - 1과목 소프트웨어 테스트 관리

목차

    결함 관리 도구

    결함 관리 도구란 각 단계별 테스트 수행 후 발생한 경함의 재발 방지를 위해, 유사 결함 발견 시

    테스트 수행 후 발생한 결함을 추적하고 관리할 수 있게 해주는 도구

     

    결함 관리 프로세스

    에러 발견

    에러 등록

    에러 분석

    결함 확정

    결함 할당

    결함 조치

    결함 조치 검토 및 승인

     

    결함 추이 분석 

    중요하지 않은 내용이니, 그렇구나하고 읽어주시면 됩니다.

     

    테스트 완료 후 발견된 결함의 결함 관리 측정 지표의 속성 값들을 분석하고, 향후 애플리케이션의 어떤 모듈 또는 컴포넌트에서 결함이 발생할지를 추정하는 작업

     

    결함 관리 측정 지표

    1. 결함 분포 (Defect Distribution):
      • 이는 시간당 또는 주기적으로 발생한 결함의 분포를 보여줍니다.
      • 이것은 어디에서 결함이 가장 많이 발생하는지, 특정 모듈 또는 기능에 결함이 집중되는지 등을 이해하는 데 도움이 됩니다.
    2. 결함 추세 (Defect Trend):
      • 결함이 시간에 따라 어떻게 변하는지를 보여줍니다.
      • 이는 품질 관리 프로세스의 효율성을 평가하고 결함이 증가하거나 감소하는 경향을 파악하는 데 도움이 됩니다.
    3. 결함 에이징 (Defect Aging):
      • 이는 발견된 결함이 시간이 지남에 따라 어떻게 처리되는지를 보여줍니다.
      • 이것은 처리되지 않은 결함의 수와 기간에 대한 정보를 제공하여 팀이 처리 우선 순위를 조정하고 제품의 품질을 향상시키는 데 도움이 됩니다.

    결함의 식별 ( 읽고만 지나가기)

    단계별 결함 유입 분류

    기획 시 유입되는 결함

    설계 시 유입되는 결함

    코딩 시 유입되는 결함

    테스트 부족으로 유입되는 결함

    결함 심각도별 분류

    1. 치명적 결함 (Critical Defects):
      • 이러한 결함은 제품 또는 시스템의 기능을 심각하게 방해하거나 중단시키는 데 영향을 미칩니다.
      • 이 결함이 발생하면 제품의 핵심 기능이 작동하지 않을 수 있습니다.
    2. 주요 결함 (Major Defects):
      • 주요 결함은 제품 또는 시스템의 기능을 부분적으로 방해하거나 제한하는 데 영향을 미칩니다.
      • 이 결함은 사용자 경험에 부정적인 영향을 줄 수 있지만, 시스템 전체적으로 중단되지는 않습니다.
    3. 보통 결함 (Minor Defects):
      • 보통 결함은 제품 또는 시스템의 기능을 약간 방해하지만, 전반적인 기능에는 큰 영향을 미치지 않습니다.
      • 이러한 결함은 사용자가 작업을 계속할 수 있지만, 일부 기능이 예상대로 작동하지 않을 수 있습니다.
    4. 낮은 결함 (Low Defects):
      • 낮은 결함은 제품 또는 시스템의 기능에 거의 영향을 미치지 않습니다.
      • 이러한 결함은 주로 시각적인 또는 사용성과 관련된 문제로, 사용자가 불편함을 느끼거나 추가 조치가 필요할 수 있습니다.

    결함 우선 순위 (지정하기 나름)

    결정적

    높음

    보통

    낮음

    결함 관리 항목

    결함 관리 도구 종류

    품질 관리 및 소프트웨어 개발 프로세스에서 결함 관리와 소프트웨어 테스트 관리를 효율적으로 수행하기 위해 사용

    1. 소프트웨어 테스트 관리 도구:
      • TestLink: TestLink는 오픈 소스 테스트 관리 도구로, 테스트 계획, 실행, 결과 추적 등의 다양한 기능을 제공합니다. 특히, 테스트 케이스 및 요구 사항 간의 연결을 관리하는 데 특화되어 있습니다.
      • GanttProject: GanttProject는 프로젝트 일정 관리를 위한 무료 오픈 소스 도구로, 일정 작성, 자원 관리, 작업 추적 등을 지원합니다. 이것은 프로젝트의 전반적인 진행 상황을 시각화하는 데 사용될 수 있습니다.
      • OpenProj: OpenProj는 프로젝트 관리를 위한 무료 오픈 소스 소프트웨어로, Gantt 차트, 작업 분배, 자원 할당 등을 포함한 일정 관리 기능을 제공합니다.
      • Redmine: Redmine은 프로젝트 관리 및 이슈 추적을 위한 유연한 웹 기반 도구입니다. 이는 일정 관리, 이슈 추적, 문서 공유, 협업 기능 등을 제공하여 소프트웨어 개발 및 프로젝트 관리에 널리 사용됩니다.
    2. 결함 추적 관리 도구:
      • Mantis: Mantis는 오픈 소스 결함 추적 시스템으로, 결함 보고서, 추적, 할당 및 해결 등을 관리하는 데 사용됩니다. 특히, 소프트웨어 개발 프로세스에서 결함 추적과 관리를 중점적으로 다룹니다.
      • Bugzilla: Bugzilla는 Mozilla 재단에서 개발한 오픈 소스 결함 추적 시스템으로, 결함 보고서, 추적, 검토 및 관리를 위한 다양한 기능을 제공합니다. 이는 큰 규모의 프로젝트에서 널리 사용되는 안정적인 도구 중 하나입니다.
      • Trac: Trac은 오픈 소스 프로젝트 관리 및 결함 추적 시스템으로, Wiki, 버그 추적, 로드맵, 소스 코드 브라우징 등의 기능을 하나의 통합된 환경에서 제공합니다.

     

    테스트 자동화 도구

    테스트 자동화 도구는 소프트웨어 개발 프로세스에서 테스트를 자동화하기 위해 사용되는 도구입니다.

    이러한 도구들은 테스트 케이스의 실행, 결과의 비교, 테스트 데이터의 생성 등을 자동으로 수행하여 개발자 및 품질 관리팀에게 시간과 노력을 절약하고 효율성을 높여줍니다.

    스크립트나 도구를 활용함.

    테스트 자동화 도구의 장단점

    장점

    • 시간과 비용 절감
      • 자동화된 테스트는 반복적이고 일관된 테스트를 수행하여 개발자 및 품질 관리자의 시간을 절약하고 비용을 줄일 수 있습니다. 수동 테스트에 비해 효율성이 크게 향상됩니다.
    • 더 나은 테스트 커버리지
      • 자동화된 테스트는 수동 테스트로는 어려운 특정 조건의 테스트 및 경로를 탐색할 수 있습니다. 이는 테스트 커버리지를 향상시키고 품질을 높이는 데 도움이 됩니다.
    • 일관된 테스트 결과
      • 자동화된 테스트는 항상 동일한 방식으로 실행되므로 일관된 테스트 결과를 제공합니다. 이는 결함을 신속하게 발견하고 해결하는 데 도움이 됩니다.
    • 빠른 피드백
      • 자동화된 테스트는 소스 코드 변경 후에 빠르게 실행되어 개발자에게 신속한 피드백을 제공합니다. 이는 빠른 개발과 수정을 가능하게 합니다.

    단점

    • 도입 비용 및 시간
      • 테스트 자동화 도구의 도입 및 구축은 초기 투자가 필요하며, 이를 위한 시간과 노력이 소요됩니다. 특히, 기존 테스트 케이스를 자동화하는 데 추가 비용이 들 수 있습니다.
    • 유지 보수 비용
    • 테스트 스크립트의 유지 보수는 중요한 고려 사항입니다. 소프트웨어 변경에 따라 테스트 스크립트를 업데이트해야 하며, 이는 추가 비용과 시간이 필요합니다.
    • 학습 곡선
    • 새로운 테스트 자동화 도구를 배우고 스크립트를 작성하는 데 시간이 걸릴 수 있습니다. 이는 팀의 기술력을 향상시켜야 함을 의미합니다.
    • 일부 테스트 케이스에 대한 부적합성
    • 일부 특정 유형의 테스트에 대해서는 자동화가 적합하지 않을 수 있습니다. 특히, UI 변경에 취약하거나 복잡한 시나리오에 대한 자동화는 어려울 수 있습니다.

    따라서 테스트 자동화 도구를 도입할 때는 이러한 장단점을 고려하여 적절한 전략을 수립해야 합니다.

     

    테스트 자동화 도구 유형

    정적 분석 도구

    정적 분석 도구는 소스 코드를 분석하여 잠재적인 버그 또는 코딩 표준 위반을 탐지합니다. 주로 코드 품질 향상 및 버그 예방에 사용됩니다.

    • PMD: PMD는 Java 코드의 정적 분석을 수행하여 코드 품질을 평가하고 잠재적인 버그를 탐지합니다. 코드 복잡성, 코딩 규칙 준수, 중복 코드 식별 등을 검사합니다.
    • SonarQube: SonarQube는 다양한 프로그래밍 언어의 정적 분석을 지원하는 오픈 소스 플랫폼입니다. 코드 품질 및 보안 측면에서 풍부한 보고서를 생성하고 관리자 및 개발자에게 피드백을 제공합니다.
    • Cppcheck: Cppcheck는 C 및 C++ 코드의 정적 분석을 수행하여 잠재적인 버그 및 코딩 표준 위반을 식별합니다. 메모리 누수, 잘못된 포인터 사용 등을 검사합니다.
    • Checkstyle: Checkstyle은 Java 코드의 코딩 규칙을 검사하여 일관성 있는 코딩 스타일을 유지하고 버그를 방지하는 데 사용됩니다.

    테스트 실행 도구

    테스트 실행 도구는 테스트 케이스를 실행하고 테스트 결과를 분석하여 소프트웨어의 기능적 또는 비기능적 동작을 확인합니다.

    • Selenium: Selenium은 웹 애플리케이션을 자동화하기 위한 테스트 도구로, 여러 브라우저 및 플랫폼에서 웹 애플리케이션을 테스트하는 데 사용됩니다.
    • JUnit: JUnit은 Java 프로그래밍 언어를 위한 단위 테스트 도구로, 자바 애플리케이션의 각 단위를 테스트하기 위해 사용됩니다.
    • TestNG: TestNG는 Java 테스트 프레임워크로, JUnit의 대안으로 사용됩니다. 테스트 그룹화, 의존성 관리, 병렬 실행 등의 기능을 제공합니다.

    성능 테스트 도구

    성능 테스트 도구는 시스템의 성능 및 안정성을 평가하기 위해 다양한 부하 조건에서 애플리케이션을 테스트합니다.

    • JMeter: Apache JMeter는 다양한 프로토콜을 통해 웹 응용 프로그램 및 서비스의 성능을 테스트하는 데 사용됩니다. 부하 테스트, 성능 테스트, 스트레스 테스트 등을 수행할 수 있습니다.
    • LoadRunner: Micro Focus LoadRunner은 기업 수준의 성능 테스트 및 부하 테스트 도구로, 여러 프로토콜을 지원하여 다양한 유형의 애플리케이션을 테스트할 수 있습니다.

    테스트 통제 도구

    아래 테스트 도구들은 따로 암기할 필요없이 어떤 도구가 있는지만 읽고 지나가셔도 좋습니다.

    1. 테스트 관리 도구
      • 테스트 관리 도구는 테스트 계획, 테스트 케이스 작성, 실행 및 결과 추적 등의 작업을 관리하는 데 사용됩니다. 이러한 도구는 테스트 실행에 필요한 자원을 할당하고 테스트 진행 상황을 추적하여 테스트 팀이 효율적으로 작업할 수 있도록 지원합니다.
      • 예시: HP ALM (Application Lifecycle Management), Zephyr, TestLink 등
    2. 형상 관리 도구
      • 형상 관리 도구는 소프트웨어 개발 프로젝트에서 소스 코드 및 기타 개발 자산의 변경을 추적하고 관리하는 데 사용됩니다. 이러한 도구는 소스 코드 버전 관리, 브랜치 관리, 변경 내역 추적 등의 기능을 제공하여 개발자들이 협업하고 소프트웨어의 버전을 효율적으로 관리할 수 있도록 지원합니다.
      • 예시: Git, SVN (Subversion), Mercurial 등
    3. 결함 추적/관리 도구
      • 결함 추적/관리 도구는 소프트웨어에서 발생하는 결함을 추적하고 관리하는 데 사용됩니다. 이러한 도구는 결함 보고서 작성, 결함 우선 순위 지정, 결함 수정 상태 추적 등의 기능을 제공하여 팀이 발견된 결함을 효율적으로 관리하고 해결할 수 있도록 지원합니다.
      • 예시: Jira, Bugzilla, Redmine 등

    테스트 장치

    테스트 장치란 애플리케이션 컴포넌트 및 모듈을 테스트 하는 환경의 일부분을 말합니다.

    테스트를 지원하기 위한 코드와 데이터이며, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성 합니다.

    테스트 장치 구성 요소*

    드라이버랑 스텁만 알면 되긴 하지만, 나머지도 개념이 어렵지 않으니, 노란 부분을 주의해서 읽어보세요.

    테스트 장치 구성 설명
    테스트 드라이버
    (Test Driver)
    주로 상향식 테스트하는 테스트 코드 또는 프로그램으로, 테스트를 시작하고 관리하는 주체입니다.

    테스트 드라이버는 하위 모듈을 호출하여 테스트를 수행합니다.
    테스트 스텁
    (Test Stub)
    테스트 중에 필요한 하향식 테스트을 시뮬레이션하는 간단한 코드 또는 프로그램입니다.

    테스트 스텁은 실제 하위 모듈을 호출하여 동작하는 대신, 하위 모듈의 반환 값을 반환하거나 가짜 데이터를 제공하여 상위 모듈을 테스트합니다.
    테스트 슈트
    (Test Suite)
    관련된 테스트 케이스들의 집합으로, 특정 모듈 또는 시스템의 특정 기능을 테스트하기 위해 함께 실행됩니다.

    테스트 슈트는 테스트 실행의 편의성과 효율성을 높이는 데 사용됩니다.
    테스트 케이스
    (Test Case)
    특정 조건에서 테스트 대상 모듈 또는 시스템의 기능을 검증하기 위해 설계된 테스트 항목입니다.

    테스트 케이스에는 테스트 입력, 예상 결과 및 실행 절차가 포함될 수 있습니다.
    테스트 스크립트
    (Test Script)
    자동화된 테스트 실행 절차에 대한 명세

    자동화된 테스트를 수행하기 위해 사용되는 코드 또는 스크립트입니다.

    테스트 스크립트는 특정 테스트 케이스를 실행하고, 예상 결과를 확인하고, 테스트 결과를 기록합니다.
    목 오브젝트
    (Mock Object)
    사용자의 행위를 조건부로 사전에 입력해 두면, 그 상황에 예정된 행위를 수행하는 객체를 말한다.

     

    통합 테스트

    단위 테스트가 씉난 모듈을 통합하는 과정에서 발생할 수 있는 오류를 찾는 테스트 기법

    모듈 간의 정상적인 상호작용이 정상적으로 수행되는지 확인

    수행 방버으로 비점증적 방식(빅뱅), 점증적 방식(상향식, 하향식)이 있음

     

    통합테스트 종류

    통합 테스트는 개별적으로 개발된 소프트웨어 모듈이 결합되어 시스템의 전체 작동을 확인하는 프로세스입니다. 다양한 방법으로 수행될 수 있으며, 그 중에서도 가장 일반적인 통합 테스트 방법은 하향식 통합 테스트, 상향식 통합 테스트, 빅뱅 테스트, 백본 테스트입니다.

    (점진적) 하향식 통합 테스트

    로 상위 수준의 모듈부터 시작하여 점진적으로 하위 수준 모듈을 통합하면서 테스트를 진행합니다.

    이 방법은 소프트웨어 개발 과정에서 사용되는 테스트 장치로는 스텁이 주로 활용됩니다.

    • 사용되는 테스트 장치
      • 스텁 (Stub): 하위 수준의 모듈을 대신하여 상위 모듈을 테스트하는 데 사용됩니다. 스텁은 상위 모듈과 하위 모듈 사이의 의존성을 해결하고, 상위 모듈의 테스트를 가능하게 합니다.
    • 테스트 과정
      1. 상위 수준의 모듈을 통합하여 기능을 확인합니다.
      2. 하위 수준의 모듈은 스텁으로 대체하고 테스트를 진행합니다.
      3. 테스트가 완료되면 하위 수준 모듈을 실제 모듈로 대체합니다.
      4. 이와 같은 과정을 반복하여 전체 시스템이 완성될 때까지 테스트를 진행합니다.

    (점진적) 상향식 통합 테스트

    상향식 통합 테스트는 시스템을 최하위 모듈부터 상위 모듈까지 통합하는 방식입니다. 이 방법은 하위 수준의 모듈을 먼저 통합하고 상위 수준 모듈로 이어가는 방식으로 테스트를 진행합니다.

    이 방법은 소프트웨어 개발 과정에서 사용되는 테스트 장치로는 드라이버가 주로 활용됩니다.

    • 사용되는 테스트 장치
      • 드라이버 (Driver): 상위 수준의 모듈을 테스트하기 위해 하위 수준 모듈을 대신하여 사용됩니다. 드라이버는 상위 모듈과 하위 모듈 사이의 인터페이스 역할을 수행하고, 테스트를 진행합니다.
    • 테스트 과정
      1. 최하위 수준의 모듈부터 테스트를 시작합니다.
      2. 하위 수준 모듈을 통합하여 기능을 확인하고, 필요한 드라이버를 사용하여 상위 수준 모듈의 테스트를 진행합니다.
      3. 이와 같은 과정을 반복하여 전체 시스템이 완성될 때까지 테스트를 진행합니다.

     

    빅뱅 테스트

    빅뱅 테스트는 개발된 모든 모듈이 완료된 후에 시스템 전체를 한꺼번에 통합하여 테스트하는 방식입니다.

    개별 모듈이 독립적으로 개발되고 완료된 후에 테스트가 수행되므로 테스트 장치의 사용이 없을 수 있습니다.

    이 방법은 전체 시스템을 통합하는 단계에서 테스트를 진행하기 때문에 모든 모듈의 상호 작용을 확인할 수 있습니다.

    백본 테스트

    백본 테스트는 시스템의 핵심 기능이나 중요한 기능을 우선적으로 테스트하는 방식입니다. 주로 시스템의 핵심 기능이나 핵심 모듈을 중심으로 테스트가 진행됩니다.

     

    통합 테스트 수행 순서

    1. 통합 테스트 계획서를 검토
    2. 통합 테스트를 수행할 테스트 환경을 준비
    3. 통합 테스트 케이스 및 시나리오를 검토
    4. 통합 모듈 및 인터페이사 요구사항을 충족하는지 테스트를 수행
    5. 통합 테스트 결과를 기록

     

    728x90
    반응형

    댓글