이 섹션에서는 성능 테스트, 성능 테스트가 필요한 이유, 성능 테스트 유형 및 성능 테스트 프로세스에 대해 알아봅니다.
이 섹션에서 이해할 주제는 다음과 같습니다.
성능 테스트란 무엇입니까?
비기능 테스트에서 가장 중요한 부분입니다.
일부 로드를 적용하여 애플리케이션의 동작을 확인하는 것을 성능 테스트라고 합니다.
일반적으로 이 테스트는 서버가 사용자의 요청에 얼마나 빨리 응답하는지 정의합니다.
애플리케이션에 대한 성능 테스트를 수행하는 동안 다음과 같은 다양한 요소에 집중할 것입니다. 응답 시간, 로드 및 안정성 응용 프로그램의.
응답 시간: 응답 시간은 서버가 클라이언트의 요청에 응답하는 데 걸리는 시간입니다.
짐: 여기서 Load는 다음을 의미합니다. N-번호 애플리케이션을 동시에 사용하거나 한 번에 서버에 요청을 보내는 사용자의 수입니다.
안정: 안정성 요소의 경우 N명의 사용자가 특정 시간 동안 동시에 애플리케이션을 사용할 때라고 말할 수 있습니다.
성능 테스트를 언제 사용합니까?
소프트웨어가 안정화되고 프로덕션으로 이동되면 성능 테스트를 수행할 예정이며, 여러 사용자가 동시에 액세스할 수 있으므로 이러한 이유로 일부 성능 문제가 발생할 수 있습니다. 이러한 성능 문제를 방지하기 위해 테스터는 한 차례의 성능 테스트를 수행합니다.
비기능 테스트이므로 항상 성능 테스트를 사용한다는 의미는 아니므로 애플리케이션이 기능적으로 안정적일 때만 성능 테스트를 진행합니다.
참고: 성능 테스트는 비용이 많이 들고 정확한 결과를 유지할 수 없기 때문에 수동으로 수행할 수 없습니다.
성능 테스트 유형
성능 테스트 유형은 다음과 같습니다.
자바 반환 배열
완전한 이해를 돕기 위해 하나씩 논의해 보겠습니다. 로드, 스트레스, 확장성, 그리고 안정 성능 시험.
부하 테스트
부하 테스트는 원하는 부하보다 작거나 같은 일부 부하를 적용하여 애플리케이션의 성능을 확인하는 데 사용되며 이를 부하 테스트라고 합니다.
예를 들어: 아래 이미지에서, 사용자 1000명 는 원하는 하중 , 고객이 제공한 것, 그리고 3/초 은 목표 로드 테스트를 수행하는 동안 우리가 달성하고 싶은 것입니다.
스트레스 테스트
스트레스 테스트란 원하는 부하보다 큰 부하를 가하여 애플리케이션의 동작을 확인하는 테스트입니다.
예를 들어: 위의 예를 사용하여 원하는 로드를 1000명에서 1100명의 사용자로 늘렸다면 목표는 초당 4개입니다. 이 시나리오에서 스트레스 테스트를 수행하는 동안 로드가 실제 원하는 로드보다 크므로(100 이상) 통과합니다.
확장성 테스트
특정 규모(사용자 없음)에서 부하를 늘리거나 줄여 애플리케이션의 성능을 확인하는 것을 확장성 테스트 . 상향 확장성 및 하향 확장성 테스트를 확장성 테스트라고 합니다.
확장성 테스트는 다음과 같이 두 부분으로 나뉩니다.
VLC를 사용하여 YouTube 동영상 다운로드
상향 확장성 테스트
우리가 테스트하는 곳은 특정 규모의 사용자 수 늘리기 충돌 지점을 얻을 때까지. 우리는 애플리케이션의 최대 용량을 찾기 위해 상향 확장성 테스트를 사용할 것입니다.
하향 확장성 테스트
하향 확장성 테스트는 부하 테스트를 통과하지 못한 경우 사용되며, 이후 시작됩니다. 아니오를 줄입니다. 특정 간격의 사용자 수 목표가 달성될 때까지. 병목 현상(버그)을 쉽게 식별할 수 있도록 합니다.
안정성 테스트
애플리케이션의 성능을 확인하는 방법 특정 기간 동안 하중을 가하는 것 로 알려져있다 안정성 테스트 .
성능 테스트 예시
한 가지 예를 들어 보겠습니다. 원하는 로드가 1000명 미만이거나 사용자 1000명과 같은 애플리케이션의 동작을 테스트합니다. .
아래 이미지에서 우리는 100까지 확인하기 위해 사용자가 지속적으로 증가하고 있습니다. 최대 하중 ,라고도 함 상향 확장성 테스트 .
1200 → 3.5초: [원하는 부하보다 작거나 같지 않기 때문에 실패하다 ]
1300 → 4초: [원하는 하중보다 작거나 같지 않습니다. 즉., 실패하다 ]
1400 → 충돌
참고 1: 용량 및 흡수 테스트는 테스트 유형이지만 성능 테스트는 아닙니다.
볼륨 테스트
볼륨 테스팅은 테스팅으로, 데이터 측면에서 막대한 양의 로드를 삽입하여 애플리케이션의 동작을 확인하는 데 도움이 되는 것을 볼륨 테스팅이라고 하며, 여기서는 사용자 수보다 데이터 속도 수에 중점을 두겠습니다. .
노트 2:
볼륨은 용량이고 로드는 수량입니다. 즉, 로드 테스트는 아니요를 의미합니다. 사용자 수, 볼륨 테스트는 데이터의 양을 의미합니다.
담금 테스트
이러한 유형의 테스트에서는 오랜 시간 동안 지원되지 않는 환경에서 애플리케이션의 동작을 확인합니다. 이를 흡수 테스트라고 합니다.
일반적으로 흡수 테스트는 서버나 환경이 지원되지 않는다는 것을 이미 알고 있기 때문에 부정적인 유형의 테스트입니다.
성능 테스트 프로세스
다음과 같은 이유로 성능 테스트를 수동으로 수행할 수 없습니다.
- 우리에게는 많은 리소스가 필요하며 비용이 더 많이 드는 접근 방식이 되었습니다.
- 그리고 응답 시간을 수동으로 추적하면 정확성을 유지할 수 없습니다.
성능 테스트 프로세스는 다음 단계로 완료됩니다.
- 성능 시나리오 식별
- 성능 테스트 스크립트 계획 및 설계
- 테스트 환경 구성 및 부하 분산
- 테스트 스크립트 실행
- 결과
- 분석결과
- 병목 현상 식별
- 테스트 재실행
우리가 수행한다면 긍정적인 흐름 성능 테스트 프로세스 중 아래 프로세스를 따를 수 있습니다.
성능 시나리오 식별
먼저, 아래 요소를 기반으로 성능 시나리오를 식별합니다.
가장 일반적인 시나리오: 이는 일반적으로 사용되는 시나리오를 기반으로 성능 시나리오를 찾을 수 있음을 의미합니다. Gmail 애플리케이션; 우리는 공연할 것이다 로그인, 받은 편지함, 항목 보내기, 메일 작성 및 로그아웃 .
가장 중요한 시나리오: 중요한 시나리오는 정기적으로 사용되며 Gmail 애플리케이션과 같은 비즈니스에 중요함을 의미합니다. 로그인, 작성, 받은 편지함 및 로그아웃 .
대규모 데이터 트랜잭션: 거대한 데이터가 있다는 것은 n명의 사용자가 동시에 애플리케이션을 사용한다는 것을 의미합니다.
성능 시나리오를 파악한 후 다음 단계로 넘어갑니다.
성능 테스트 스크립트 계획 및 설계
이 단계에서는 테스트 엔지니어 머신에 도구를 설치하고 테스트 서버에 액세스한 다음 테스트 시나리오에 따라 일부 스크립트를 작성하고 도구를 실행합니다.
스크립트 작성이 완료되면 다음 단계로 넘어갑니다.
테스트 환경 구성 및 부하 분산
테스트 스크립트를 작성한 후 실행에 앞서 테스트 환경을 마련해 드립니다. 또한 '사용 패턴'에 따라 도구, 기타 리소스를 관리하고 부하를 분산시키거나 지속 시간과 안정성을 언급합니다.
테스트 스크립트 실행
로드 분산이 완료되면 테스트 스크립트를 실행, 검증 및 모니터링합니다.
결과
테스트 스크립트를 실행한 후 테스트 결과를 받게 됩니다. 그리고 주어진 응답 시간 내에 결과가 목표를 달성했는지 확인하고, 응답 시간은 최대, 평균, 최소가 될 수 있습니다.
if 문 자바
응답이 필요한 시간 응답을 충족하지 못하는 경우 다음 단계로 이동합니다. 음의 흐름 여기서는 아래 단계를 수행합니다.
분석결과
먼저, 테스트 결과가 응답시간에 부합하는지 분석해 보겠습니다.
병목 현상 식별
그 후, 우리는 병목 현상(버그 또는 성능 문제 ). 그리고 다음과 같은 측면으로 인해 병목 현상이 발생할 수 있습니다. 코드 문제, 하드웨어 문제(하드 디스크, RAM 프로세서), 네트워크 문제, 그리고 소프트웨어 문제(운영 체제) . 그리고 병목 현상을 찾아낸 후, 튜닝(수정 또는 조정) 이 병목 현상을 해결하려면
테스트 재실행
병목 현상을 수정한 후 테스트 스크립트를 다시 실행하고 필요한 목표를 충족하는지 여부를 결과를 확인합니다.
성능 테스트 중 문제가 발생함
애플리케이션에 대한 성능 테스트를 수행하는 동안 몇 가지 문제가 발생할 수 있으며 이러한 문제를 성능 문제 .
성능 문제는 다음과 같습니다.
응답 시간 문제
응답 시간은 서버가 클라이언트의 요청에 얼마나 빨리 응답하는지를 의미합니다. 사용자의 요청이 지정된 응답 시간 내에 완료되지 않으면 사용자는 특정 소프트웨어나 애플리케이션에 대한 관심을 잃을 수도 있습니다. 그렇기 때문에 애플리케이션이나 소프트웨어는 사용자의 요청에 신속하게 응답하기 위해 완벽한 응답 시간을 가져야 합니다.
확장성 문제
확장성 문제는 애플리케이션이 n명의 사용자와 예상되는 사용자 요청을 동시에 처리할 수 없을 때 발생합니다. 그래서 우리는 할 것입니다 상향 확장성 테스트 (애플리케이션의 최대 용량을 확인하세요) 그리고 하향 확장성 테스트 (예상시간과 실제시간이 일치하지 않는 경우)
병목
병목 현상은 응용 프로그램이 단일 구성 요소에 의해 제한되어 시스템 성능에 나쁜 영향을 미칠 때 발생하는 비공식적인 버그 이름입니다.
병목 현상의 주요 원인은 다음과 같습니다. 소프트웨어 문제(운영 체제 관련 문제), 하드웨어 문제(하드 디스크, RAM 및 프로세서 관련 문제), 그리고 코딩 문제, 등.
다음은 가장 일반적인 성능 병목 현상입니다.
- 메모리 활용도
- 디스크 사용량
- CPU 활용도
- 운영 체제 제한 사항
- 네트워크 활용도
속도 문제
애플리케이션에 대한 성능 테스트를 수행할 때 애플리케이션의 속도가 느리면 애플리케이션에 대한 사용자의 관심을 잃을 수 있으므로 사용자의 관심과 관심을 끌기 위해 애플리케이션의 속도가 빨라야 합니다.
성능 테스트 도구
우리는 시장에서 사용할 수 있는 다양한 유형의 성능 테스트 도구를 보유하고 있으며 일부는 상용 도구와 오픈 소스 도구입니다.
상용 도구: LoadRunner[HP], WebLOAD, NeoLoad
오픈 소스 도구: JMeter
로드러너
이는 광범위한 프로토콜, 기술 수 및 응용 프로그램 환경에 대한 성능 테스트를 지원하는 데 사용되는 가장 강력한 성능 테스트 도구 중 하나입니다.
성능 문제의 가장 일반적인 원인을 신속하게 식별합니다. 또한 애플리케이션 확장성과 용량을 정확하게 예측합니다.
JMeter
Apache JMeter 소프트웨어는 기능 테스트 동작을 로드하고 성능을 측정하도록 설계된 완전한 Java 애플리케이션인 오픈 소스 도구입니다.
일반적으로 웹 애플리케이션 테스트용으로 설계되었지만 이제는 다른 테스트 기능으로도 확장되었습니다.
Apache JMeter는 정적 및 동적 리소스와 동적 웹 애플리케이션의 성능을 테스트하는 데 사용됩니다.
서버, 네트워크 또는 개체, 서버 그룹의 과도한 로드를 재현하여 강도를 테스트하거나 다양한 로드 유형에서 전반적인 성능을 분석하는 데 사용할 수 있습니다.
웹로드
부하 테스트, 성능 테스트 및 스트레스 테스트 웹 애플리케이션을 테스트하는 데 사용되는 WebLOAD 테스트 도구입니다.
WebLOAD 도구는 성능, 확장성 및 무결성을 웹 및 모바일 애플리케이션 검증을 위한 단일 프로세스로 결합합니다.
네오로드
Neotys는 NeoLoad라는 테스트 도구를 개발합니다. NeoLoad는 성능 테스트 시나리오를 테스트하는 데 사용됩니다. NeoLoad의 도움으로 우리는 웹과 모바일 앱 개발 과정에서 병목 지점을 찾을 수 있습니다.
NeoLoad 테스트 도구는 기존 도구에 비해 더 빠릅니다.
그 외에도 다른 도구는 다음과 같습니다. 전기 부하, 웹 스트레스 도구, LoadUI Pro, SresStimulus, LoadView, LoadNinja 및 RedLine13, 이는 소프트웨어나 애플리케이션의 성능을 테스트하는 데 도움이 됩니다.
C의 2차원 배열 프로그램