의견.png

"테스트"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
106번째 줄: 106번째 줄:
 
어플리케이션 오류 수정, 비효율 요소 튜닝, 서버 파라미터 조정
 
어플리케이션 오류 수정, 비효율 요소 튜닝, 서버 파라미터 조정
  
*'''6. 성능테스트 반복 수행'''
+
*'''6. 성능테스트 반복 수행'''<ref name="비투엔">비투엔, 〈[https://blog.b2en.com/m/251 [기고] 정보시스템 성능 관리 이야기]〉, 《개인 블로그》, 2017-07-06</ref>
  
 
{{각주}}
 
{{각주}}

2020년 9월 16일 (수) 11:00 판

테스트(test)란 시스템의 성능을 시험하는 것을 말한다. 단위 테스트, 통합 테스트, 사용자 인수 테스트가 있다. 단위 테스트는 개별 시스템의 기능을 테스트하는 것이고, 통합 테스트는 전체 시스템의 상호 작용을 테스트하는 것이고, 사용자 인수 테스트(UAT)는 수요기관 담당자가 개발 결과물을 인수하기 전에 최종 테스트하는 것을 말한다.

개요

테스트란 안정적인 서비스를 위한 안정성 확보, 문제점 및 개선점을 파악한 후 해당사항을 수정하여 성능을 향상, 장애로 인한 데이터 손실, 신뢰도 저하, 추가비용 발생을 미연에 방지, 서버의 최적화를 위해 서버환경 검사를 목표로 한다.[1]

시스템 테스트란 완벽하게 통합된 소프트웨어 제품을 테스트하는 것이다. 일반적으로 소프트웨어는 더 큰 컴퓨터 기반 시스템의 한 요소일 뿐이다. 궁극적으로 소프트웨어는 다른 소프트웨어/하드웨어 시스템과 인터페이스 된다. 시스템 테스트는 컴퓨터의 전체 시스템을 사용하는 유일한 목적의 테스트이다.[2]

소프트웨어 테스트(software test)는 주요 이해관계자들에게 시험 대상 제품 또는 서비스의 품질에 관한 정보를 제공하는 조사 과정이다. 소프트웨어 테스트는 또한 소프트웨어에 대한 객관적이고 독립적인 시각을 제공하여 사업주체가 소프트웨어 구현의 위험성을 올바로 이해하도록 한다. 시험 기술에는 프로그램이나 응용 프로그램을 실행하여 소프트웨어 버그를 찾는 절차를 포함되나 이에 국한되지는 않는다.[3]

특징

테스트 범주

  • 화이트박스 테스트
  • 블랙박스 테스트

테스트 목적

테스트의 종류에는 단위 테스트, 통합 테스트, 사용자 인수 테스트가 있다. 거의 모든 기술 프로세스와 마찬가지로 소프트웨어 테스팅은 일을 해야 하는 미리 정해진 순서를 가지고 있다. 다음 마케팅을 준비하기 위해 새로운 소프트웨어를 완전히 테스트하는 단계이다.

  • 단위 테스트

개별 시스템의 기능을 테스트하는 것이다.

  • 통합 테스트

전체 시스템의 상호 작용을 테스트하는 것이다.

  • 사용자 인수 테스트(UAT, User Acceptance Test)

고객이 개발 결과물을 인수하기 전에 최종 테스트하는 것을 말한다.[2]


테스트 유형

50가지가 넘는 다양항 유형의 시스템 테스트가 있다. 테스터가 사용하는 특정 유형은 여러 변수에 따라 다르다.

  • 테스터가 작동하는 대상

테스터가 사용할 시스템 테스트 유형을 결정하는 주요 요인이다. 대기업에서 사용하는 방법은 중소 규모 회사에서 사용하는 방법과 다르다.

  • 테스트에 사용할 수 있는 시간

궁극적으로 50가지 테스트 유형 모두를 사용할 수 있다. 시간은 종종 소프트웨어 프로젝트와 가장 관련있는 유형만 사용하도록 제한한다.

  • 테스터가 사용할 수 있는 리소스

물론 일부 테스터에게는 테스트 유형을 수행하는데 필요한 리소스가 없다. 예를 들어 대규모 소프트웨어 개발 회사에서 근무하는 테스터인 경우 다른 사람이 이용할 수 없는 값 비싼 자동 테스트 소프트웨어가 있을 수 있다.

  • 소프트웨어 테스터의 교육

사용 가능한 소프트웨어 테스팅의 각 유형에 대한 일정한 학습 곡선이 있다. 관련된 소프트웨어 중 일부를 사용하려면 테스터가이를 사용하는 방법을 배워야 한다.

  • 테스트 예산

돈은 중소 기업 및 개별 소프트웨어 개발자뿐 아니라 대기업을 위한 요소가 된다.[2]

활용

테스트 방법

  • Loop back 테스트

시스템 논리구간 중 특정 지점 이후로 거래가 발생되지 않도록 하는 테스트, 병목 지점을 찾는데 유용하다. Loop Back 코드를 추가해 테스트를 하는 것으로 소프트웨어가 여러 모듈 간에 통합이 되어있으므로 테스트 대상 코드에 바로 리턴하는 Look Back 코드를 추가해 테스트하고자 하는 코드에 대한 성능 테스트를 진행해 성능적인 이슈가 없는지 검증하는 테스트다.[4]

  • Tier 테스트

Tier간의 통신을 재현하여 하위 Tier 이후의 성능을 측정하여 성능 병목 지점을 찾는 테스트이다. Tier 시험은 시스템의 구성이 여러 Tier로 구성되어 있을 때 병목이 발생한다면 어느 Tier에 의해 병목이 발생했는지 알 수 없으므로 Tier간 분리를 해 각 Tier에 병목이 없는지를 검증할 수 있도록 테스트 대상 Tier에 직접 부하를 주어 테스트하는 방법이다.

  • Spike 테스트

모든 동시 단말 사용자가 동시에 거래를 발생시키는 테스트, 해당상황의 시스템을 점검한다. Spike 시험은 특정 기능이 특정 시점에 동시에 사용되며 그로 인해 시스템의 성능은 피크치에 도달할 수 있다. 이러한 기능에 대해서는 정해진 시간 내에 모두 정상적으로 처리되는지 검증하고 시스템은 정상적인 상태를 유지하는지 체크하는 테스트다.

  • 확장성 테스트

물리적 시스템 증설 대수와 시스템 향상 비율이 일정하지 않아 실시하는 테스트, 시스템 확장성 보장 여부를 판단한다. 확장성 시험은 시스템 증설에 정확히 비례해 성능이 증가되지 않으므로 시스템 증설에 따른 성능 증가폭을 측정하기 위한 테스트다. 이 결과는 시스템 확장에 활용할 수 있는 중요한 자료가 된다.

  • 가용성 테스트

장시간 거래를 발생시켜 일반 성능테스트에서 발견되지 않는 시스템 결함을 점검한다.[1] Long Run 테스트라고도 불리는 가용성 시험은 자원 불균형 현상으로 시스템의 성능 저하나 다운 등의 현상이 있는지를 검증하기 위해 오랜 시간 동안 진행하는 성능 테스트다.

시스템 테스트

50가지가 넘는 유형의 시스템 테스트가 있다. 아래는 대형 소프트웨어 개발 회사가 일반적으로 사용하는 시스템 테스트 유형이다.

  • 사용성 테스트

주로 사용자의 응용 프로그램 사용 용이성, 컨트롤 처리의 유연성 및 시스템의 목표 달성 능력에 중점을 둔다.

  • 부하 테스트

소프트웨어 솔루션이 실제 부하에서 작동할 것임을 알기 위해서는 부하 테스트가 필요하다.

  • 회귀 테스트

회귀 테스트는 개발 과정 동안 변경된 사항이 새로운 버그를 유발하지 않았는지 확인하기 위해 수행된 테스트를 포함한다. 또한 시간이 지남에 따라 새로운 소프트웨어 모듈을 추가할 때 오래된 버그가 나타나지 않도록 한다.

  • 복구 테스트

복구 테스트는 소프트웨어 솔루션이 신뢰할 수 있고 가능한 충돌로부터 성공적으로 회수할 수 있음을 입증하기 위해 수행된다.

  • 마이그레이션 테스트

마이그레이션 테스트는 소프트웨어를 이전 시스템 인프라에서 현재 시스템 인프라로 아무런 문제없이 이동할 수 있는지 확인하기 위해 수행된다.

  • 기능 테스트

기능적 완성도 테스트라고도 하는 기능 테스트에는 가능한 누락된 기능을 생각해 보는 것이 포함된다. 테스터는 기능 테스트 중에 제품이 기능을 향상시킬 수 있는 추가 기능 목록을 만들 수 있다.

  • 하드웨어/소프트웨어 테스트

IBM은 하드웨어/소프트웨어 테스팅을 "HW/SW 테스팅"이라고도 한다. 테스터가 시스템 테스트 중에 하드웨어와 소프트웨어 간의 상호작용에 집중할 때이다.[2][4]

테스트 절차

성능테스트는 부하테스트툴을 사용하여 정보시스템의 최대 시간당 처리량(TPS)을 산출한다.

  • 1. 성능테스트 시나리오 작성

현황 분석을 통해 실 사용과 가장 유사한 테스트 시나리오를 구성합니다. 시나리오를 구성하는 대표적인 방법에는 현황분석 인터뷰나 web server의 accesslog를 활용하는 것이 있습니다.

  • 2. 부하모델 설계

가상 사용자수, 부하발생방법(부하 증가 패턴), 부하발생지속시간, think time 등을 정의하여 테스트 스크립트를 작성합니다.

  • 3. 성능테스트 실행

부하테스트툴을 실행시켜 트랜젝션을 발생합니다.

  • 4. 성능테스트 분석

서버 자원 사용율 측정, 테스트 시나리오 별 응답시간 측정, 시나리오 별 시간당 처리량을 측정하여 어플리케이션 성능, 서버 성능을 점검하고, 각 구간별(WEB/WAS/DB)별 성능 검증 및 구간과 구간 사이의 비효율 요소 분석합니다.

  • 5. 결과분석 및 개선

어플리케이션 오류 수정, 비효율 요소 튜닝, 서버 파라미터 조정

  • 6. 성능테스트 반복 수행[5]

각주

  1. 1.0 1.1 ihcho, 〈성능테스트〉, 《개인 블로그》, 2019-12-02
  2. 2.0 2.1 2.2 2.3 testmanager, 〈시스템 테스트란 무엇입니까? 예제를 사용한 유형 및 정의〉, 《티스토리》, 2018-11-23
  3. 소프트웨어 테스트〉, 《위키백과》, 2020-08-16
  4. 4.0 4.1 도서관, 〈소프트웨어 성능 테스트 〉, 《티스토리》, 2018-11-23
  5. 비투엔, 〈[기고 정보시스템 성능 관리 이야기]〉, 《개인 블로그》, 2017-07-06

같이 보기


  의견.png 이 테스트 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.