Post

소프트웨어 개발 - 애플리케이션 통합 테스트

#애플리케이션 통합 테스트

결합 관리 도구

단계별 테스트 수행 후 발생한 결함의 재발 방지를 위해 결함을 추적하고 관리하는 도구

유사 결함 발견 시 처리 시간 단축을 위해 결함을 추적하고 관리하는 도구

■ 결함 관리 프로세스

에러 발견 → 에러 등록 → 에러 분석 → 결함 확정 → 결함 할당 → 결함 조치 → 결한 조치 검토 및 승인

■ 결함 (Defect)

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

  • 결함을 제거하지 않으면 소프트웨어 제품이 실패하거나 문제가 발생함
  • 결함 관련 용어
    • 오류 (Error)
    • 결점 (Fault)
    • 버그 (Bug)
    • 고장 (Failure)
    • 문제 (Problem)

■ 결한 심각도별 분류

  • 치명적 결함 (데이터 손실/시스템 충돌)
  • 주요 결함 (기능 장애)
  • 보통 결함 (사소한 기능 오작동)
  • 경미한 결함 (표준 위반, UI 잘림)
  • 단순 결함 (미관상 좋지 않음)

■ 결함 우선 순위

발생한 결함이 얼마나 빠르게 처리되어야 하는지를 결정하는 척도

  • 결함 심각도가 높아도 우선순위가 반드시 높은 것은 아님
  • 애플리케이션의 특성에 따라 우선순위가 결정될 수 있음
  • 결정적 (Critical) : 24시간 안에 즉시 수정, 전체 기능이 동작하지 않음
  • 높음 (High) : 결함으로 인해 다른 기능을 사용할 수 없을 때
  • 보통 (Medium) : 실패가 발생했을 때 올바른 메세지가 출력되지 않는 것과 같은 에러
  • 낮음 (Low) : 디자인에서 사용자 경험을 향상시키기 위해 작은 기능 구현에 대한 요청을 제안하기 위한 우선순위

테스트 자동화 도구

테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현

  • 테스트 시간 단축
  • 인력 투입 비용을 최소화
  • 쉽고 효율적인 테스트 수행

■ 테스트 자동화 도구 장점

  • 반복되는 테스트 데이터 재입력 작업의 자동화
  • 사용자 요구 기능의 일관성 검증에 유리
  • 테스트 결괏값에 대한 객관적인 평가 기준 제공
  • 테스트 결과의 통계 작업과 그래프 등 다양한 표시 형태 제공
  • UI가 없는 서비스의 경우에도 정밀한 테스트 가능

■ 테스트 자동화 도구 단점

  • 도구 도입 후 도구 사용 방법에 대한 교육 및 학습 필요
  • 프로세스 단계별로 적용하기 위한 시간, 비용, 노력이 필요
  • 상용 도구의 경우 고가, 유지 관리 비용이 높아 추가 투자가 필요

■ 정적 분석 도구 (Static Analysis Tools)

애플리케이션을 실행하지 않고 분석하는 방법

  • 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용
  • 테스트를 수행하는 사람이 작성된 소스 코드에 대한 이해가 필요함
  • 자료 흐름이나 논리 흐름을 분석하여 비정상적인 패턴을 찾을 수 있음

■ 테스트 실행 도구 (Test Execution Tools)

테스트를 위해 작성된 스크립트를 실행하는 도구

  • 작성된 스크립트: 특정 데이터와 테스트 수행 방법 포함
  • 데이터 주도 접근 방식
    • 테스트 데이터를 스프레드시트에 저장하고, 이 데이터를 읽고 실행
  • 키워드 주도 접근 방식
    • 테스트를 수행할 동작을 나타내는 키워드와 테스트 데이터를 스프레드시트에 저장

■ 성능 테스트 도구 (Performance Test Tools)

애플리케이션의 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 가상의 사용자를 생성하고 테스트를 수행함으로써 성능 목표를 달성하였는지 확인하는 도구

■ 테스트 통제 도구 (Test Control Tools)

  • 테스트 관리 도구: 테스트 계획 및 관리
  • 형상 관리 도구: 테스트 수행에 필요한 데이터와 도구를 관리
  • 결함 추적/관리 도구: 발생한 결함에 대해 관리하거나 협업을 지원

■ 테스트 장치

컴포넌트 및 모듈을 테스트하는 환경의 일부분

  • 테스트를 지원하기 위한 코드와 데이터
  • 단위 또는 모듈 테스트에 사용하기 위해 코드개발자가 작성함
  • 테스트 장치 구성 요소
    • 테스트 드라이버 (Test Deriver)
    • 테스트 스텁 (Test Stub)
    • 테스트 슈트 (Test suite)
    • 테스트 케이스 (Test Case)
    • 테스트 시나리오 (Test Scenario): 사용자가 시스템을 사용하면서 만나게 되는 상황을 구성한 것
    • 테스트 스크립트 (Test Script): 특정 기능에 대한 상세 절차
    • 목 오브젝트 (Mock Object)

통합 테스트 (Integration Test)

각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 테스트

■ 하향식 통합 테스트 (Top Down Intergration Test)

최상위 모듈부터 하위 모듈들을 통합하면서 테스트

  • ‘깊이-우선’ 또는 ‘너비-우선’ 방식으로 통합
  • 더미 모듈인 스텁(Stub) 개발
  • 장애 위치 파악 쉬움
  • 중요 모듈을 먼저 테스트할 수 있음
  • 많은 스텁이 필요함

■ 상향식 통합 테스트 (Bottom Up Intergration Test)

최하위 레벨의 모듈부터 점진적으로 상위 모듈과 함께 테스트

  • 더미 모듈인 드라이버(Driver) 작성
  • 장애 위치 파악 쉬움
  • 모든 모듈 개발 시간 낭비 필요 없음
  • 중요 모듈들이 마지막에 테스트될 가능성이 높음
This post is licensed under CC BY 4.0 by the author.