performance testing vs load testing vs stress testing
성능 테스트, 부하 테스트 및 스트레스 테스트의 차이점 – 예제 포함
이 시리즈의 이전 튜토리얼이 최고입니다. 성능 테스트 가이드 초보자를 위해.
소프트웨어 테스트 분야에서는 성능 테스트, 부하 테스트, 스트레스 테스트 등과 같은 용어를 접하게됩니다. 이러한 용어는 종종 동일한 개념으로 오해되고 해석됩니다.
그러나이 세 가지 테스트 유형 간에는 상당한 차이가 있으며 테스터가이를 이해하는 것이 중요합니다.
=> 전체 성능 테스트 자습서 시리즈를 보려면 여기를 클릭하십시오.
이 자습서에서는 이러한 각 테스트 유형에 대해 설명하여 이들 간의 정확한 차이점을 이해합니다.
Windows 10 2018을위한 최고의 무료 방화벽
학습 내용 :
성능 테스트, 부하 테스트 및 스트레스 테스트의 차이점
# 1) 성능 테스트
성능 테스트 란 무엇입니까?
성능 테스트는 특정 상황에서 시스템의 구성 요소가 어떻게 수행되는지 확인하기 위해 수행되는 테스트입니다.
제품의 리소스 사용, 확장 성 및 안정성도이 테스트에서 검증됩니다. 이 테스트는 소프트웨어 제품의 설계 및 아키텍처에서 성능 문제를 해결하는 데 초점을 맞춘 성능 엔지니어링의 하위 집합입니다.
위의 이미지는 우리에게 성능 테스트는 부하 및 스트레스 테스트 모두를위한 수퍼 세트입니다. 성능 테스트에 포함 된 다른 유형의 테스트는 스파이크 테스트, 볼륨 테스트, 내구성 테스트 및 확장 성 테스트 . 따라서 성능 테스트는 기본적으로 매우 광범위한 용어입니다.
성능 테스트 목표 :
성능 테스트의 주요 목표는 시스템의 벤치 마크 동작을 설정하는 것입니다. 성능 테스트 중에 충족되어야하는 업계 정의 벤치 마크가 많이 있습니다.
성능 테스트는 애플리케이션의 결함을 찾는 것을 목표로하지 않습니다. 또한 테스트를 통과하거나 실패하지 않습니다. 오히려 그것은 설정의 중요한 작업을 다룹니다. 애플리케이션에 대한 벤치 마크 및 표준 . 성능 테스트는 매우 정확하게 수행되어야합니다. 애플리케이션 / 시스템 성능에 대한 면밀한 모니터링은 성능 테스트의 주요 특징입니다.
애플리케이션의 벤치 마크와 표준은 속도, 응답 시간, 처리량, 리소스 사용량 및 안정성과 같은 속성 측면에서 설정되어야합니다. 이러한 모든 속성은 성능 테스트에서 테스트됩니다.
예를 들어
예를 들어 '연결 속도 vs. 지연 시간'차트를 통해 애플리케이션 네트워크 성능을 테스트 할 수 있습니다. 지연 시간은 소스에서 대상까지 도달하는 데이터 간의 시간 차이입니다.
70kb 페이지는 28.8kbps 모뎀의 최악의 연결 (대기 시간 = 1000 밀리 초)의 경우로드하는 데 15 초 이상 걸리지 않는 반면, 동일한 크기의 페이지는 256kbps DSL의 평균 연결 (대기 시간 = 100)의 경우 5 초 이내에 나타납니다. 밀리 초).
1.5mbps T1 연결 (대기 시간 = 50 밀리 초)은이 목표를 달성하기 위해 성능 벤치 마크를 1 초로 설정합니다.
다른 예 요청-응답 모델이 될 것입니다. 요청 생성과 응답 확인 사이의 시간 차이가 xms (밀리 초)와 yms의 범위에 있어야한다는 벤치 마크를 설정할 수 있습니다. 여기서 x와 y는 표준 숫자입니다.
성공적인 성능 테스트는 데이터베이스, 네트워크, 소프트웨어, 하드웨어 등과 관련 될 수있는 대부분의 성능 문제를 예측해야합니다.
# 2) 부하 테스트
부하 테스트는 임계 값 한계에 도달 할 때까지 시스템의 부하를 지속적으로 지속적으로 증가시켜 시스템을 테스트하는 것을 의미합니다. 성능 테스트의 하위 집합입니다.
부하 테스트는 시장에서 사용 가능한 적절한 자동화 도구를 사용하여 쉽게 수행 할 수 있습니다. WAPT와 LoadRunner는 부하 테스트를 지원하는 두 가지 유명한 도구입니다. 부하 테스트는 다음과 같은 이름으로도 유명합니다. 볼륨 테스트 과 내구성 테스트 .
그러나 볼륨 테스트는 주로 데이터베이스에 중점을 둡니다. 내구성 테스트 지속적인 시간 동안 상당한 부하를 유지하여 시스템을 테스트합니다.
부하 테스트의 유일한 목적은 시스템의 내구성을 테스트하고 결과를 모니터링하기 위해 처리 할 수있는 가장 큰 작업을 시스템에 할당하는 것입니다. 여기서 흥미로운 사실은 때때로 무부하 상황에서 시스템의 동작을 결정하기 위해 시스템에 빈 작업이 공급된다는 것입니다.
부하 테스트에서 모니터링되는 속성에는 최대 성능, 서버 처리량, 다양한 부하 수준 (중단 임계 값 미만)에서의 응답 시간, H / W 환경의 적절성, 성능에 영향을주지 않고 처리 할 수있는 사용자 애플리케이션 수 등이 있습니다.
부하 테스트 목표 :
부하 테스트의 목표는 다음과 같습니다.
- 버퍼 오버플로, 메모리 누수 및 메모리 관리 오류와 관련된 애플리케이션의 결함 노출 로드 테스트의 결과로 결국 나올 문제에는로드 밸런싱 문제, 대역폭 문제, 기존 시스템의 용량 등이 포함될 수 있습니다.
- 애플리케이션이 향후 예상되는로드를 관리 할 수 있도록 데이터베이스, 하드웨어, 네트워크 등과 같은 애플리케이션의 모든 구성 요소에 대한 상한을 결정합니다.
- 애플리케이션에 대한 SLA를 설정합니다.
예를 들어
한 번에 1000 명의 사용자로 넘쳐날 수있는 애플리케이션의 이메일 기능을 확인해 보겠습니다. 이제 1000 명의 사용자가 다양한 방법으로 이메일 트랜잭션 (읽기, 보내기, 삭제, 전달, 회신)을 실행할 수 있습니다.
사용자 당 시간당 하나의 트랜잭션을 수행하면 시간당 1000 개의 트랜잭션이됩니다. 10 개의 트랜잭션 / 사용자를 시뮬레이션하여 시간당 10000 개의 트랜잭션을 차지하여 이메일 서버를로드 테스트 할 수 있습니다.
부하 테스트의 또 다른 예가 아래 이미지에 나와 있습니다.
위의 이미지는 도구에서 수행 된 부하 테스트를 보여줍니다. JMeter . 이 테스트는 시스템에서 처리 할 수있는 사용자 수를 식별하기 위해 수행됩니다. 이 테스트에서는 부하가 1000 명의 사용자에 도달 할 때까지 매 30 초마다 100 명의 사용자가 추가됩니다. 각 단계는 완료하는 데 30 초가 걸리며 JMeter는 다음 단계를 시작하기 전에 30 초 동안 대기합니다.
로드가 1000 개의 스레드에 도달하면 모든 스레드가 300 초 (5 분) 동안 계속 실행되고 마지막으로 3 초마다 10 개의 스레드가 중지됩니다.
# 3) 스트레스 테스트
스트레스 테스트를 통해 기존 자원에 과잉 작업을 과부하시키는 다양한 활동을 수행하여 시스템을 무너 뜨리는 시도를합니다. 부정적인 테스트 시스템에서 구성 요소를 제거하는 작업도 스트레스 테스트의 일부로 수행됩니다.
또한 ~으로 알려진 피로 테스트 ,이 테스트는 대역폭 용량을 넘어서 테스트하여 애플리케이션의 안정성을 포착해야합니다.
따라서 기본적으로 스트레스 테스트는 최대 부하 및 정상 조건을 넘어서는 애플리케이션의 동작을 평가합니다.
스트레스 테스트의 목적은 시스템의 오류를 확인하고 시스템이 어떻게 정상적으로 복구되는지 모니터링하는 것입니다. 여기서 문제는 테스트를 시작하기 전에 제어 된 환경을 설정하여 가장 예측할 수없는 시나리오에서 반복적으로 시스템의 동작을 정확하게 캡처 할 수 있도록하는 것입니다.
스트레스 테스트의 결과로 결국 나올 문제에는 동기화 문제, 메모리 누수, 경쟁 조건 등이 포함될 수 있습니다. 스트레스 테스트가 사용자 수가 갑자기 증가하는 상황에서 시스템이 어떻게 작동하는지 확인하는 경우 , 스파이크 테스트라고합니다.
스트레스 테스트가 사용자 수의 느린 증가를 통해 일정 기간 동안 시스템의 지속 가능성을 확인하는 것이라면이를 흡수 테스트라고합니다.
스트레스 테스트 목표 :
스트레스 테스트의 목표는 충돌 후 보고서를 분석하여 실패 후 애플리케이션의 동작을 정의하는 것입니다.
가장 큰 문제는 장애 발생 후 시스템이 민감한 데이터의 보안을 손상시키지 않도록하는 것입니다. 성공적인 스트레스 테스트에서 시스템은 가장 끔찍한 고장 후에도 모든 구성 요소와 함께 정상 상태로 돌아옵니다.
예를 들어
예를 들어 OpenOffice.org의 Writer1.1.0과 같은 워드 프로세서는 편지, 프리젠 테이션, 스프레드 시트 등의 개발에 사용됩니다. 스트레스 테스트의 목적은 초과 문자로로드하는 것입니다.
이를 위해 많은 양의 텍스트를 처리하는 임계 값 한계에 도달 할 때까지 데이터 줄을 반복해서 붙여 넣습니다. 문자 크기가 65,535 자에 도달하면 단순히 더 많은 데이터를 받아들이지 않습니다.
Writer 1.1.0에 대한 스트레스 테스트 결과 스트레스로 인해 충돌이 발생하지 않는 결과를 생성하고 상황을 우아하게 처리하여 엄격한 스트레스 조건에서도 응용 프로그램이 올바르게 작동하는지 확인합니다.
7000 명의 갑작스러운 사용자 증가를 통한 스파이크 테스트를 묘사하는 부하 테스트의 또 다른 예는 다음과 같습니다.
FAQ
성능 테스트, 스트레스 테스트 및 부하 테스트에 대해 충분히 논의 했으므로 이제 테스터가 답변을 찾는 몇 가지 관련 자주 묻는 질문을 살펴 보겠습니다.
Q # 1) 부하 테스트와 성능 테스트는 동일합니까?
대답: 이에 대한 답은‘아니오’입니다. 그들은 동일하지 않습니다.
지금까지 성능 테스트와 부하 테스트의 차이점을 명확하게 이해 했어야합니다. 아래 표 요약을 참조하여 성능 및 부하 테스트의 목표, 연구 할 범위 속성, 발견해야 할 문제가 어떻게 다른지 확인할 수 있습니다.
질문 # 2) 부하 테스트를 수행 할 때 동시에 스트레스 테스트를 수행하는 것은 불공정 한 테스트입니까?
대답: 스트레스 테스트와 부하 테스트를 병렬로 수행하는 것이 불공평하기 때문에 많은 소프트웨어 테스트 인터뷰 및 인증 시험에서 일반적인 질문이기도합니다. 대답은‘아니오’입니다. 부하 테스트를 할 때 스트레스 테스트를 동시에하는 것은 불공평하지 않습니다.
어떤 테스트도 불공평하지 않습니다. 테스터로서 귀하의 작업은 문제를 찾는 것입니다. 그러나 소프트웨어 테스트의 현실이 적용될 수 있으며이 상황에서 발견 한 문제는 수정되지 않을 수 있습니다.
Q # 3) 복구 테스트는 성능 테스트의 일부입니까?
대답: 예, 복구 테스트는 성능 테스트로 분류되며 때로는 부하 테스트와 함께 수행됩니다. 에 복구 테스트 , 응용 프로그램이 오류, 충돌, 하드웨어 오류 및 기타 유사한 문제로부터 얼마나 잘 복구 할 수 있는지에 대해 액세스됩니다.
이 활동에서 소프트웨어는 강제로 실패하고 제대로 복구 할 수 있는지 확인합니다. 예를 들어 응용 프로그램이 실행 중일 때 갑자기 시스템을 다시 시작한 다음 응용 프로그램의 데이터 무결성을 확인합니다.
Q # 4) 성능 테스트에 코딩이 필요합니까?
대답: 성능 테스트에서는 고급 코딩 수준을 알 필요가 없습니다. 그러나 프로그래밍에 대한 기본적인 지식이 있으면 추가적인 이점이됩니다.
예를 들어 JMeter를 사용하는 경우 Java의 기본 사항을 아는 것이 좋습니다. 특정 사항을 디버깅하는 데 도움이 될 수 있으며 필요한 경우 자체 스크립트를 작성할 수도 있습니다.
Q # 5) 성능 테스트에서 스파이크 테스트는 무엇입니까?
대답: 스파이크 테스트에서로드는 엄청난 수의 사용자에 의해 갑자기 증가하거나 감소하고 나중에 시스템 동작이 관찰됩니다. 스파이크 테스트는 주로 시스템이 부하의 갑작스러운 변화를 처리 할 수 있는지 확인하기 위해 수행됩니다.
부하 테스트와 스트레스 테스트의 차이점
요약하면 아래 표에서 부하 테스트, 스트레스 테스트 및 성능 테스트의 주요 차이점을 살펴 보겠습니다.
성능 시험 | 부하 테스트 | 스트레스 테스트 | |
---|---|---|---|
도메인 | 부하 및 스트레스 테스트의 상위 집합 | 성능 테스트의 하위 집합입니다. | 성능 테스트의 하위 집합입니다. |
범위 | 매우 넓은 범위. 포함-부하 테스트, 스트레스 테스트, 용량 테스트, 볼륨 테스트, 내구성 테스트, 스파이크 테스트, 확장 성 테스트 및 안정성 테스트 등 | 성능 테스트에 비해 범위가 좁습니다. 볼륨 테스트 및 내구성 테스트를 포함합니다. | 성능 테스트에 비해 범위가 좁습니다. 담금 테스트 및 스파이크 테스트를 포함합니다. |
주요 목표 | 애플리케이션에 대한 벤치 마크 및 표준을 설정합니다. | 시스템의 상한선을 식별하려면 앱의 SLA를 설정하고 시스템이 과부하 볼륨을 처리하는 방법을 확인하십시오. | 과중한 부하에서 시스템이 작동하는 방식과 장애로부터 복구하는 방식을 식별합니다. 기본적으로 예기치 않은 트래픽 급증에 대비하여 앱을 준비합니다. |
부하 제한 | 둘 다 – 휴식 임계 값 미만과 초과. | 휴식의 문턱까지 | 휴식의 한계를 넘어서 |
연구 된 속성 | 리소스 사용량, 안정성, 확장 성, 리소스 사용량, 응답 시간, 처리량, 속도 등 | 다양한 부하 수준에서 최대 성능, 서버 처리량, 응답 시간 (휴식 임계 값 미만), H / W 환경의 적절성, 처리 할 수있는 사용자 앱 수, 부하 분산 요구 사항 등 | 대역폭 용량, 응답 시간 이상의 안정성 (휴식 임계 값 초과), 기타 |
이 테스트 유형을 통해 식별 된 문제 | 런타임 팽창, 최적화 범위, 속도, 지연 시간, 처리량 등과 관련된 문제를 포함한 모든 성능 버그. 기본적으로 – 성능과 관련된 모든 것! | 부하 분산 문제, 대역폭 문제, 시스템 용량 문제, 응답 시간 부족, 처리량 문제 등 | 과부하, 과부하 상황에서의 데이터 손상 문제, 속도 저하, 메모리 누수 등의 보안 허점 |
부하, 스트레스 및 부피 테스트의 차이점
지금까지 우리는 둘 사이의 차이점과 함께 부하 및 스트레스 테스트에 대해 이미 알고 있습니다. 이제 볼륨 테스트가 무엇이며 부하 테스트 및 스트레스 테스트와 어떻게 다른지 살펴 보겠습니다.
볼륨 테스트는 주로 데이터베이스에 중점을 둔 일종의 성능 테스트입니다.
볼륨 테스트에서는 특정 볼륨의 데이터에 대해 시스템이 어떻게 작동하는지 확인합니다. 따라서 데이터베이스는 최대 용량으로 채워지고 응답 시간 및 서버 처리량과 같은 성능 수준이 모니터링됩니다.
매우 간단하게 유지하기 위해 부하, 스트레스 및 볼륨 테스트의 차이점은 다음과 같습니다.
볼륨 테스트 | 부하 테스트 | 스트레스 테스트 |
---|---|---|
엄청난 양의 데이터 | 수많은 사용자 | 너무 많은 사용자, 너무 많은 데이터로 인해 시스템 충돌이 발생합니다. |
결론
이 튜토리얼에서 우리는 성능 테스트, 부하 테스트 및 스트레스 테스트가 서로 어떻게 다른지 그리고 각 테스트 유형의 범위가 무엇인지에 대한 예제를 통해보고 이해했습니다.
또한 스파이크 테스트, 복구 테스트, 볼륨 테스트 등과 같은 성능 테스트에서 많은 범주를 간략하게 살펴보고 이들 각각이 서로 어떻게 다른지 이해했습니다.
이 튜토리얼이 성능, 부하 및 스트레스 테스트의 실질적인 차이점을 이해하는 데 큰 도움이 되었기를 바랍니다.
기능 테스트 대 성능 테스트에 대해 자세히 알아 보려면 다가오는 자습서를 확인하십시오.
=> 완전한 성능 테스트 자습서 시리즈를 보려면 여기를 방문하십시오.