소프트웨어 부하 테스트

부하 테스트(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 기반 애플리케이션과 같은 애플리케이션에서는 작동할 수 없다.

부하 테스트 도구


 도구 이름 회사 이름 라이선스 유형 가격 초점 참고아파치 제이미터아파치 소프트웨어 재단아파치 라이선스 2.0로컬무료부하 테스트 및 성능 측정을 위한 자바 데스크톱 애플리케이션.블레이즈미터Perforce Software, Inc클라우드 기반무료 버전, 데모, 유료 플랜, 가격 문의웹사이트, 웹 앱, 모바일, 데이터베이스 및 기타 시나리오8개 지역에서 최대 200,000명의 동시 시뮬레이션 브라우저 사용자로 확장 가능한 부하. 통합 및 기능 테스트에도 사용할 수 있다.블리츠 (2018년 단종)스피렌트 커뮤니케이션즈클라우드 기반평가판 사용 가능웹사이트, 모바일 및 REST API전 세계 여러 지역에서 최대 50,000명의 동시 가상 사용자 시뮬레이션을 허용한다.플러드Tricentis APAC Pty Ltd클라우드 기반무료 플랜, 유료 플랜, 가격 문의브라우저 기반 부하 테스트, API 및 프로토콜 기반 애플리케이션AWS 및 Azure에서 사용 가능한 모든 지역과 온프레미스 배포에서 수백만 명의 동시 사용자로 확장 가능한 부하. 가격은 매달 소비되는 가상 사용자 시간에 따라 결정된다.개틀링Gatling Corp아파치 라이선스 2.0로컬, 클라우드 기반무료 버전, 데모, 유료 플랜, 가격 문의자바 웹 애플리케이션휴대용 HTML 보고서.해머DBGPLv3로컬무료데이터베이스데이터베이스 부하 테스트 및 벤치마킹 도구.로더.io센드그리드클라우드 기반무료 플랜, 유료 플랜, 가격 문의웹 애플리케이션 및 APIHP 로드러너마이크로 포커스로컬, 클라우드 기반무료 커뮤니티 에디션; 기타: 데모, 무료 평가판, 가격 문의주로 많은 수의 테스트(또는 많은 수의 가상 사용자)를 동시에 실행하는 데 사용된다. 단위 및 통합 테스트에도 사용할 수 있다.로드UI (현재 ReadyAPI에 통합됨)스마트베어 소프트웨어EUPL로컬데모 사용 가능주로 웹 서비스에 맞춰진 교차 플랫폼 부하 테스트 도구. soapUI와 통합된다.로커스트오픈 소스MIT 허가서로컬, 클라우드 기반무료, 호스팅 유료 버전 사용 가능정규 코드로 표현된 부하 테스트가 포함된 파이썬 기반 프레임워크로그인 VSILogin VSI, Inc.로컬데모, 가격 문의가상 윈도우 데스크톱 워크로드네오로드네오티스로컬, 클라우드 기반무료 평가판, 데모, 가격 문의웹 및 모바일부하는 로컬 에이전트 또는 클라우드에서 생성될 수 있다.오픈STACYRANOGNU 일반 공중 사용 허가서 2.0로컬무료웹 서버CORBA 기반의 분산 소프트웨어 아키텍처를 활용한다. 윈도우용 OpenSTA 바이너리 사용 가능.파라소프트 SOAtest파라소프트로컬, 클라우드 기반데모, 가격 문의부하 하에서 기능과 성능을 검증하는 성능 테스트 도구. SOAtest 테스트, JUnit, 경량 소켓 기반 구성 요소를 지원한다. 동시성 문제를 감지한다.래셔널 퍼포먼스 테스터IBM로컬, 클라우드 기반가격 문의이클립스 기반의 대규모 성능 테스트 도구로, 주로 서버 기반 애플리케이션의 시스템 응답 시간을 측정하기 위해 대량의 성능 테스트를 실행하는 데 사용된다.시즈오픈 소스 GPLv3 이상로컬무료웹 서버기본 인증, 쿠키, HTTP, HTTPS 및 FTP 프로토콜을 지원한다.실크 퍼포머마이크로 포커스로컬, 클라우드 기반무료 평가판, 가격 문의클라우드 및 로컬 가상 에이전트를 갖춘 애플리케이션 성능 도구. 대부분의 프로토콜 및 애플리케이션을 지원한다. 라이선스.SoapUI스마트베어 소프트웨어EUPL 버전 1.1로컬무료테스트 스튜디오프로그레스 텔레릭로컬무료 평가판, 데모, 유료 플랜많은 수의 사용자가 동시에 방문할 경우 웹사이트가 어떻게 작동하는지 평가한다.충오픈 소스GPL-2.0로컬무료웹 서버, 데이터베이스, XMPPHTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, MQTT 및 Jabber/XMPP 서버를 스트레스 테스트하는 데 사용할 수 있다.비주얼 스튜디오 엔터프라이즈 에디션 (비주얼 스튜디오 2019 이후 사용 중단)마이크로소프트로컬유료 플랜비주얼 스튜디오 엔터프라이즈 에디션에는 개발자가 실제 사용자 부하를 시뮬레이션하기 위한 다양한 구성 조합으로 다양한 테스트(웹, 단위 등)를 실행할 수 있는 부하 테스트 도구가 포함되어 있다. 마이크로소프트는 비주얼 스튜디오 2019 이후 웹 성능 및 부하 테스트 기능이 사용 중단되었음을 발표했다.베게타MIT 허가서로컬무료HTTP 애플리케이션웹로드래드뷰 소프트웨어 주식회사로컬, 클라우드 기반무료 평가판, 데모, 가격 문의웹 및 모바일 애플리케이션 및 API성능 테스트 분석을 위한 웹 대시보드를 포함하는 웹 및 모바일 애플리케이션용 부하 테스트 도구. 클라우드에서도 생성할 수 있는 대규모 부하에 사용된다.

 각주 

분류:소프트웨어 테스트