Azure Load Testing-clientbibliotheek voor JavaScript - versie 1.0.1
Azure Load Testing biedt een clientbibliotheek in JavaScript voor de gebruiker waarmee ze systeemeigen kunnen communiceren met de Azure Load Testing-service. Azure Load Testing is een volledig beheerde service voor belastingstests waarmee u grootschalige belasting kunt genereren. De service simuleert verkeer voor uw toepassingen, ongeacht waar ze worden gehost. Ontwikkelaars, testers en QA-technici (Quality Assurance) kunnen deze gebruiken om de prestaties, schaalbaarheid of capaciteit van toepassingen te optimaliseren.
Vertrouw sterk op onze REST-clientdocumenten om deze bibliotheek te gebruiken
Documentatie
Er is diverse documentatie beschikbaar om u te helpen aan de slag te gaan
Slag
Momenteel ondersteunde omgevingen
Voorwaarden
- U moet een Azure-abonnement hebben en Azure Load Test Service Resource om dit pakket te kunnen gebruiken.
Het @azure-rest/load-testing
-pakket installeren
Installeer de REST-clientbibliotheek van de AzureLoadTesting-client voor JavaScript met npm
:
npm install @azure-rest/load-testing
Een AzureLoadTesting
-client maken en verifiëren
Als u een AAD-tokenreferenties (Azure Active Directory) wilt gebruiken, geeft u een exemplaar op van het gewenste referentietype dat is verkregen uit de @azure/identity-bibliotheek.
Als u zich wilt verifiëren met AAD, moet u eerst npm
@azure/identity
installeren
Na de installatie kunt u kiezen welk type referentie uit @azure/identity
te gebruiken.
Als voorbeeld kan DefaultAzureCredential- worden gebruikt om de client te verifiëren.
Stel de waarden van de client-id, tenant-id en clientgeheim van de AAD-toepassing in als omgevingsvariabelen: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET
import AzureLoadTesting, { AzureLoadTestingClient } from "@azure-rest/load-testing";
import { DefaultAzureCredential } from "@azure/identity";
const Client: AzureLoadTestingClient = AzureLoadTesting(Endpoint, new DefaultAzureCredential());
Sleutelbegrippen
De volgende onderdelen vormen de Azure Load Testing Service. Met de Azure Load Test-clientbibliotheek voor JavaScript kunt u met elk van deze onderdelen communiceren via het gebruik van een toegewezen clientobject.
Test
Een test geeft het testscript en de configuratie-instellingen voor het uitvoeren van een belastingstest op. U kunt een of meer tests maken in een Azure Load Testing-resource.
App-onderdeel
Wanneer u een belastingstest uitvoert voor een door Azure gehoste toepassing, kunt u metrische resourcegegevens bewaken voor de verschillende Azure-toepassingsonderdelen (metrische gegevens aan de serverzijde). Terwijl de belastingstest wordt uitgevoerd en na voltooiing van de test, kunt u de metrische resourcegegevens bewaken en analyseren in het dashboard Azure Load Testing.
Statistieken
Tijdens een belastingstest verzamelt Azure Load Testing metrische gegevens over de testuitvoering. Er zijn twee soorten metrische gegevens:
Metrische gegevens aan de clientzijde geven u details die door de testengine zijn gerapporteerd. Deze metrische gegevens omvatten het aantal virtuele gebruikers, de reactietijd van de aanvraag, het aantal mislukte aanvragen of het aantal aanvragen per seconde.
Metrische gegevens aan de serverzijde zijn beschikbaar voor door Azure gehoste toepassingen en bieden informatie over uw Azure-toepassingsonderdelen. Metrische gegevens kunnen zijn voor het aantal databaseleesbewerkingen, het type HTTP-antwoorden of het verbruik van containerresources.
Test-engine
Een testengine is de computerinfrastructuur waarop het Apache JMeter-testscript wordt uitgevoerd. U kunt de belastingstest uitschalen door het aantal testengines te configureren. Het testscript wordt parallel uitgevoerd voor het opgegeven aantal testengines.
Testuitvoering
Een testuitvoering vertegenwoordigt één uitvoering van een belastingstest. Hiermee worden de logboeken verzameld die zijn gekoppeld aan het uitvoeren van het Apache JMeter-script, de YAML-configuratie van de belastingtest, de lijst met app-onderdelen die moeten worden bewaakt en de resultaten van de test.
Data-Plane-eindpunt
Gegevensvlak van Azure Load Testing-resources kan worden adresseerbaar met behulp van de volgende URL-indeling:
00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com
De eerste GUID-00000000-0000-0000-0000-000000000000
is de unieke id die wordt gebruikt voor toegang tot de Azure Load Testing-resource. Dit wordt gevolgd door aaa
de Azure-regio van de resource.
Het eindpunt van het gegevensvlak wordt verkregen uit Besturingsvlak-API's.
voorbeeld:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com
In het bovenstaande voorbeeld vertegenwoordigt eus
de Azure-regio East US
.
Voorbeelden
Een belastingstest maken
import { AzureLoadTestingClient } from "@azure-rest/load-testing";
import AzureLoadTesting from "@azure-rest/load-testing";
import { DefaultAzureCredential } from "@azure/identity";
var TEST_ID = "some-test-id";
var DISPLAY_NAME = "my-load-test";
const client: AzureLoadTestingClient = AzureLoadTesting("<Endpoint>", new DefaultAzureCredential());
await client.path("/tests/{testId}", TEST_ID).patch({
contentType: "application/merge-patch+json",
body: {
displayName: DISPLAY_NAME,
description: "",
loadTestConfiguration: {
engineInstances: 1,
splitAllCSVs: false,
},
secrets: {},
environmentVariables: {},
passFailCriteria: { passFailMetrics: {} },
},
});
.jmx-bestand uploaden naar een test
import { AzureLoadTestingClient, getLongRunningPoller, isUnexpected } from "@azure-rest/load-testing";
import AzureLoadTesting from "@azure-rest/load-testing";
import { DefaultAzureCredential } from "@azure/identity";
import { createReadStream } from "fs";
const client: AzureLoadTestingClient = AzureLoadTesting("<Endpoint>", new DefaultAzureCredential());
var TEST_ID = "some-test-id";
const readStream = createReadStream("./sample.jmx");
const fileUploadResult = await client
.path("/tests/{testId}/files/{fileName}", TEST_ID, "sample.jmx")
.put({
contentType: "application/octet-stream",
body: readStream,
});
if (isUnexpected(fileUploadResult)) {
throw fileUploadResult.body.error;
}
let fileValidateResult;
const fileValidatePoller = await getLongRunningPoller(client, fileUploadResult);
try{
fileValidateResult = await fileValidatePoller.pollUntilDone({
abortSignal: AbortSignal.timeout(120*1000), // timeout of 120 seconds
});} catch (ex: any) {
new Error("Error in polling file Validation" + ex.message); //polling timed out
}
if (fileValidatePoller.getOperationState().status != "succeeded" && fileValidateResult)
throw new Error(
"There is some issue in validation, please make sure uploaded file is a valid JMX." +
fileValidateResult.body.validationFailureDetails
);
Een test uitvoeren en metrische gegevens ophalen
import { AzureLoadTestingClient, getLongRunningPoller, isUnexpected } from "@azure-rest/load-testing";
import AzureLoadTesting from "@azure-rest/load-testing";
import { DefaultAzureCredential } from "@azure/identity";
const client: AzureLoadTestingClient = AzureLoadTesting("<Endpoint>", new DefaultAzureCredential());
var TEST_ID = "some-test-id";
var DISPLAY_NAME = "my-load-test";
var TEST_RUN_ID = "some-test-run-id";
// Creating/Updating the test run
const testRunCreationResult = await client.path("/test-runs/{testRunId}", TEST_RUN_ID).patch({
contentType: "application/merge-patch+json",
body: {
testId: TEST_ID,
displayName: DISPLAY_NAME,
},
});
if (isUnexpected(testRunCreationResult)) {
throw testRunCreationResult.body.error;
}
if (testRunCreationResult.body.testRunId === undefined)
throw new Error("Test Run ID returned as undefined.");
const testRunPoller = await getLongRunningPoller(client, testRunCreationResult);
let testRunResult;
try {
testRunResult = await testRunPoller.pollUntilDone({
abortSignal: AbortSignal.timeout(60000), // timeout of 60 seconds
});
} catch (ex: any) {
new Error("Error in polling test run completion" + ex.message); //polling timed out
}
if (testRunPoller.getOperationState().status != "succeeded")
throw new Error("There is some issue in running the test, Error Response : " + testRunResult);
if (testRunResult) {
let testRunStarttime = testRunResult.body.startDateTime;
let testRunEndTime = testRunResult.body.endDateTime;
// get list of all metric namespaces and pick the first one
const metricNamespaces = await client
.path("/test-runs/{testRunId}/metric-namespaces", TEST_RUN_ID)
.get();
if (isUnexpected(metricNamespaces)) {
throw metricNamespaces.body.error;
}
const metricNamespace = metricNamespaces.body.value[0];
if (metricNamespace.name === undefined) {
throw "No Metric Namespace name is defined.";
}
// get list of all metric definitions and pick the first one
const metricDefinitions = await client
.path("/test-runs/{testRunId}/metric-definitions", TEST_RUN_ID)
.get({
queryParameters: {
metricNamespace: metricNamespace.name,
},
});
if (isUnexpected(metricDefinitions)) {
throw metricDefinitions.body.error;
}
const metricDefinition = metricDefinitions.body.value[0];
if (metricDefinition.name === undefined) {
throw "No Metric Namespace name is defined.";
}
// fetch client metrics using metric namespace and metric name
const metricsResult = await client.path("/test-runs/{testRunId}/metrics", TEST_RUN_ID).post({
queryParameters: {
metricname: metricDefinition.name,
metricNamespace: metricNamespace.name,
timespan: testRunStarttime + "/" + testRunEndTime,
},
});
console.log(metricsResult);
console.log(testRunResult);
}
Probleemoplossing
Logboekregistratie
Het inschakelen van logboekregistratie kan helpen nuttige informatie over fouten te ontdekken. Als u een logboek met HTTP-aanvragen en -antwoorden wilt zien, stelt u de omgevingsvariabele AZURE_LOG_LEVEL
in op info
. U kunt logboekregistratie ook tijdens runtime inschakelen door setLogLevel
aan te roepen in de @azure/logger
:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Voor meer gedetailleerde instructies over het inschakelen van logboeken, kunt u de @azure/logger pakketdocumentenbekijken.
Volgende stappen
Azure Loading Testing JavaScript SDK-voorbeelden zijn beschikbaar in de GitHub-opslagplaats van de SDK. Deze voorbeelden bevatten voorbeeldcode voor aanvullende scenario's die vaak worden aangetroffen.
Zie Azure Load Testing-voorbeelden.
Bijdragen
Zie de gids bijdragenvoor meer informatie over het bijdragen aan deze opslagplaats.
- Fork het
- Uw functiebranch maken (
git checkout -b my-new-feature
) - Uw wijzigingen doorvoeren (
git commit -am 'Add some feature'
) - Pushen naar de vertakking (
git push origin my-new-feature
) - Nieuwe pull-aanvraag maken
Azure SDK for JavaScript