부하 테스트

부하 테스트(load testing) 또는 하중 시험은 구조물이나 시스템에 요구를 가하고 그 반응을 측정하는 과정이다.
소프트웨어 부하 테스트
[편집]부하 테스트(load testing)[1] 또는 스트레스 테스트라는 용어는 전문 소프트웨어 테스트 커뮤니티에서 다양하게 사용된다. 부하 테스트는 일반적으로 여러 사용자가 동시에 프로그램에 액세스하는 것을 시뮬레이션하여 소프트웨어 프로그램의 예상 사용량을 모델링하는 방식을 의미한다.[2] 따라서 이 테스트는 다중 사용자 시스템, 특히 웹 서버와 같은 클라이언트/서버 모델을 사용하여 구축된 시스템에 가장 관련성이 높다. 그러나 다른 유형의 소프트웨어 시스템도 부하 테스트를 할 수 있다. 예를 들어, 워드 프로세서 또는 그래픽 편집기가 매우 큰 문서를 읽도록 강제할 수 있으며, 금융 패키지가 수년치 데이터를 기반으로 보고서를 생성하도록 강제할 수 있다. 가장 정확한 부하 테스트는 이론적 또는 분석적 모델링을 사용하는 대신 실제 사용을 시뮬레이션한다.
부하 테스트를 통해 실제 고객 행동을 기반으로 웹사이트의 서비스 품질 (QOS) 성능을 측정할 수 있다. 거의 모든 부하 테스트 도구와 프레임워크는 고전적인 부하 테스트 패러다임을 따른다. 고객이 웹사이트를 방문하면 스크립트 레코더가 통신을 기록하고 관련 상호 작용 스크립트를 생성한다. 부하 생성기는 기록된 스크립트를 재생하려고 시도하며, 재생 전에 다른 테스트 매개변수로 수정될 수 있다. 재생 절차에서 하드웨어 및 소프트웨어 통계는 모두 지휘자에 의해 모니터링되고 수집되며, 이러한 통계에는 물리적 서버의 CPU, 메모리, 디스크 IO 및 테스트 대상 시스템 (SUT)의 응답 시간, 처리량 등이 포함된다. 마지막으로 이 모든 통계가 분석되어 부하 테스트 보고서가 생성된다.
부하 및 성능 테스트는 다양한 수의 가상 및 실제 사용자를 대상으로 소프트웨어를 테스트하고 이러한 다른 부하에서 성능 측정값을 모니터링하여 다중 사용자 대상 소프트웨어를 분석한다. 부하 및 성능 테스트는 일반적으로 소프트웨어 시스템이 운영 환경에 배포되기 전에 생산 환경과 동일한 테스트 환경에서 수행된다.
부하 테스트의 목표:
- 시스템이 성능 벤치마크를 충족하는지 확인한다.
- 시스템의 한계점을 파악한다.
- 부하로 인한 다운타임에 제품이 어떻게 반응하는지 테스트한다.
예를 들어, 쇼핑 카트 기능을 갖춘 웹사이트는 다음 활동으로 나뉜 100명의 동시 사용자를 지원해야 한다.
- 25명의 가상 사용자(VUser)가 로그인하여 항목을 탐색한 다음 로그아웃한다.
- 25명의 VUser가 로그인하여 쇼핑 카트에 항목을 추가하고, 체크아웃한 다음 로그아웃한다.
- 25명의 VUser가 로그인하여 이전에 구매한 항목을 반품한 다음 로그아웃한다.
- 25명의 VUser가 후속 활동 없이 로그인만 한다.
테스트 분석가는 다양한 부하 테스트 도구를 사용하여 이러한 VUser와 그 활동을 생성할 수 있다. 테스트가 시작되어 안정 상태에 도달하면 위에서 설명한 100 VUser 부하에서 애플리케이션이 테스트된다. 그런 다음 애플리케이션의 성능을 모니터링하고 캡처할 수 있다.
부하 테스트 계획 또는 테스트 스크립트의 세부 사항은 일반적으로 조직마다 다르다. 예를 들어, 위 글머리 기호 목록에서 첫 번째 항목은 개발된 테스트 계획 또는 스크립트에 따라 25 VUser가 고유 항목, 무작위 항목 또는 선택된 항목 집합을 탐색하는 것을 나타낼 수 있다. 그러나 모든 부하 테스트 계획은 예상되는 최고 워크플로우 및 볼륨 범위에 걸쳐 시스템 성능을 시뮬레이션하려고 시도한다. 부하 테스트 통과 또는 실패 기준(통과/실패 기준) 또한 조직마다 일반적으로 다르다. 허용 가능한 부하 테스트 성능 메트릭을 지정하는 표준은 없다.
일반적인 오해는 부하 테스트 소프트웨어가 회귀 테스트 도구와 같은 기록 및 재생 기능을 제공한다는 것이다. 부하 테스트 도구는 전체 OSI 프로토콜 스택을 분석하는 반면, 대부분의 회귀 테스트 도구는 GUI 성능에 중점을 둔다. 예를 들어, 회귀 테스트 도구는 웹 브라우저에서 버튼의 마우스 클릭을 기록하고 재생하지만, 부하 테스트 도구는 사용자가 버튼을 클릭한 후 웹 브라우저가 보내는 하이퍼텍스트를 보낸다. 다중 사용자 환경에서 부하 테스트 도구는 각 사용자가 고유한 로그인 ID, 암호 등을 가지고 여러 사용자에게 하이퍼텍스트를 보낼 수 있다.
사용 가능한 인기 있는 부하 테스트 도구는 느린 성능의 원인에 대한 통찰력도 제공한다. 느린 시스템 성능의 원인은 다음과 같은 것을 포함하지만 이에 국한되지 않는다.
부하 테스트는 애플리케이션, 시스템 또는 서비스가 서비스 수준 협약 또는 SLA의 적용을 받는 경우 특히 중요하다.
부하 테스트는 정상 부하 조건과 예상되는 최고 부하 조건 모두에서 시스템의 동작을 결정하기 위해 수행된다. 이는 애플리케이션의 최대 작동 용량뿐만 아니라 병목 현상을 식별하고 어떤 요소가 성능 저하를 일으키는지 결정하는 데 도움이 된다. 시스템에 가해지는 부하가 비정상적으로 높거나 최고 부하에서 시스템의 응답을 테스트하기 위해 정상적인 사용 패턴을 초과하여 증가하면 이를 스트레스 테스트라고 한다. 부하는 일반적으로 오류 조건이 예상되는 결과일 정도로 크지만, 활동이 부하 테스트를 중단하고 스트레스 테스트가 되는 명확한 경계는 없다.
"부하 테스트"라는 용어는 특정 시나리오에 대해 동시성 테스트, 소프트웨어 성능 테스트, 신뢰성 테스트, 볼륨 테스트와 종종 동의어로 사용된다. 이 모든 것은 특정 소프트웨어의 사용 적합성을 검증하는 데 사용되는 기능 테스트의 일부가 아닌 비기능 테스트 유형이다.
물리적 부하 테스트
[편집]
많은 종류의 기계, 엔진,[3] 구조물,[4] 및 모터[5]가 부하 테스트를 거친다. 부하는 지정된 안전 작업 부하(SWL), 전체 부하, 또는 가중된 부하 수준일 수 있다. 적용되는 계약, 기술 사양 또는 테스트 방법에 테스트 수행 세부 정보가 포함된다. 기계적 부하 테스트의 목적은 재료, 기초 고정 장치를 포함한 구조물의 모든 구성 요소 부품이 설계된 작업 및 부하에 적합한지 확인하는 것이다.
여러 유형의 부하 테스트가 사용된다.
- 정적 테스트는 지정된 일정한 부하가 지정된 시간 동안 적용될 때를 말한다.
- 동적 테스트는 가변적이거나 움직이는 부하가 적용될 때를 말한다.
- 주기적 테스트는 지정된 주기, 지속 시간 및 조건에 따라 반복적인 부하 및 언로딩으로 구성된다.
영국의 기계류 공급(안전) 규정 1992에 따르면, 장비가 처음 사용되기 전에 부하 테스트를 수행해야 한다. 성능 테스트는 지정된 테스트 방법, 사양 또는 계약에 따라 지정된 시간 동안 안전 작업 부하(SWL) 또는 기타 지정된 부하를 적용한다. 영국의 리프팅 작업 및 리프팅 장비 규정 1998에 따르면, 초기 테스트 이후 주요 부품이 교체되거나, 품목이 한 위치에서 다른 위치로 이동되거나, 유능한 사람이 지시하는 경우 부하 테스트가 필요하다.
자동차 충전 시스템
[편집]부하 테스트는 자동차 배터리의 상태를 평가하는 데 사용될 수 있다. 테스터는 자동차 스타터 모터와 유사한 저항을 가진 큰 저항기와 무부하 및 부하 상태 모두에서 배터리의 출력 전압을 읽는 미터로 구성된다. 테스터를 사용할 때, 먼저 배터리의 개방 회로 전압을 확인한다. 개방 회로 전압이 사양(완전히 충전된 배터리의 경우 12.6볼트) 미만이면 배터리를 먼저 충전한다. 배터리의 개방 회로 전압을 읽은 후 부하를 적용한다. 부하가 적용되면 시동 시 자동차의 시동 모터가 소모할 전류와 거의 동일한 전류를 소모한다. 배터리의 지정된 냉간 시동 전류에 따라 부하 시 전압이 특정 지점 아래로 떨어지면 배터리가 불량한 것이다. 부하 테스트는 또한 주행 중인 자동차에서 자동차의 교류 발전기 출력을 확인하는 데 사용된다.
같이 보기
[편집]각주
[편집]- ↑ Jiang, Zhen Ming; Hassan, Ahmed E. (2015). 《A Survey on Load Testing of Large-Scale Software Systems》. 《IEEE Transactions on Software Engineering》 41 (IEEE). 1091–1118쪽. doi:10.1109/TSE.2015.2445340.
- ↑ Wescott, Bob (2013). 《The Every Computer Performance Book, Chapter 6: Load Testing》. CreateSpace. ISBN 978-1482657753.
- ↑ Harper, David; Devin Martin, Harold Miller, Robert Grimley and Frédéric Greiner (2003), 《Design of the 6C Heavy-Duty Gas Turbine》, ASME Turbo Expo 2003, collocated with the 2003 International Joint Power Generation Conference, 2: Turbo Expo 2003, Atlanta GA: ASME 1., 833–841쪽, ISBN 978-0-7918-3685-9, 2013년 7월 14일에 확인함
- ↑ Raines, Richard; Garnier, Jacques (2004), 《23rd International Conference on Offshore Mechanics and Arctic Engineering, Volume 1, Parts a and B》 1, Vancouver, BC: ASME, 621–631쪽, doi:10.1115/OMAE2004-51343, ISBN 978-0-7918-3743-6, 2013년 7월 14일에 확인함
- ↑ 《DETERMINING ELECTRIC MOTOR LOAD AND EFFICIENCY》 (PDF), DOE/GO-10097-517, US Department of Energy, 2010, ISBN 978-0-9709500-6-2, 2013년 7월 14일에 확인함
외부 링크
[편집]- 웹 사이트 부하 테스트를 위한 실제 세계 모델링 - 스티븐 스플레인
- 부하 테스트란 무엇인가? - 톰 허스턴
- 4가지 유형의 부하 테스트 및 각각의 사용 시기 - 데이비드 부흐
- 성능, 부하, 스트레스 또는 내구성 테스트? 어떤 것을 원하나? - 크리스 존스