Python용 Azure Load Testing 클라이언트 라이브러리 - 버전 1.0.0
Azure Load Testing은 Azure Load Testing 서비스와 기본적으로 상호 작용할 수 있는 Python의 클라이언트 라이브러리를 사용자에게 제공합니다. Azure Load Testing은 대규모 부하를 생성할 수 있는 완전 관리형 부하 테스트 서비스입니다. 서비스는 호스팅되는 위치에 관계없이 애플리케이션에 대한 트래픽을 시뮬레이션합니다. 개발자, 테스터 및 QA(품질 보증) 엔지니어는 이를 사용하여 애플리케이션 성능, 확장성 또는 용량을 최적화할 수 있습니다.
설명서
시작하는 데 도움이 되는 다양한 설명서를 사용할 수 있습니다.
시작
패키지 설치
python -m pip install azure-developer-loadtesting
필수 조건
- 이 패키지를 사용하려면 Python 3.7 이상이 필요합니다.
- 이 패키지를 사용하려면 Azure 구독 이 필요합니다.
- 기존 Azure 개발자 LoadTesting 인스턴스입니다.
Azure Active Directory 자격 증명을 사용하여 만들기
AAD(Azure Active Directory) 토큰 자격 증명을 사용하려면 azure-identity 라이브러리에서 가져온 원하는 자격 증명 유형의 인스턴스를 제공합니다.
AAD를 사용하여 인증하려면 먼저 pip 설치를 수행해야 합니다. azure-identity
설치 후 azure.identity에서 사용할 자격 증명 유형을 선택할 수 있습니다.
예를 들어 Azure CLI az login
명령을 통해 로그인하면 DefaultAzureCredential 이 해당 사용자로 인증됩니다.
반환된 토큰 자격 증명을 사용하여 클라이언트를 인증합니다.
클라이언트 만들기
Azure Developer LoadTesting SDK에는 '관리' 및 'test_run' 서비스와 상호 작용할 수 있는 주 클라이언트(LoadTestingClient
)의 하위 클라이언트가 2개 있습니다.
from azure.developer.loadtesting import LoadTestAdministrationClient
# for managing authentication and authorization
# can be installed from pypi, follow: https://pypi.org/project/azure-identity/
# using DefaultAzureCredentials, read more at: https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python
from azure.identity import DefaultAzureCredential
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
<endpoint>
는 리소스의 데이터 평면 엔드포인트/URL을 나타냅니다.
주요 개념
Python용 Azure 부하 테스트 클라이언트 라이브러리를 사용하면 클라이언트를 사용하여 이러한 각 구성 요소와 상호 작용할 수 있습니다. 라이브러리의 주요 진입점인 두 개의 최상위 클라이언트가 있습니다.
LoadTestAdministrationClient
(azure.developer.loadtesting.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.LoadTestRunClient
)
이 두 클라이언트에는 비동기 클라이언트도 있습니다.
LoadTestAdministrationClient
(azure.developer.loadtesting.aio.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.aio.LoadTestRunClient
)
부하 테스트 관리 클라이언트
는 LoadTestAdministrationClient
부하 테스트, 앱 구성 요소 및 메트릭을 관리하고 구성하는 데 사용됩니다.
테스트
테스트는 부하 테스트를 실행하기 위한 테스트 스크립트 및 구성 설정을 지정합니다. Azure Load Testing 리소스에서 하나 이상의 테스트를 만들 수 있습니다.
앱 구성 요소
Azure 호스트 애플리케이션에 대한 부하 테스트를 실행하는 경우 다양한 Azure 애플리케이션 구성 요소에 대한 리소스 메트릭(서버 쪽 메트릭)을 모니터링할 수 있습니다. 부하 테스트가 실행되는 동안 및 테스트가 완료된 후 Azure Load Testing 대시보드에서 리소스 메트릭을 모니터링하고 분석할 수 있습니다.
메트릭
부하 테스트 중에 Azure Load Testing은 테스트 실행에 대한 메트릭을 수집합니다. 다음과 같이 두 가지 유형의 메트릭이 있습니다.
클라이언트 쪽 메트릭은 테스트 엔진에서 보고한 세부 정보를 제공합니다. 이러한 메트릭에는 가상 사용자 수, 요청 응답 시간, 실패한 요청 수 또는 초당 요청 수가 포함됩니다.
서버 쪽 메트릭은 Azure 호스트 애플리케이션에 사용할 수 있으며 Azure 애플리케이션 구성 요소에 대한 정보를 제공합니다. 메트릭은 데이터베이스 읽기 수, HTTP 응답 유형 또는 컨테이너 리소스 사용량에 대한 것일 수 있습니다.
테스트 실행 클라이언트
는 LoadTestRunClient
부하 테스트에 해당하는 테스트 실행을 시작하고 중지하는 데 사용됩니다. 테스트 실행은 부하 테스트를 한 번 실행하는 것을 나타냅니다. Apache JMeter 스크립트 실행, 부하 테스트 YAML 구성, 모니터링할 앱 구성 요소 목록 및 테스트 결과와 관련된 로그를 수집합니다.
Data-Plane 엔드포인트
Azure Load Testing 리소스의 데이터 평면은 다음 URL 형식을 사용하여 주소를 지정할 수 있습니다.
00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com
첫 번째 GUID 00000000-0000-0000-0000-000000000000
는 Azure Load Testing 리소스에 액세스하는 데 사용되는 고유 식별자입니다. 그 다음에 aaa
는 리소스의 Azure 지역이 표시됩니다.
데이터 평면 엔드포인트는 컨트롤 플레인 API에서 가져옵니다.
예제:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com
위의 예제에서 는 eus
Azure 지역 East US
을 나타냅니다.
예제
부하 테스트 만들기
from azure.developer.loadtesting import LoadTestAdministrationClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
import os
TEST_ID = "some-test-id"
DISPLAY_NAME = "my-load-test"
# set SUBSCRIPTION_ID as an environment variable
SUBSCRIPTION_ID = os.environ["SUBSCRIPTION_ID"]
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
result = client.create_or_update_test(
TEST_ID,
{
"description": "",
"displayName": "My New Load Test",
"loadTestConfig": {
"engineInstances": 1,
"splitAllCSVs": False,
},
"passFailCriteria": {
"passFailMetrics": {
"condition1": {
"clientmetric": "response_time_ms",
"aggregate": "avg",
"condition": ">",
"value": 300
},
"condition2": {
"clientmetric": "error",
"aggregate": "percentage",
"condition": ">",
"value": 50
},
"condition3": {
"clientmetric": "latency",
"aggregate": "avg",
"condition": ">",
"value": 200,
"requestName": "GetCustomerDetails"
}
}
},
"secrets": {
"secret1": {
"value": "https://sdk-testing-keyvault.vault.azure.net/secrets/sdk-secret",
"type": "AKV_SECRET_URI"
}
},
"environmentVariables": {
"my-variable": "value"
}
}
)
print(result)
except HttpResponseError as e:
print('Service responded with error: {}'.format(e.response.json()))
테스트에 .jmx 파일 업로드
from azure.developer.loadtesting import LoadTestAdministrationClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
TEST_ID = "some-test-id"
FILE_NAME = "some-file-name.jmx"
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
# uploading .jmx file to a test
resultPoller = client.begin_upload_test_file(TEST_ID, FILE_NAME, open("sample.jmx", "rb"))
# getting result of LRO poller with timeout of 600 secs
validationResponse = resultPoller.result(600)
print(validationResponse)
except HttpResponseError as e:
print("Failed with error: {}".format(e.response.json()))
테스트 실행
from azure.developer.loadtesting import LoadTestRunClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
TEST_ID = "some-test-id"
TEST_RUN_ID = "some-testrun-id"
DISPLAY_NAME = "my-load-test-run"
client = LoadTestRunClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
testRunPoller = client.begin_test_run(
TEST_RUN_ID,
{
"testId": TEST_ID,
"displayName": "My New Load Test Run",
}
)
#waiting for test run status to be completed with timeout = 3600 seconds
result = testRunPoller.result(3600)
print(result)
except HttpResponseError as e:
print("Failed with error: {}".format(e.response.json()))
다음 단계
추가 샘플은 여기에서 찾을 수 있습니다.
참여
이 프로젝트에 대한 기여와 제안을 환영합니다. 대부분의 경우 기여하려면 권한을 부여하며 실제로 기여를 사용할 권한을 당사에 부여한다고 선언하는 CLA(기여자 라이선스 계약)에 동의해야 합니다. 자세한 내용은 https://cla.microsoft.com 을 참조하세요.
끌어오기 요청을 제출하면 CLA-bot은 CLA를 제공하고 PR을 적절하게 데코레이팅해야 하는지 여부를 자동으로 결정합니다(예: 레이블, 설명). 봇에서 제공하는 지침을 따르기만 하면 됩니다. 이 작업은 CLA를 사용하여 모든 리포지토리에서 한 번만 수행하면 됩니다.
이 프로젝트에는 Microsoft Open Source Code of Conduct(Microsoft 오픈 소스 준수 사항)가 적용됩니다. 자세한 내용은 준수 사항 FAQ를 참조하거나 opencode@microsoft.com에 추가 질문 또는 의견을 알려주세요.
문제 해결
그것에 대한 자세한 내용은 곧 오고있다 ...
Azure SDK for Python
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기