티스토리 뷰

ㅈㄱㅈ/ㅊㄴㅅㄴ

테스트 유형

SBP 2025. 4. 28. 20:40
소프트웨어 테스트 유형 및 품질 특성 상세 설명

소프트웨어 테스트 유형 및 품질 특성 상세 설명

소프트웨어 테스트는 다양한 관점에서 시스템을 평가하며, 특히 시스템의 '무엇을' 테스트하는가에 따라 여러 '테스트 유형'으로 분류됩니다. 여기서는 주요 테스트 유형과 소프트웨어 품질 특성에 초점을 맞춰 설명합니다.

테스트 유형 (Test Types) 개요

테스트 유형은 특정 테스트 목적을 달성하기 위해 그룹화된 테스트 활동입니다. 가장 크게 기능 테스트와 비기능 테스트로 나눌 수 있으며, 그 외에도 변경 관련 테스트, 구조 테스트 등으로 분류됩니다.

  • 기능 테스트 (Functional Testing): 시스템 또는 컴포넌트가 수행해야 하는 '무엇'을 테스트합니다. 즉, 명세된 기능 요구사항이 제대로 구현되었는지 확인합니다.
  • 비기능 테스트 (Non-functional Testing): 시스템 또는 컴포넌트가 '어떻게' 동작하는지에 대한 품질 특성(Performance, Reliability, Usability 등)을 테스트합니다. 시스템의 효율성, 사용성, 신뢰성 등을 평가합니다.

아래에서는 비기능 테스트와 관련된 주요 품질 특성 및 이를 검증하기 위한 테스트 유형에 대해 자세히 설명합니다.

ISO 25010 기반의 소프트웨어 품질 특성 (및 관련 테스트 유형)

CSTS 시험에서 자주 언급되는 소프트웨어 품질 특성은 국제 표준인 ISO/IEC 25010 시스템 및 소프트웨어 품질 모델을 기반으로 설명될 수 있습니다.

1. 기능 적합성 (Functional Suitability) - 주로 기능 테스트

설명: 시스템 또는 제품이 명시된 요구사항을 충족하는 기능을 제공하고, 명시되지 않은 요구사항도 충족할 수 있는 잠재적 역량을 가지고 있는지에 대한 정도입니다.

  • 완전성 (Completeness): 명세된 모든 기능이 구현되었는가?
  • 정확성 (Correctness): 기능이 올바른 결과를 제공하는가?
  • 적절성 (Appropriateness): 제공되는 기능이 사용자의 특정 작업이나 목표 달성에 적합한가?

관련 테스트 유형: 주로 기능 테스트, 회귀 테스트, 인수 테스트 등을 통해 검증됩니다. 요구사항을 기반으로 한 블랙박스 테스트 기법이 주로 사용됩니다.

2. 성능 효율성 (Performance Efficiency) - 성능 테스트

설명: 시스템 또는 컴포넌트가 특정 조건 하에서 응답 시간, 처리량, 자원 사용량 측면에서 얼마나 효율적으로 동작하는지에 대한 정도입니다.

  • 시간 응답성 (Time Behaviour): 주어진 조건 하에서 기능 및 태스크 수행 시 응답 시간, 처리 시간, 처리율이 얼마나 적절한가? (응답 속도, 처리량 테스트)
  • 자원 활용도 (Resource Utilization): 기능 수행 시 사용되는 자원(CPU, 메모리, 디스크, 네트워크 대역폭 등)의 양이 얼마나 적절한가?
  • 용량 (Capacity): 최대 부하 상황에서도 성능 목표를 달성할 수 있는 최대 처리 능력은 어느 정도인가? (부하 테스트, 스트레스 테스트)

관련 테스트 유형: 성능 테스트, 부하 테스트, 스트레스 테스트, 안정성 테스트(성능 측면) 등을 통해 검증됩니다.

3. 호환성 (Compatibility) - 호환성 테스트

설명: 둘 이상의 시스템, 제품 또는 컴포넌트가 공통된 환경을 공유하면서 필요한 기능을 수행할 수 있는 정도입니다.

  • 공존성 (Co-existence): 다른 소프트웨어와 같은 환경에서 자원을 공유하면서 충돌 없이 잘 실행될 수 있는가?
  • 상호 운용성 (Interoperability): 둘 이상의 시스템 또는 컴포넌트가 정보를 교환하고 교환된 정보를 활용하여 기능을 수행할 수 있는가? (예: 다른 시스템과의 데이터 연동 테스트)

관련 테스트 유형: 호환성 테스트, 상호 운용성 테스트 등을 통해 검증됩니다. 다양한 운영체제, 브라우저, 하드웨어 구성 등에서 테스트를 수행합니다.

4. 신뢰성 (Reliability) - 신뢰성 테스트

설명: 시스템 또는 컴포넌트가 명시된 조건 하에서 명시된 기간 동안 명시된 기능을 수행할 수 있는 정도입니다. 즉, 얼마나 오류 없이 안정적으로 동작하는가에 대한 측정입니다.

  • 성숙성 (Maturity): 시스템이 정상적인 사용 환경에서 결함으로 인해 장애를 일으킬 가능성이 적은 정도.
  • 가용성 (Availability): 시스템이 사용자가 필요로 할 때 정상적으로 작동할 수 있는 정도 (가동 시간 비율).
  • 오류 허용도 (Fault Tolerance): 시스템 내부 또는 외부의 결함이나 장애 발생 시, 명시된 수준의 성능을 유지하거나 정상적으로 종료될 수 있는 정도.
  • 복구 가능성 (Recoverability): 장애 발생 후 시스템이 데이터 및 기능에 손상 없이 얼마나 효과적이고 효율적으로 복구될 수 있는가?

관련 테스트 유형: 신뢰성 테스트, 복구 테스트, 오류 주입 테스트(Fault Injection Testing), 안정성 테스트(장시간 실행 테스트) 등을 통해 검증됩니다.

5. 보안성 (Security) - 보안 테스트

설명: 정보와 데이터가 인가되지 않은 접근이나 변경으로부터 보호되는 정도입니다. 합법적인 사용자의 접근은 보장하면서 불법적인 접근은 차단하는 능력입니다.

  • 기밀성 (Confidentiality): 인가되지 않은 개인 또는 시스템에게 데이터가 공개되지 않는 정도.
  • 무결성 (Integrity): 시스템 데이터 또는 프로그램이 인가되지 않은 방식으로 변경되거나 삭제되지 않는 정도.
  • 부인 방지 (Non-repudiation): 행동(예: 트랜잭션 수행)이 발생했다는 것을 증명하고, 해당 행동의 주체가 나중에 그 사실을 부인할 수 없도록 하는 능력.
  • 책임성 (Accountability): 개인의 행동을 추적하고 해당 행동의 주체를 고유하게 식별할 수 있는 정도 (로그 기록 등).
  • 인증성 (Authenticity): 주제 또는 자원이 주장된 바와 동일한지 확인할 수 있는 정도. (사용자 인증, 데이터 원본 인증 등)

관련 테스트 유형: 보안 테스트(취약점 분석, 침투 테스트, 권한 테스트 등)를 통해 검증됩니다.

6. 유지보수성 (Maintainability) - 코드 분석 및 검토와 관련 깊음

설명: 시스템이나 컴포넌트가 수정될 수 있는 정도입니다. 오류 수정, 기능 개선 또는 환경 변화에 대한 적응 등을 목적으로 변경될 때 얼마나 효율적이고 효과적으로 수행될 수 있는지에 대한 측정입니다.

  • 모듈성 (Modularity): 시스템이 독립적인 컴포넌트로 구성되어 있어 각 컴포넌트의 변경이 다른 컴포넌트에 미치는 영향이 적은 정도.
  • 재사용성 (Reusability): 기존 컴포넌트가 다른 시스템에서 사용될 수 있는 정도.
  • 수정 용이성 (Modifiability): 시스템을 효과적이고 효율적으로 변경할 수 있는 정도.
  • 테스트 용이성 (Testability): 시스템이나 컴포넌트가 효과적이고 효율적으로 테스트될 수 있는 정도.

관련 활동: 유지보수성은 주로 코드의 설계, 구조, 가독성 등에 영향을 받으므로, 코드 리뷰, 정적 분석, 인스펙션 등과 같은 정적인 테스트 기법과 관련이 깊습니다. 직접적인 실행 테스트보다는 설계 및 코드 품질에 대한 평가가 중요합니다.

7. 이식성 (Portability) - 이식성 테스트

설명: 시스템이나 컴포넌트가 하나의 하드웨어, 소프트웨어 또는 기타 운영 환경에서 다른 환경으로 효과적이고 효율적으로 이전될 수 있는 정도입니다.

  • 적응성 (Adaptability): 다양한 지정된 환경에 얼마나 효과적으로 적응할 수 있는가?
  • 설치 용이성 (Installability): 지정된 환경에서 얼마나 쉽게 설치되거나 제거될 수 있는가?
  • 교체 용이성 (Replaceability): 동일한 환경에서 다른 소프트웨어 컴포넌트로 교체될 수 있는 정도.

관련 테스트 유형: 설치 테스트, 구성 테스트, 마이그레이션 테스트 등을 통해 검증됩니다.

8. 사용성 (Usability) - 사용성 테스트

설명: 명시된 사용자가 명시된 사용 환경에서 시스템이나 제품을 효과적이고 효율적이며 만족스럽게 사용할 수 있는 정도입니다.

  • 인지 용이성 (Appropriateness Recognition): 사용자가 시스템이 특정 작업에 적합하다는 것을 얼마나 쉽게 이해할 수 있는가?
  • 학습 용이성 (Learnability): 사용자가 시스템을 얼마나 쉽게 배우고 사용할 수 있는가?
  • 조작 용이성 (Operability): 사용자가 시스템을 얼마나 쉽게 조작하고 제어할 수 있는가?
  • 사용자 오류 방지 (User Error Protection): 사용자가 실수를 저지르는 것을 얼마나 잘 방지하고, 실수 발생 시 이를 복구하거나 최소화할 수 있도록 돕는가?
  • 심미성 (User Interface Aesthetics): 사용자 인터페이스가 사용자에게 얼마나 만족스러운 외관을 제공하는가?
  • 접근성 (Accessibility): 다양한 특성(예: 장애)을 가진 사용자가 시스템을 사용할 수 있는 정도.

관련 테스트 유형: 사용성 테스트, UI/UX 테스트, 접근성 테스트 등을 통해 검증됩니다. 실제 사용자를 대상으로 한 테스트가 중요합니다.

이러한 다양한 테스트 유형과 품질 특성을 이해하고 적절한 테스트 전략을 수립하는 것이 고품질의 소프트웨어를 개발하는 데 필수적입니다.

'ㅈㄱㅈ > ㅊㄴㅅㄴ' 카테고리의 다른 글

재테스팅, 레그레션 테스팅  (0) 2025.04.28
테스팅 방법 개요  (0) 2025.04.28
테스트 레벨  (0) 2025.04.28
테스트 분류 개요  (0) 2025.04.28
테스트 기본 용어  (0) 2025.04.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함