• 뉴스레터 메인으로
:: IT HOT ISSUE
[ Performance Testing Tool 소개 ]
정부통합전산센터 통합운영환경 운영지원 사업 / 엔키아 김양일 부장


▣ 성능검증

성능 테스트란? "시스템(서비스)이 운영되는 상황에서 일어날 수 있는 여러 가지 조건을 분석하여, 분석된 조건에 최대한 부합되도록 시스템에 가상으로 현상을 발생시켜 시스템의 상태를 확인하는 행위"로 해당 결과를 토대로 시스템의 H/W의 스펙(CPU, Memory)과 서비스 주체인 S/W(파라메터 설정값)를 재 설정하여 서비스의 연속성을 유지하기 위한 노력 중에 하나입니다.


◎ 성능점검 적용시기


일반적으로 분석/설계 단계에서 BMT를 수행하여 해당 결과를 바탕으로 시스템 세팅 후, 테스트 단계에서 성능 테스트를 진행하게 됩니다. 성능 테스트를 통과하게 되면, 서비스를 오픈하게 되고 서비스중에 시스템(어플리케이션 포함)의 변경이 있을 경우에 재 검증을 수행하여 서비스가 원활하게 될 수 있도록 합니다.


성능 점검 적용 시기


BMT(Benchmarking Test) : 성능 테스트와는 달리 실존하는 비교 대상을 두고
하드웨어나 소프트웨어의 성능을 비교 분석하여 평가하는 것



◎ 성능테스트 목적


● 성능 측정 : 성능 관점의 성능테스트를 수행하여 시스템이 운영 전에 적정한 성능을 내는 지 확인
● 성능 결함 도출 : 성능 테스트를 수행하여 시스템 운영 상태에서 나타날 수 있는 문제를 사전에 확인
● 병목 제거 및 튜닝 : 검출된 소프트웨어 결함에 대해 적절한 조치
● 용량 검증/산정 : 운영 시스템의 용량이 Peak시에 업무를 처리할 수 있는지를 확인



◎ 성능테스트 요소


● 성능 : 테스트 조건에서의 어플리케이션의 속도
● 응답시간 : 어플리케이션의 응답시간
● 처리량 : 어플리케이션의 처리량
● 안정성 : 주어진 시간 동안의 안정된 성능
● 자원사용률 : 어플리케이션의 효율적인 자원 사용률



▣ 성능에 영향을 주는 것들

앞서 언급한 성능점검 시기에서 서비스중일 때 성능 테스트를 진행해야하는 사항은 다음과 같습니다.


◎ 독립된 두 개의 서비스가 하나의 서비스로 합쳐졌을 때


● 시스템을 그대로 사용한다고 해서, 기존의 두 시스템의 성능을 유지하는 것은 아닙니다. 다시 성능검증을 하여, H/W 스펙 또는 Application의 파라메터 설정값을 조절해야하는 경우가 생길 수 있습니다. 시스템 설계부터 성능 변화를 위한 기준과 예상값을 추출할 수 있는 체계를 갖추고 있다면 그다지 필요성이 없을 수 있으나, 그렇치 않다면, 무조건 성능점검을 통해서 안정적인 서비스를 위한 점검을 해야합니다.



◎ 평소보다 용량이 큰 파일을 서비스할 경우


● 어떠한 문제가 있는지도 의심을 해야합니다. 사실 서비스의 연속성을 보장하기 위해서는 작은 변화에도 신경을 써야 하겠지만, 현실적으로는 작은 변화에 일일이 성능점검을 한다는 것을 다소 무리가 있을 수 있으나, 통합 테스트가 아니라 단위 테스트라도 진행하여 클라우드 환경에서는 스펙을 증설하여 대비하는것도 좋습니다( 물론 오토 스켈링 환경이라면 H/W스펙은 문제가 없을 듯합니다. )



◎ 웹서버와 WAS서버의 용도를 명확히 구분하여 설계되어야 한다.


● 웹서버는 우리가 알고 있듯이 WAS와 DB서버에 접속을 하지 않아도 서비스가 가능한 컨텐츠를 제공해주는 것이 성능을 고려한 기본적인 설계 지침입니다. 하지만, 웹서버와 WAS서버를 구분하지 않는다면 WAS나 DB서버의 부하 때문에 서비스를 받고자 하는 유저는 접속 조차 하지 못하는 현상을 초래할 수 있습니다.(긴급공지와 같은 것들은 웹서버에서 제공할 수 있도록 하면, 성능부하로 인한 연쇄적인 시스템 다운현상은 막을 수 있습니다.)




▣ 상위 18 개의 성능 테스트 도구 (출처 : www.softwaretestinghelp.com )

다음은 가장 널리 사용하고 있는 웹 애플리케이션 성능 및 부하 용량을 측정하기위한 성능 테스트 도구입니다. 



○ 상위 18 개의 성능 테스트 도구

• WebLOAD
• LoadUI NG Pro
• Apache JMeter
• LoadRunner
• Appvance
• NeoLoad
• LoadComplete
• WAPT
• Loadster
• LoadImpact
• Rational Performance Tester
• Testing Anywhere
• OpenSTA
• QEngine (ManageEngine)
• Loadstorm
• CloudTest
• Httperf


1. WebLOAD


• 설명 :  로드 및 웹 애플리케이션에 대한 성능 테스트 도구입니다. WebLOAD를 사용하면 Ajax, Adobe Flex, .NET, Oracle Forms, HTML5 및 기타 여러 기술을 사용하여 구축된 모든 인터넷 응용 프로그램에서 로드 및 스트레스 테스트를 수행 할 수 있습니다. 클라우드 및 사내 구축 형 시스템에서 로드를 생성 할 수 있습니다. WebLOAD의 강점은 DOM 기반 및 JavaScript와 같은 스크립트 언어의 기능을 사용하여 쉽게 사용할 수 있다는 점입니다. 이 툴은 많은 사용자로드 및 복잡한 시나리오로 대규모 성능 테스트를 지원하고 웹 응용 프로그램의 기능 및 성능에 대한 명확한 분석을 제공합니다. WebLOAD는 전 세계적으로 3500 명의 사용자를 보유하고 있으며 다양한 상을 수상했습니다. 이 도구의 또 다른 장점은 유연한 라이센스 메커니즘과 가격 책정입니다.

• 시스템 요구 사항 : Windows, Linux


2. LoadUI NG Pro


• 설명 : 단지 몇 번의 클릭으로 복잡한 부하 테스트 시나리오를 만듭니다. LoadUINGPro를 사용하면 API에서 실제로드를 쉽게 모델링 할 수 있습니다. LoadUI는 REST, SOAP, JMS, MQTT 및 기타 여러 API 형식을 지원합니다. LoadUI의 사용하기 쉬운 그래픽 인터페이스를 사용하면 새로운 사용자가로드 시나리오를 손쉽게 설정하고 더 많은 경험이있는 사용자에게 고급 스크립팅 기능을 제공 할 수 있습니다.
이 툴을 사용하면 수동으로 테스트를 구성하고 작성하는 것보다 결과를 분석하는데 더 많은 시간을 할애 할 수 있습니다. LoadUI가 서버 성능 데이터보고서 기능을 사용하여 결과를 쉽게 얻을 수 있습니다. 부하 테스트 시나리오를 위해 로컬 또는 전역으로 분산된 로드 에이전트를 설정할 수 있습니다. LoadUINGPro를 사용하면 SoapUI 및 SoapUINGPro에서 기존의 기능 테스트 케이스를 쉽게 재사용 할 수 있습니다.  세 번의 클릭만으로 SoapUINGPro 테스트 케이스를 정교한 성능 테스트를 할 수 있습니다.

• 시스템 요구 사항 : Windows, Linux, Mac OS


3. Apica LoadTest


• 설명 : Apica는 유연한 셀프 서비스 및 전세계 50 개 이상의 위치의 네트워크를 통해, 동시 2명 이상의 사용자를 테스트 할 수는 있는 부하 테스트를 제공합니다. On-Demand 방식으로 테스트하거나 개발 라이프 사이클 전반에 걸쳐 테스팅을 자동화 가능합니다. 파트너쉽 통합과 REST API를 사용하여 기존 Dev 스택에 쉽게 통합됩니다.


4.Apache JMeter


• 설명 : 오픈 소스 부하 테스트 도구로 자바 플랫폼 응용 프로그램입니다. 주로 성능 테스트 도구로 사용되며 테스트 계획과 통합 될 수도 있습니다. 기능 테스트 계획을 부하 테스트 계획에 추가하여 만들 수 있습니다  . 이 툴은 서버 나 네트워크에 로드되어 성능을 확인하고 여러 조건에서 작동하는지 분석 할 수 있는 기능을 제공하고 있습니다. 처음에는 웹 응용 프로그램을 테스트하기 위해 도입되었지만 나중에는 범위가 넓어졌습니다. 서블릿, Perl 스크립트 및 JAVA 객체와 같은 자원의 기능적 성능을 테스트하는 데 유용합니다. 

• 실행환경 : JVM 1.4 이상이 필요.
• 시스템 요구 사항 : Windows, Linux, Mac OS


5. HP LoadRunner


• 설명 : 성능 테스트 도구로 사용할 수있는 HP 제품입니다. 실제로드가 있을 때 시스템의 성능과 결과를 이해하고 결정하는 데 매우 유용합니다. 주요 특징 중 하나는 동시에 수천 명의 사용자를 생성하고 처리 할 수 ​​있다는 것입니다. 이 도구를 사용하면 성능 측면 에서뿐만 아니라 인프라를 기반으로 필요한 모든 정보를 수집 할 수 있습니다. LoadRunner는 다양한 도구로 구성됩니다. 즉, 가상 사용자 생성기, 컨트롤러, 로드 생성기 및 분석.

• 시스템 요구 사항 : Windows, Linux


6. Rational Performance Tester


• 설명 : 사용자와 웹 서비스간의 트랜잭션 프로세스에 대한 데모를 작성합니다. 모든 통계 정보를 수집하고 분석하여 효율성을 높입니다. 이 툴을 사용하여 웹 사이트 또는 서버의 문제점을 즉시 확인하고 수정할 수 있도록 보고서를 제공합니다. 이 툴은 효율적이고 오류가없는 클라우드 컴퓨팅 서비스를 구축 할 때 가장 좋은 옵션이 될 수 있습니다.

• 시스템 요구 사항 : Windows, Linux, AIX


7. NeoLoad


• 설명 : 웹 사이트의 성능을 분석하기 위해 사용되는 툴입니다. 성능 및 최종 결과로 성능 평가를 할 수 있습니다. 이는 웹 응용 프로그램의 성능을 향상시키고 최적화하는 데 도움이됩니다.  웹 사이트 트래픽을 증가시켜 웹 응용 프로그램의 성능을 분석하고 과부하 상태에서 성능을 판단 할 수 있습니다. 응용 프로그램의 용량과 동시에 처리 할 수있는 사용자의 수를 알 수 있습니다. 이 도구는 Netosys라는 프랑스 회사에서 개발했으며 JAVA로 작성되었습니다. 두 가지 언어로 제공됩니다. 영어와 프랑스어.

• 시스템 요구 사항 :  Windows, Linux, Solaris


8. LoadComplete


• 설명 : 간편하고 저렴한 성능 테스트 도구입니다. LoadComplete를 사용하면 웹 사이트 및 웹 응용 프로그램에 대해 실제로드 테스트를 만들고 실행할 수 있습니다. 사용자의 사용 패턴을 기록하고 로컬 컴퓨터 또는 클라우드에서 수백명의 가상 사용자와 함께 동작을 시뮬레이트함으로써 현실적인 부하 테스트를 자동화합니다. LoadComplete는 대규모 로드에서 웹 서버의 성능을 확인하고 견고성을 결정하며, 확장성을 평가하는 데 도움을 줍니다. 또한 인프라 성능, 응용 프로그램 동작 및 최종 사용자 환경에 대한 판단을 하는 정보를 얻는데 도움이 되는 메트릭 및 보고서를 제공합니다.

• 시스템 요구 사항 : Windows XP Professional 및 Windows 7 이상 64 비트


9. WAPT


• 설명 : 웹 사이트 및 인트라넷 응용 프로그램에 대한 성능 테스트 툴이다. 이는 웹 응용 프로그램 또는 웹 관련 인터페이스의 성능 및 출력을 측정하기위한 도구 또는 분석 도구입니다. 다양한 환경 및 다양한 로드 조건에서 웹 응용 프로그램 성능을 테스트 할 수 있습니다. WAPT는 로드 테스트 중에 가상 사용자와 사용자에 대한 자세한 정보를 제공합니다. 이것은 웹 서비스의 성능을 분석하기 위한 가장 비용이 효율적입니다. WAPT는 웹 응용 프로그램을 사용하는 브라우저 및 운영 체제와의 호환성을 테스트 할 수 있습니다. 또한 경우에 따라 Windows 응용 프로그램과의 호환성을 테스트하는 데 사용됩니다.

• 시스템 요구 사항 : Windows


10. Loadster


• 설명 : Loadster는 데스크톱 기반의 고급 HTTP 부하 테스트 도구입니다. 웹 브라우저는 사용하기 쉽고, 기록이 쉬운 스크립트를 기록하는 데 사용할 수 있습니다. GUI를 사용하여 동적 변수로 기본 스크립트를 수정하여 응답을 검증 할 수 있습니다. 네트워크 대역폭을 제어하면 애플리케이션 스트레스 테스트를 위한 대규모 가상 사용자를 시뮬레이션 할 수 있습니다. 분석을 위한 HTML 보고서를 제공합니다. 응용 프로그램의 성능 병목 현상을 식별하는 데 가장 좋습니다.

• 시스템 요구 사항 : Windows 7 / Vista / XP


11. LoadImpact


• 설명 : LoadImpact 주로 클라우드 기반 서비스에 사용되는 부하 테스트 툴입니다. 또한 웹 사이트 최적화 및 모든 웹 응용 프로그램의 작업을 즉석에서 수행하는 데 도움이됩니다. 스트레스와 최대 부하를 찾기 위해 사용자를 시뮬레이트하여 웹 사이트 트래픽을 생성합니다.

• 시스템 요구 사항 : Windows, Linux


12. Testing Anywhere


• 설명 : 웹 사이트, 웹 애플리케이션 또는 다른 객체의 성능을 테스트하기 위해 사용될 수있는 자동 테스트 툴입니다. 많은 개발자와 테스터가 이 툴을 사용하여 웹 애플리케이션의 병목 현상을 찾아 적절히 수정합니다. 그것은 모든 응용 프로그램을 자동으로 테스트 할 수있는 강력한 도구입니다. 이 테스트 툴은 사용자가 자신의 필요에 따라 테스트 기준을 편집 할 수있게 해주는 내장 편집기와 함께 제공됩니다. 현재이 제품에는 25,000 명이 넘는 사용자가 있습니다.

• 시스템 요구 사항 : Windows OS의 모든 버전


13. Appvance


• 설명 : 1회 기록 방법으로 테스트를 통합함으로써 성능, 로드, 호환성, APM 등의 기능 테스트, 속도 및 생산성 향상, 비용 절감, 팀의 작업 및 공동 작업을 위한 기능 테스트를 재사용 할 수 있습니다.  Appvance UTP는 Jenkins, Hudson, Rally, Bamboo 및 Jira와 함께 완벽한 통합을 제공하며 Selenium, JMeter, JUnit, Jython 등 기존 도구와도 호환됩니다. 또한 코드 없이도 응용 프로그램과 스크립트 유형간에 데이터를 전달할 수 있습니다.


14. OpenSTA


• 설명 : 오픈 시스템 테스트 아키텍처를 의미합니다. 이것은 응용 프로그램 개발자가 부하 테스트 및 분석에 사용하는 GUI 기반 성능 툴입니다. 이것은 다른 모든 성능 테스트 툴 중 복잡합니다. 과거에 입증 된 기능을 갖추고 있으며 현재의 도구 세트는 스크립트 된 HTTP 및 HTTPS에 대한 부하 테스트 및 분석을 수행 할 수 있습니다. 테스트를 성공적으로 수행하기 위해 다양한 테스트를 통해 결과 및 기타 통계가 수집됩니다. 이러한 데이터와 결과는 나중에 보고서 작성을 위해 소프트웨어로 내보낼 수 있습니다. 이것은 무료 테스트 도구이며 GNU GPL로 배포되며 영원히 무료로 제공됩니다. 이 도구는 원래 Quotium에 의해 인수 된 Cyrano에 의해 개발되었습니다.

• 시스템 요구 사항 : Windows


15. QEngine (ManageEngine)


• 설명 : QEngine (ManageEngine의)는 성능 테스트 및 웹 응용 프로그램의 부하 테스트에서 돕는 가장 일반적이고 사용하기 쉬운 자동화 된 테스트 도구입니다. 많은 개발자들은 자신의 웹 서비스나 웹 사이트에서 누출을 발견하는 데 가장 간단하고 쉬운 도구라고 생각합니다. 이 테스트 도구의 가장 중요한 주요 기능은 지리적 위치에 관계없이 웹 서비스를 원격 테스트 할 수 있다는 것입니다. QEngine (ManageEngine)은 기능 테스트, 호환성 테스트, 스트레스 테스트, 로드 테스트 및 회귀 테스트와 같은 다른 테스트 옵션도 제공합니다. 이 자동화 된 테스팅 툴은 사용자가 최대로 로드하는 동안 성능을 잘 분석 할 수 있도록 시뮬레이션 할 수있는 용량을 갖추고 있습니다. 이것은 온라인 사용자가 사용할 수있는 무료 소프트웨어입니다.

• 시스템 요구 사항 : Windows, Linux


16. Loadstorm


• 설명 : Loadstorm는 가장 저렴한 성능 및 부하 테스트 툴입니다. 여기에는 자체 테스트 계획, 테스트 기준 및 테스트 시나리오를 생성 할 수 있는 옵션이 있습니다. 웹 사이트 트래픽을 생성하여 최대 50,000 명의 동시 사용자를 생성하여 테스트를 수행 할 수 있습니다. 이 툴을 통해 값 비싼 모든 성능 테스트 도구를 끝낼 수 있습니다. 이 툴에는 클라우드 인프라가 사용되므로 초당 엄청난 양의 요청을 보낼 수 있습니다. 이 소프트웨어에는 전세계에 수천 개의 서버가 있습니다. 가장 낮은 비용의 클라우드 부하 테스트 도구로 알려져 있습니다. 이 툴을 사용하기 위한 스크립팅 지식이 필요하지 않습니다. 오류율, 평균 응답 시간 및 사용자 수와 같은 다양한 메트릭의 성능을 측정하는 다양한 그래프 및 보고서가 제공됩니다. 이 툴은 무료로 제공되지만 프리미엄 계정에는 추가 기능이 제공됩니다.

• 시스템 요구 사항 : Windows


17. CloudTest


• 설명 : 웹 사이트, 모바일 앱, API 및 더 많은 어플리케이션의 성능 테스트를 지원하는 툴입니다. 사용자 또는 개발자는 클라우드 플랫폼을 가상 테스트 랩으로 사용할 수 있습니다. 개발자는 이 CloudTest 툴을 통해 효율적인 비용으로 클라우드 플랫폼에서 성능 또는 부하 테스트를 수행 할 수 있습니다. 이 CloudTest는 여러 사용자가 동시에 웹 사이트를 사용할 수 있도록합니다. 그것은 또한 스트레스와 과부하를 통해서 실제 성능을 알기 위해 웹 사이트의 트래픽을 증가시킵니다. 무료 서비스가 아니며 가격은 시간당 요구되는 로드 인젝터 기계의 수에 따라 다릅니다. 동시 사용자가 100 명인 평가판을 무료로 사용할 수 있습니다.

• 시스템 요구 사항 : Windows, Linux, Mac OS


18. Httperf


• 설명 : 웹 서비스 및 웹 애플리케이션의 성능을 분석하기 위한 고성능의 테스트 툴입니다. 이것은 주로 HTTP 서버와 성능을 테스트하는 데 사용됩니다. 이 테스트 도구의 주요 목적은 특정 서버에서 생성 된 응답 수를 계산하는 것입니다. 이렇게하면 서버의 전체 성능을 요약하는데 도움이 되는 HTTP GET 요청이 서버에서 생성됩니다. 이 툴을 통해 각 서버에서 응답이 전송되는 속도를 결정할 수 있으므로 시스템의 효율성을 계산할 수 있습니다. 서버 과부하를 주고 HTTP / 1.1 프로토콜을 지원하며 새로운 작업 부하와의 호환성이 성능 테스트 도구의 세 가지 핵심 기능입니다. 

맨위로 가기 버튼