소프트웨어 부하 테스트

**부하 테스트**(load testing) 또는 스트레스 테스트라는 용어는 전문 소프트웨어 테스트 커뮤니티에서 다양하게 사용된다. 부하 테스트는 일반적으로 여러 사용자가 동시에 프로그램에 액세스하는 것을 시뮬레이션하여 소프트웨어 프로그램의 예상 사용량을 모델링하는 방식을 의미한다. 따라서 이 테스트는 다중 사용자 시스템, 특히 웹 서버와 같은 클라이언트/서버 모델을 사용하여 구축된 시스템에 가장 관련성이 높다. 그러나 다른 유형의 소프트웨어 시스템도 부하 테스트를 할 수 있다. 예를 들어, 워드 프로세서 또는 그래픽 편집기가 매우 큰 문서를 읽도록 강제할 수 있으며, 금융 패키지가 수년치 데이터를 기반으로 보고서를 생성하도록 강제할 수 있다. 가장 정확한 부하 테스트는 이론적 또는 분석적 모델링을 사용하는 대신 실제 사용을 시뮬레이션한다.

부하 테스트를 통해 실제 고객 행동을 기반으로 웹사이트의 서비스 품질 (QOS) 성능을 측정할 수 있다. 거의 모든 부하 테스트 도구와 프레임워크는 고전적인 부하 테스트 패러다임을 따른다. 고객이 웹사이트를 방문하면 스크립트 레코더가 통신을 기록하고 관련 상호 작용 스크립트를 생성한다. 부하 생성기는 기록된 스크립트를 재생하려고 시도하며, 재생 전에 다른 테스트 매개변수로 수정될 수 있다. 재생 절차에서 하드웨어 및 소프트웨어 통계는 모두 지휘자에 의해 모니터링되고 수집되며, 이러한 통계에는 물리적 서버의 CPU, 메모리, 디스크 IO 및 테스트 대상 시스템 (SUT)의 응답 시간, 처리량 등이 포함된다. 마지막으로 이 모든 통계가 분석되어 부하 테스트 보고서가 생성된다.

부하 및 성능 테스트는 다양한 수의 가상 및 실제 사용자를 대상으로 소프트웨어를 테스트하고 이러한 다른 부하에서 성능 측정값을 모니터링하여 다중 사용자 대상 소프트웨어를 분석한다. 부하 및 성능 테스트는 일반적으로 소프트웨어 시스템이 운영 환경에 배포되기 전에 생산 환경과 동일한 테스트 환경에서 수행된다.

부하 테스트의 목표:
* 시스템이 성능 벤치마크를 충족하는지 확인한다.
* 시스템의 한계점을 파악한다.
* 부하로 인한 다운타임에 제품이 어떻게 반응하는지 테스트한다.

예를 들어, 쇼핑 카트 기능을 갖춘 웹사이트는 다음 활동으로 나뉜 100명의 동시 사용자를 지원해야 한다.
* 25명의 가상 사용자(VUser)가 로그인하여 항목을 탐색한 다음 로그아웃한다.
* 25명의 VUser가 로그인하여 쇼핑 카트에 항목을 추가하고, 체크아웃한 다음 로그아웃한다.
* 25명의 VUser가 로그인하여 이전에 구매한 항목을 반품한 다음 로그아웃한다.
* 25명의 VUser가 후속 활동 없이 로그인만 한다.

테스트 분석가는 다양한 부하 테스트 도구를 사용하여 이러한 VUser와 그 활동을 생성할 수 있다. 테스트가 시작되어 안정 상태에 도달하면 위에서 설명한 100 VUser 부하에서 애플리케이션이 테스트된다. 그런 다음 애플리케이션의 성능을 모니터링하고 캡처할 수 있다.

부하 테스트 계획 또는 테스트 스크립트의 세부 사항은 일반적으로 조직마다 다르다. 예를 들어, 위 글머리 기호 목록에서 첫 번째 항목은 개발된 테스트 계획 또는 스크립트에 따라 25 VUser가 고유 항목, 무작위 항목 또는 선택된 항목 집합을 탐색하는 것을 나타낼 수 있다. 그러나 모든 부하 테스트 계획은 예상되는 최고 워크플로우 및 볼륨 범위에 걸쳐 시스템 성능을 시뮬레이션하려고 시도한다. 부하 테스트 통과 또는 실패 기준(통과/실패 기준) 또한 조직마다 일반적으로 다르다. 허용 가능한 부하 테스트 성능 메트릭을 지정하는 표준은 없다.

일반적인 오해는 부하 테스트 소프트웨어가 회귀 테스트 도구와 같은 기록 및 재생 기능을 제공한다는 것이다. 부하 테스트 도구는 전체 OSI 프로토콜 스택을 분석하는 반면, 대부분의 회귀 테스트 도구는 GUI 성능에 중점을 둔다. 예를 들어, 회귀 테스트 도구는 웹 브라우저에서 버튼의 마우스 클릭을 기록하고 재생하지만, 부하 테스트 도구는 사용자가 버튼을 클릭한 후 웹 브라우저가 보내는 하이퍼텍스트를 보낸다. 다중 사용자 환경에서 부하 테스트 도구는 각 사용자가 고유한 로그인 ID, 암호 등을 가지고 여러 사용자에게 하이퍼텍스트를 보낼 수 있다.

사용 가능한 인기 있는 부하 테스트 도구는 느린 성능의 원인에 대한 통찰력도 제공한다. 느린 시스템 성능의 원인은 다음과 같은 것을 포함하지만 이에 국한되지 않는다.
* 애플리케이션 서버 또는 소프트웨어
* 데이터베이스 서버
* 네트워크 – 지연, 혼잡 등
* 클라이언트 측 처리
* 부하 분산 (여러 서버 간)

부하 테스트는 애플리케이션, 시스템 또는 서비스가 서비스 수준 협약 또는 SLA의 적용을 받는 경우 특히 중요하다.

부하 테스트는 정상 부하 조건과 예상되는 최고 부하 조건 모두에서 시스템의 동작을 결정하기 위해 수행된다. 이는 애플리케이션의 최대 작동 용량뿐만 아니라 병목 현상을 식별하고 어떤 요소가 성능 저하를 일으키는지 결정하는 데 도움이 된다. 시스템에 가해지는 부하가 비정상적으로 높거나 최고 부하에서 시스템의 응답을 테스트하기 위해 정상적인 사용 패턴을 초과하여 증가하면 이를 스트레스 테스트라고 한다. 부하는 일반적으로 오류 조건이 예상되는 결과일 정도로 크지만, 활동이 부하 테스트를 중단하고 스트레스 테스트가 되는 명확한 경계는 없다.

"부하 테스트"라는 용어는 특정 시나리오에 대해 동시성 테스트, 소프트웨어 성능 테스트, 신뢰성 테스트, 볼륨 테스트와 종종 동의어로 사용된다. 이 모든 것은 특정 소프트웨어의 사용 적합성을 검증하는 데 사용되는 기능 테스트의 일부가 아닌 비기능 테스트 유형이다.

## 부하 테스트 시 사용자 경험
위 예시에서 피시험 장치 (DUT)가 프로덕션 부하(100 VUser)에 있을 때 대상 애플리케이션을 실행한다. 여기서 대상 애플리케이션의 성능은 부하 시 사용자 경험이 된다. 이는 DUT가 얼마나 빠르게 또는 느리게 반응하는지, 그리고 사용자가 성능을 얼마나 만족하거나 실제로 인식하는지 설명한다.

## 브라우저 수준 vs. 프로토콜 수준 사용자

역사적으로 모든 부하 테스트는 프로토콜 계층에서 동시 상호 작용을 통해 트래픽을 시뮬레이션하는 자동화된 API 테스트(종종 프로토콜 수준 사용자 또는 PLU라고 함)로 수행되었다. 컨테이너와 클라우드 인프라의 발전으로 이제 실제 브라우저(종종 브라우저 수준 사용자 또는 BLU라고 함)로 테스트할 수 있는 옵션이 생겼다. 각 접근 방식은 다른 유형의 애플리케이션에 대해 장점이 있지만, 일반적으로 브라우저 수준 사용자는 웹사이트가 경험할 실제 트래픽에 더 가깝고 더 현실적인 부하 프로필 및 응답 시간 측정을 제공한다. BLU는 확실히 테스트를 실행하는 데 더 비싼 방법이며 모든 유형의 애플리케이션, 특히 웹 브라우저를 통해 액세스할 수 없는 데스크톱 클라이언트 또는 API 기반 애플리케이션과 같은 애플리케이션에서는 작동할 수 없다.

## 부하 테스트 도구
    

## 각주

분류:소프트웨어 테스트