Självstudie: Identifiera prestanda regressioner med Azure Pipelines och Förhandsversion av Azure Load Testing
I den här självstudien lär du dig att automatisera prestanda regressionstestning med förhandsversionen av Azure Load Testing och Azure Pipelines. Du konfigurerar ett CI/CD-arbetsflöde i Azure Pipelines för att köra ett belastningstest för ett exempelwebbprogram och sedan använda resultaten för att identifiera prestanda regressioner.
Om du använder åtgärder GitHub CI/CD-arbetsflöden kan du se motsvarande självstudiekurs GitHub Actions.
Du lär dig följande:
- Konfigurera din lagringsplats med filer som krävs för belastningstestning.
- Konfigurera Azure Pipelines för integrering med Azure Load Testing.
- Kör belastningstestet och visa resultatet i pipelineloggarna.
- Definiera villkor för pass/fail för belastningstestet.
- Parameterisera belastningstestet med hjälp av pipelinevariabler.
Viktigt
Azure Load Testing finns för närvarande som förhandsversion. Juridiska villkor för Azure-funktioner i betaversion, förhandsversion eller som av någon annan anledning inte har gjorts allmänt tillgängliga ännu finns i kompletterande användningsvillkor för Microsoft Azure-förhandsversioner.
Anteckning
Azure Pipelines har en tidsgräns på 60 minuter för jobb som körs på Microsofts värdbaserade agenter för privata projekt. Om belastningstestet körs i mer än 60 minuter måste du betala för ytterligare kapacitet. Annars uppnår pipelinen en time out utan att vänta på testresultaten. Du kan visa belastningsteststatusen i Azure Portal.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- En Azure DevOps-organisation och ett projekt. Om du inte har någon Azure DevOps-organisation kan du skapa en utan kostnad. Om du behöver hjälp med att komma igång med Azure Pipelines kan du gå till Skapa din första pipeline.
- Ett GitHub konto där du kan skapa en lagringsplats. Om du inte har något konto kan du skapa ett utan kostnad.
- En befintlig Azure Load Testing-resurs. Information om hur du skapar en resurs för belastningstest finns i Skapa och köra ett belastningstest.
Konfigurera din lagringsplats
För att komma igång behöver du först en GitHub-lagringsplats med exempelwebbappen. Sedan använder du den här lagringsplatsen för att konfigurera ett Azure Pipelines-arbetsflöde för att köra belastningstestet.
Öppna en webbläsare och gå till exempelprogrammets källdatabas GitHub lagringsplats:https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.git
Exempelprogrammet är en Node.js som består av en Azure App Service webbkomponent och en Cosmos DB databas.
Välj Förk för att förförföra exempelprogramdatabasen till ditt GitHub konto.
Konfigurera Apache JMeter-skriptet
Exempelprogrammets källdatabas innehåller ett Apache JMeter-skript med namnet SampleApp.jmx. Det här skriptet utför tre API-anrop på varje test-iteration:
add– Utför en datainfogningsåtgärd på Cosmos DB för antalet besökare i webbappen.get– Utför en GET-åtgärd från Cosmos DB för att hämta antalet.lasttimestamp– Uppdaterar tidsstämpeln sedan den senaste användaren gick till webbplatsen.
I det här avsnittet uppdaterar du Apache JMeter-skriptet med URL:en för exempelwebbappen.
I exempelprogramdatabasen öppnar du SampleApp.jmx för redigering.
Sök efter
<stringProp name="HTTPSampler.domain">.Du ser tre instanser av
<stringProp name="HTTPSampler.domain">i filen.Ersätt värdet med URL:en för exempelprogrammets App Service alla tre instanserna.
<stringProp name="HTTPSampler.domain">{your-app-name}.azurewebsites.net</stringProp>Du distribuerar exempelprogrammet till en Azure App Service webbapp med hjälp av Azure Pipelines i efterföljande steg. För tillfället ersätter du platshållartexten i föregående XML-kodfragment med ett unikt namn som du vill ge
{your-app-name}App Service webbappen. Sedan använder du samma namn för att skapa webbappen.Viktigt
Ta inte med
httpsellerhttpi exempelprogrammets URL.Genomför ändringarna till main-grenen.
Konfigurera Azure Pipelines-åtkomstbehörigheter för Azure
I det här avsnittet konfigurerar du ditt Azure DevOps-projekt så att det har behörighet att komma åt Azure Load Testing-resursen.
För att få åtkomst till Azure-resurser skapar du en tjänstanslutning i Azure DevOps och använder rollbaserad åtkomstkontroll för att tilldela nödvändiga behörigheter.
Logga in på din Azure DevOps-organisation (
https://dev.azure.com/<yourorganization>).Välj Project inställningar > Tjänstanslutningar.
Välj + Ny tjänstanslutning, välj Azure Resource Manager tjänstanslutning och välj sedan Nästa.
Välj autentiseringsmetoden För tjänstens huvudnamn (automatisk) och välj sedan Nästa.
Välj omfångsnivån Prenumeration och välj sedan den Azure-prenumeration som innehåller din Azure Load Testing-resurs.
Du använder namnet på tjänstanslutningen i ett senare steg för att konfigurera pipelinen.
Välj Spara för att skapa anslutningen.
Välj tjänstanslutningen i listan och välj sedan Hantera tjänstens huvudnamn.
Du ser information om tjänstens huvudnamn i Azure Portal. Anteckna program-ID:t för tjänstens huvudnamn (klient).
Tilldela nu rollen Load Test Contributor (Belastningstestdeltagare) till tjänstens huvudnamn för att ge åtkomst till Azure Load Testing-tjänsten.
Hämta först objekt-ID:t för tjänstens huvudnamn. Välj objectId-resultatet från följande Azure CLI-kommando:
az ad sp show --id "<application-client-id>"Ersätt platshållartexten med
<sp-object-id>objekt-ID:t för tjänstens huvudnamn. Ersätt också med ditt<subscription-name-or-id>Azure-prenumerations-ID.az role assignment create --assignee "<sp-object-id>" \ --role "Load Test Contributor" \ --subscription "<subscription-name-or-id>"
Konfigurera Azure Pipelines-arbetsflödet för att köra ett belastningstest
I det här avsnittet ska du konfigurera ett Azure Pipelines-arbetsflöde som utlöser belastningstestet.
Först installerar du tillägget Azure Load Testing från Azure DevOps Marketplace, skapar en ny pipeline och ansluter den sedan till exempelprogrammets förkända lagringsplats.
Installera aktivitetstillägget Azure Load Testing från Azure DevOps Marketplace.
I ditt Azure DevOps-projekt väljer du Pipelines och sedan Skapa pipeline.
På fliken Anslut väljer du GitHub.
Välj Auktorisera AzurePipelines så att Azure Pipelines får åtkomst GitHub ditt konto för att utlösa arbetsflöden.
På fliken Välj väljer du exempelprogrammets fördelade lagringsplats.
Lagringsplatsen innehåller en definitionsfil för azure-pipeline.yml-pipeline. Nu ska du ändra den här definitionen för att ansluta till Azure Load Testing-tjänsten.
På fliken Granska ersätter du följande platshållartext i YAML-koden.
Platshållare Värde <Name of your webapp>Namnet Azure App Service webbappen. Det här namnet ska matcha namnet som används för slutpunkts-URL:en i testskriptet SampleApp.jmx. <Name of your webARM Service connection>Namnet på tjänstanslutningen som du skapade i föregående avsnitt. <Azure subscriptionId>ditt prenumerations-ID för Azure <Name of your load test resource>Namnet på din Azure Load Testing-resurs. <Name of your load test resource group>Resursgruppens namn som innehåller Azure Load Testing-resursen. Viktigt
Namnet på Azure-webbappen ska matcha det namn som du använde för slutpunkts-URL:en i testskriptet SampleApp.jmx.
Välj Spara och kör, ange ett commit-meddelande och välj sedan Spara och kör.
Azure Pipelines kör nu CI/CD-arbetsflödet. Du kan övervaka status och loggar genom att välja pipelinejobbet.
Visa belastningstestresultat
För varje uppdatering av main-grenen utför Azure-pipelinen följande steg:
- Distribuera exempelprogrammet Node.js till en Azure App Services-webbapp. Namnet på webbappen konfigureras i pipelinedefinitionen.
- Utlöst Azure Load Testing för att skapa och köra belastningstestet baserat på Apache JMeter-skriptet och YAML-testkonfigurationsfilen på lagringsplatsen.
I det här avsnittet visar du belastningstestresultatet i pipelinelogginformationen.
I ditt Azure DevOps-projekt väljer du Pipelines och sedan din pipelinedefinition i listan.
Välj pipelinekörningen för att visa körningssammanfattningen.
Välj Belastningstest i avsnittet Jobb för att visa pipelineloggarna.
När belastningstestet är klart kan du visa testsammanfattningsinformationen och måtten på klientsidan i pipelineloggarna. Loggen visar även URL:en för att navigera till instrumentpanelen för Azure Load Testing för det här belastningstestet.
I pipelineloggvyn väljer du Belastningstest och väljer sedan 1 artefakt som skapas för att ladda ned resultatfilerna för belastningstestet.
Definiera villkor för test pass/fail
I det här avsnittet lägger du till felkriterier för att fastställa resultatet av belastningstestet. Om minst ett av felvillkoren utvärderas till sant misslyckas belastningstestet.
Du kan ange dessa villkor i YAML-filen för testkonfigurationen.
Redigera filen SampleApp.yml på din GitHub lagringsplats.
Lägg till följande kodfragment i slutet av filen.
failureCriteria: - avg(response_time_ms) > 100 - percentage(error) > 20Nu har du angett felkriterier för belastningstestet. Testet misslyckas om minst ett av dessa villkor är uppfyllt:
- Den aggregerade genomsnittliga svarstiden är större än 100 ms.
- Den sammanlagda procentandelen fel är större än 20 %.
Genomför och push-skicka ändringarna till lagringsplatsens huvudgren.
Ändringarna utlöser Azure Pipelines CI/CD-arbetsflödet.
På sidan pipeline runs (pipelinekörningar) väljer du den senaste posten i listan.
När belastningstestet är klart ser du att pipelinen misslyckades eftersom den genomsnittliga svarstiden var högre än vad du angav i felvillkoren.
Azure Load Testing-tjänsten utvärderar kriterierna under testkörningen. Om något av dessa villkor misslyckas returnerar Azure Load Testing-tjänsten en slutkod som inte är noll. Den här koden informerar CI/CD-arbetsflödet om att testet misslyckades.
Redigera filen SampleApp.yml och ändra villkoren för testfel.
failureCriteria: - avg(response_time_ms) > 5000 - percentage(error) > 20Genomför ändringarna för att utlösa Azure Pipelines CI/CD-arbetsflödet.
Belastningstestet lyckas nu och pipelinen slutförs.
Skicka parametrar till dina belastningstester från pipelinen
Sedan parameteriserar du belastningstestet med hjälp av pipelinevariabler. Dessa variabler kan vara hemligheter, till exempel lösenord eller icke-hemligheter.
I den här självstudien konfigurerar du om exempelprogrammet så att det endast accepterar säkra begäranden. Om du vill skicka en säker begäran måste du skicka ett hemligt värde i HTTP-begäran.
Redigera filen SampleApp.yaml på din GitHub lagringsplats.
Uppdatera konfigurationsinställningen testPlan för att använda filen SampleApp_Secrets.jmx.
version: v0.1 testName: SampleApp testPlan: SampleApp_Secrets.jmx description: 'SampleApp Test with secrets' engineInstances: 1Apache JMeter-skriptet SampleApp_Secrets.jmx använder en användardefinierad variabel som hämtar det hemliga värdet med den anpassade funktionen
${__GetSecret(secretName)}. Apache JMeter skickar sedan det här hemliga värdet till slutpunkten för exempelprogrammet.Genomför ändringarna i YAML-filen.
Redigera filen config.json på GitHub lagringsplats.
Uppdatera inställningen
enableSecretsFeaturetill true för att konfigurera om exempelprogrammet så att det endast accepterar säkra begäranden.{ "enableSecretsFeature": true }Spara ändringarna i filen config.json.
Redigera filen SampleApp_Secrets.jmx.
Sök efter
<stringProp name="HTTPSampler.domain">.Du ser tre instanser av
<stringProp name="HTTPSampler.domain">i filen.Ersätt värdet med URL:en för exempelprogrammets namn App Service alla tre instanserna.
<stringProp name="HTTPSampler.domain">{your-app-name}.azurewebsites.net</stringProp>Du distribuerar exempelprogrammet till en webbapp Azure App Service med hjälp av arbetsflödet GitHub Actions. I föregående XML-kodfragment ersätter du platshållartexten
{your-app-name}med det unika namnet App Service webbappen.Viktigt
Inkludera inte
httpseller ihttpexempelprogrammets URL.Spara och genomför Apache JMeter-skriptet.
Gå till sidan Pipelines, välj din pipelinedefinition och välj sedan Redigera.
Välj Variabler och sedan Ny variabel.
Ange informationen Name (mySecret) och Value (1797669089) och markera sedan rutan Keep this value secret (Behåll den här värdehemligheten) för att lagra variabeln på ett säkert sätt.
Välj OK och sedan Spara för att spara den nya variabeln.
Redigera filen azure-pipeline.yml för att skicka hemligheten till belastningstestet.
Redigera Azure Load Testing-uppgiften genom att lägga till följande YAML-kodfragment:
secrets: | [ { "name": "appToken", "value": "$(mySecret)" } ]Spara och kör pipelinen.
Azure Load Testing-uppgiften skickar hemligheten från pipelinen till testmotorn på ett säkert sätt. Den hemliga parametern används bara när belastningstestet körs och sedan tas värdet bort från minnet.
Ta en titt på översikten över Azure Load Testing-uppgiften i nästa avsnitt.
Azure Load Testing Task
I det här avsnittet beskrivs Azure Load Testing-uppgiften för Azure Pipelines. Uppgiften är plattformsoberoende och körs på Windows-, Linux- eller Mac-agenter.
Du kan använda följande parametrar för att konfigurera Azure Load Testing-uppgiften.
| Parameter | Beskrivning |
|---|---|
azureSubscription |
Krävs Namnet på Azure Resource Manager tjänsten. |
loadTestConfigFile |
Krävs Sökväg till YAML-konfigurationsfilen för belastningstestet. Sökvägen är fullständigt kvalificerad eller relativ till standardarbetskatalogen. |
resourceGroup |
Krävs Namnet på resursgruppen som innehåller resursen Azure Load Testing. |
loadTestResource |
Krävs Namnet på en befintlig Azure Load Testing-resurs. |
secrets |
Matris med JSON-objekt som består av namn och värde för varje hemlighet. Namnet ska matcha det hemliga namnet som används i Apache JMeter-testskriptet. |
env |
Matris med JSON-objekt som består av namnet och värdet för varje miljövariabel. Namnet ska matcha variabelnamnet som används i Apache JMeter-testskriptet. |
Följande YAML-kodfragment beskriver hur du använder uppgiften i ett CI/CD-arbetsflöde för Azure Pipelines.
- task: AzureLoadTest@1
inputs:
azureSubscription: '<Azure service connection>'
loadTestConfigFile: '< YAML File path>'
loadTestResource: '<name of the load test resource>'
resourceGroup: '<name of the resource group of your load test resource>'
secrets: |
[
{
"name": "<Name of the secret>",
"value": "$(mySecret1)",
},
{
"name": "<Name of the secret>",
"value": "$(mySecret1)",
}
]
env: |
[
{
"name": "<Name of the variable>",
"value": "<Value of the variable>",
},
{
"name": "<Name of the variable>",
"value": "<Value of the variable>",
}
]
Rensa resurser
Viktigt
Du kan använda de resurser som du har skapat som förutsättningar för andra självstudier och instruktionsartiklar om Azure Load Testing.
Om du inte planerar att använda någon av de resurser som du har skapat kan du ta bort dem så att du inte debiteras ytterligare.
I Azure-portalen:
Välj menyknappen i det övre vänstra hörnet och välj sedan Resursgrupper.
Välj resursgruppen som du skapade från listan.
Välj Ta bort resursgrupp.

Ange resursgruppsnamnet. Välj sedan Ta bort.
Alternativt kan du använda Azure CLI.
az group delete --name <yourresourcegroup>Kom ihåg att om du tar bort resursgruppen så tas alla resurser i den bort.
Nästa steg
Nu har du skapat ett CI/CD-arbetsflöde för Azure Pipelines som använder Azure Load Testing för att automatiskt köra belastningstester. Genom att använda pass/fail-kriterier kan du ange status för CI/CD-arbetsflödet. Med parametrar kan du göra körningen av belastningstestet konfigurerbar.
- Mer information om parametrisering av belastningstester finns i Parameterisera ett belastningstest.
- Mer information om hur du definierar villkor för testkörning/fel finns i Definiera testkriterier.