Performance Testing 2

chapter2 성능 테스트 종류 정리, 어떤 상황에서 필요한가

목적

다양한 타입의 성능 테스트를 배우고 장점과 가치와 잠재적인 단점을 이해한다.

개요

각각의 성능 테스트는 구체적인 문제 영역을 다루고 이점과 위험과 도전을 제공한다. 성능과 관련된 테스팅의 몇몇의 일반적인 타입 또는 카테고리와 관련된 프로젝트의 위험과 이점을 정의와 개요를 설명한다. 이번 장을 통해서 팀내에서 사용되는 성능 테스트 용어의 잦은 오해를 해결할 수 있을것이다.

chapter2 사용법

이 장을 통해 성능과 관련된 테스팅의 다양한 타입을 이해한다. 테스팅의 결과와 걱정, 현재의 위험을 기반으로 두어 주어진 프로젝트에 가치를 더할 수 있는 성능 테스트의 유형을 결정하는데 도움을 줄 것이다.

  • ‘성능 테스팅의 주요 타입’섹션을 통해 특정 우려하는 것과 가장 관련된 테스팅의 타입을 결정하여 많은 정보를 얻고 테스트 타입 사이에 밸런스를 맞춘다.
  • ‘주요 성능 테스트 타입별 이점 요약 지표’섹션을 통해 특정 유형 테스팅의 이점 뿐만 아니라 성능 테스트 타입의 적절히 다루지 못하는 우려사항도 고려해봐라
  • ‘추가 용어와 개념’섹션을 통해 프로젝트의 가치를 더할 수 있는 성능 테스트 타입을 더 알게되고 특정 범주 외에 사람들과 대화를 통해 능력을 향상시킨다.

성능 테스트는 테스트중인 제품의 확장성과 안정성, 속도를 검증하고 결정하기 위한 기술적인 조사라고 정의한다.성능과 관련된 튜닝과 테스팅은 테스트중인 어플리케이션의 성능 목표를 충족시키기 위해 응답시간, 처리량, 리소스 사용 수준 달성과 관련이 있다.

‘성능 테스팅의 주요 타입’

  • 성능 테스트
    • 안정성, 확장성, 속도를 검증 또는 결정
    • 테스트 중인 제품의 안정성, 확장성, 속도, 응답성을 검증, 결정하기 위해 기술적인 조사
  • 부하 테스트
    • 부하 조건이 최대 또는 정상일 때 응용프로그램의 행동을 확인한다.
    • 응용 프로그램이 원하는 성능 목표를 확인할 때 수행된다. 부하 조건이 최대일때 발생한다고 가정하여 중단점을 확인하고 응답 시간과 처리량, 리소스 사용 수준을 측정할 수 있다.
    • 내구성 테스팅은 MTBF(Mean Time Between Failure), MTFT(Mean Time To Failure)를 통해 계산하는데 사용될 수 있다.
  • 스트레스 테스트
    • 부하 조건이 최대 또는 정상을 넘어 푸쉬될때 어플리케이션의 행동을 확인하거나 검증한다.
    • 스트레스 테스팅의 목표는 높은 부하 조건에서의 어플리케이션의 버그를 밝히는 것이다. 버그로는 동기화 이슈, 레이스 컨디션, 메모리 릭 같은것이 포함된다.
    • 스파이크 테스팅은 스트레스 테스팅 중 하위 집합이며, 짧은 시간안에 지속적으로 부하를 늘려 테스트 중인 제품의 성능을 결정하거나 검증하는데 초점을 맞춥니다. ( 순간적으로 사용자 수 늘리기 )
  • 수용량 테스트
    • 주어진 시스템의 트랜잭션이나 유저를 얼마나 많이 지원하는지 결정하고 계속해서 성능 목표를 달성한다.
    • 해당 테스트를 통해 스케일 업을 해야되는지 스케일 아웃을 해야되는지 결정한다.

‘주요 성능 테스트 타입별 이점 요약 지표’

  • 성능 테스트
    • 어플리케이션의 속도와 확정성, 안정성을 결정하여 비즈니스 결정 input을 제공한다.
    • 시스템의 사용자가 성능에 만족하는지 초점을 둔다.
    • 튜닝과 수용력 계획과 최적화 효과를 제공한다.
    • 로드시에 발생하는 기능적 결험을 발견하지 못할수도 있다.
  • 부하 테스트
    • 예상된 최대 부하일 때 필요한 처리량을 결정한다.
    • 하드웨어 환경과 적합한지 결정한다.
    • 로드 밸런서가 적절한지 평가한다.
    • 동시성 문제를 감지한다.
    • 부하중인 기능 오류를 감지한다.
    • 응답 속도에 주로 초점으로 두지 않도록 한다.
    • 결과는 무조건 다른 관련 부하 테스트와 비교하기 위해 사용된다. ~하기위해서사용된다.
  • 스트레스 테스트
    • 시스템의 과부하때문에 데이터가 손상될 지 결정한다.
    • 실패, 오류, 속도 저하 발생 시키기 전에 어플리케이션이 얼마나 많이 부하를 넘는지 추정한다.
    • 장애의 경고를 알려주기 위해 어플리케이션-모니터링 트리거 설정을 허용한다.
    • 얼마나 많은 스트레스가 적용 가치를 아는것은 종종 어렵다.
    • 테스트 환경을 고립시키지 않으면 심각한 중단, 네트워크 장애를 일으킬 가능성이 있다.
  • 수용량 테스트
    • 비즈니스 요구사항을 만족하기 위한 작업 부하를 다룰 수 있는 방법을 제공한다.
    • 수용량 모델 검증 테스트를 만드는건 어렵다.
    • 수용량을 검증하거나 향상시키기 위해 사용할 수 있는 실제 데이터를 제공하고, 예측을 비교하기 위한 다양한 테스트를 수행할 수 있다.

‘추가 용어와 개념’

  • Compenent test
    • 어플리케이션의 아키텍쳐 구성 요소를 타겟으로 성능 테스트를 실시하는 것. 일반적인 구성요소로는 서버, DB, 네트워크, 방화벽, 클라이언트, 저장 기기이다.
  • Investigation (조사)
    • 상품의 질을 올리거나 결정하는 가치를 가질 수 있는 테스트 중인 제품의 안정성, 확장성, 속도와 관련된 정보를 모으는데 기반을 둔 활동이다.
  • Smoke Test
    • 정상적인 부하에서 작업을 수행할 수 있는지 성능 테스트의 초기 실행이다.
  • Unit Test
    • 응용 프로그램의 전체 기존 코드에서 하위 집합인 코드 모듈을 대상으로 하는 테스트다. 특정 함수, 루틴, 객체 등이 포함된다.
  • Validation Test
    • 테스트 중인 제품의 안정성, 확장성, 속도를 추정된 기대치와 비교한다.