Kurz: Identifikace regresí výkonu pomocí Azure Pipelines a Azure Load Testing Preview

V tomto kurzu se dozvíte, jak automatizovat testování regrese výkonu pomocí Azure Load Testing Preview a Azure Pipelines. Nakonfigurujete pracovní postup CI/CD Azure Pipelines zátěžový test ukázkové webové aplikace a pak výsledky použijete k identifikaci regresí výkonu.

Pokud pro pracovní postupy CI/CD GitHub akce, podívejte se na odpovídající kurz GitHub Actions.

Dozvíte se, jak provést tyto akce:

  • Nastavte úložiště se soubory požadovanými pro zátěžové testování.
  • Nastavte Azure Pipelines pro integraci s Azure Load Testing.
  • Spusťte zátěžový test a zobrazte výsledky v protokolech kanálu.
  • Definujte kritéria pro průchod/selhání zátěžového testu.
  • Parametrizujte zátěžový test pomocí proměnných kanálu.

Důležité

Zátěžové testování Azure je aktuálně ve verzi PREVIEW. Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.

Poznámka

Azure Pipelines má pro úlohy, které běží na agentech hostovaných Microsoftem pro soukromé projekty, 60minutový časový limit. Pokud zátěžový test běží déle než 60 minut, budete muset zaplatit další kapacitu. Pokud ne, kanál bude mít časový limit, aniž by čekal na výsledky testu. Stav zátěžového testu můžete zobrazit v Azure Portal.

Požadavky

Nastavení úložiště

Abyste začali, potřebujete nejprve úložiště GitHub s ukázkovou webovou aplikací. Toto úložiště pak použijete ke konfiguraci pracovního Azure Pipelines pro spuštění zátěžového testu.

  1. Otevřete prohlížeč a přejděte do zdrojového úložiště ukázkové GitHub aplikace:https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck.git

    Ukázková aplikace je Node.js aplikace skládající se z Azure App Service komponenty a databáze Cosmos DB.

  2. Výběrem možnosti Fork (Fork) fork (Fork) na fork úložiště ukázkové aplikace GitHub účet.

    Snímek obrazovky, který znázorňuje vytvoření forku ukázkové GitHub dat

Konfigurace skriptu Apache JMeter

Zdrojové repo ukázkové aplikace obsahuje skript Apache JMeter s názvem SampleApp.jmx. Tento skript provádí při každé iteraci testu tři volání rozhraní API:

  • add– Provede operaci vložení dat v Cosmos DB pro počet návštěvníků ve webové aplikaci.
  • get– Provede operaci GET z Cosmos DB a načte počet.
  • lasttimestamp – Aktualizuje časové razítko od posledního uživatele, který na web přešel.

V této části aktualizujete skript Apache JMeter pomocí adresy URL ukázkové webové aplikace.

  1. V úložišti ukázkové aplikace otevřete soubor SampleApp.jmx pro úpravy.

    Snímek obrazovky, který ukazuje, jak upravit testovací skript Apache JMeter

  2. Vyhledejte <stringProp name="HTTPSampler.domain">.

    V souboru se zobrazí tři <stringProp name="HTTPSampler.domain"> instance .

  3. Ve všech třech instancích nahraďte hodnotu adresou URL App Service aplikace.

    <stringProp name="HTTPSampler.domain">{your-app-name}.azurewebsites.net</stringProp>
    

    Ukázkovou aplikaci nasadíte do Azure App Service aplikace pomocí Azure Pipelines v dalších krocích. Teď nahraďte zástupný text v předchozím fragmentu kódu XML jedinečným názvem, který chcete zadat do {your-app-name} App Service aplikace. Stejný název pak použijete k vytvoření webové aplikace.

    Důležité

    Nezadáte https ani do adresy URL ukázkové http aplikace.

  4. Potvrďte změny do hlavní větve.

Nastavení Azure Pipelines přístupu pro Azure

V této části nakonfigurujete svůj projekt Azure DevOps tak, aby měl oprávnění pro přístup k prostředku Azure Load Testing.

Pro přístup k prostředkům Azure vytvoříte připojení služby v Azure DevOps a použijete řízení přístupu na základě role k přiřazení potřebných oprávnění.

  1. Přihlaste se ke své Azure DevOps organizace ( https://dev.azure.com/<yourorganization> ).

  2. Vyberte Project připojení > služeb.

  3. Vyberte + Nové připojení služby, vyberte Azure Resource Manager připojení služby a pak vyberte Další.

  4. Vyberte metodu ověřování Pomocí objektu služby (automatické) a pak vyberte Další.

  5. Vyberte úroveň oboru předplatného a pak vyberte předplatné Azure, které obsahuje váš prostředek Azure Load Testing.

    Snímek obrazovky, který ukazuje, jak vytvořit nové připojení služby

    Název připojení služby použijete v pozdějším kroku ke konfiguraci kanálu.

  6. Vyberte Uložit a vytvořte připojení.

  7. V seznamu vyberte připojení ke službě a pak vyberte Manage Service Principal (Spravovat objekt služby).

    Snímek obrazovky, který ukazuje, jak spravovat objekt služby

    Podrobnosti o instančním objektu se zobrazí v Azure Portal. Poznamenejte si ID aplikace (klienta) objektu služby.

    Snímek obrazovky, který ukazuje, jak získat ID aplikace připojení služby

  8. Teď přiřaďte roli Přispěvatel zátěžového testu k objektu služby, abyste umožnili přístup ke službě Azure Load Testing.

    Nejprve načtěte ID hlavního objektu služby. Z následujícího příkazu Azure CLI vyberte výsledek objectId:

    az ad sp show --id "<application-client-id>"
    

    Zástupný text <sp-object-id> nahraďte ID objektu služby. Nahraďte také <subscription-name-or-id> za ID vašeho předplatného Azure.

    az role assignment create --assignee "<sp-object-id>" \
        --role "Load Test Contributor" \
        --subscription "<subscription-name-or-id>"
    

Konfigurace pracovního Azure Pipelines pracovního postupu pro spuštění zátěžového testu

V této části nastavíte pracovní postup, Azure Pipelines spustí zátěžový test.

Nejprve nainstalujete rozšíření Azure Load Testing z Azure DevOps Marketplace, vytvoříte nový kanál a pak ho připojíte k úložišti forku ukázkové aplikace.

  1. Nainstalujte rozšíření úlohy Azure Load Testing z webu Azure DevOps Marketplace.

    Snímek obrazovky, který znázorňuje, jak procházet Visual Studio Marketplace pro rozšíření

    Snímek obrazovky, který ukazuje, jak nainstalovat rozšíření Azure Load Testing z Visual Studio Marketplace

  2. Ve svém Azure DevOps projektu vyberte Pipelines a pak vyberte Vytvořit kanál.

    Snímek obrazovky, který ukazuje, jak vytvořit nový kanál Azure

  3. Na kartě Připojení vyberte GitHub.

  4. Vyberte Authorize AzurePipelines (Autorizovat AzurePipelines), Azure Pipelines přístup k vašemu GitHub účtu pro aktivaci pracovních postupů.

  5. Na kartě Vybrat vyberte fork úložiště ukázkové aplikace.

    Snímek obrazovky, který znázorňuje, jak vybrat úložiště GitHub aplikace

    Úložiště obsahuje definiční soubor kanálu azure-pipeline.yml. Teď upravíte tuto definici pro připojení ke službě Azure Load Testing.

  6. Na kartě Review (Kontrola) nahraďte následující zástupné texty v kódu YAML.

    Zástupný symbol Hodnota
    <Name of your webapp> Název Azure App Service aplikace Tento název by se měl shodovat s názvem použitým pro adresu URL koncového bodu v testovacím skriptu SampleApp.jmx.
    <Name of your webARM Service connection> Název připojení služby, které jste vytvořili v předchozí části.
    <Azure subscriptionId> ID vašeho předplatného Azure
    <Name of your load test resource> Název vašeho prostředku Azure Load Testing.
    <Name of your load test resource group> Název skupiny prostředků, která obsahuje prostředek Azure Load Testing.

    Důležité

    Název webové aplikace Azure by se měl shodovat s názvem, který jste použili pro adresu URL koncového bodu v testovacím skriptu SampleApp.jmx.

    Snímek obrazovky Azure Pipelines kartě Zkontrolovat při vytváření kanálu

  7. Vyberte Save and run(Uložit a spustit), zadejte zprávu Commit (Potvrdit) a pak vyberte Save and run (Uložit a spustit).

    Snímek obrazovky, který ukazuje, jak uložit a spustit nový kanál Azure Pipelines

    Azure Pipelines teď spouští pracovní postup CI/CD. Stav a protokoly můžete monitorovat tak, že vyberete úlohu kanálu.

    Snímek obrazovky, který ukazuje, jak zobrazit podrobnosti o úloze kanálu.

Zobrazit výsledky zátěžového testu

Pro každou aktualizaci hlavní větve Azure kanál provede následující kroky:

  • Nasaďte ukázkovou Node.js aplikaci do webové aplikace Azure App Services. Název webové aplikace je nakonfigurovaný v definici kanálu.
  • Aktivujte zátěžové testování Azure pro vytvoření a spuštění zátěžového testu na základě skriptu Apache JMeter a souboru YAML konfigurace testu v úložišti.

V této části zobrazíte výsledky zátěžového testu v protokolu kanálu.

  1. v projektu Azure DevOps vyberte možnost Pipelines a pak ze seznamu vyberte svou definici kanálu.

  2. Vyberte spuštění kanálu, abyste zobrazili souhrn spuštění.

    Snímek obrazovky, který ukazuje souhrn spuštění kanálu.

  3. V části úlohy vyberte zátěžový test , chcete-li zobrazit protokoly kanálu.

    Snímek obrazovky zobrazující protokol spuštění kanálu Azure

    Po dokončení zátěžového testu můžete zobrazit souhrnné informace o testu a metriky na straně klienta v protokolech kanálu. Protokol také zobrazuje adresu URL pro přechod na řídicí panel zátěžové testování Azure pro tento zátěžový test.

  4. V zobrazení protokol kanálu vyberte zátěžový test a pak vyberte 1 vyprodukované artefakty pro stažení souborů výsledků zátěžového testu.

    Snímek obrazovky, který ukazuje stažení výsledků zátěžového testu.

Definovat kritéria testu úspěšnosti/selhání

V této části přidáte kritéria selhání pro určení výsledku zátěžového testu. Pokud je alespoň jedno z kritérií selhání vyhodnoceno jako true, zátěžový test je neúspěšný.

Tato kritéria můžete zadat v souboru YAML konfigurace testu.

  1. upravte soubor dotazů. yml v úložišti GitHub.

  2. Na konec souboru přidejte následující fragment kódu.

    failureCriteria: 
        - avg(response_time_ms) > 100
        - percentage(error) > 20
    

    Nyní jste zadali kritéria selhání pro zátěžový test. Test se nezdaří, pokud je splněna alespoň jedna z těchto podmínek:

    • Agregovaná Průměrná doba odezvy je větší než 100 ms.
    • Agregovaná procentuální hodnota chyb je větší než 20%.
  3. Potvrďte změny a předejte je do hlavní větve úložiště.

    změny spustí pracovní postup CI/CD Azure Pipelines.

  4. Na stránce spuštění kanálu vyberte poslední položku ze seznamu.

    Po dokončení zátěžového testu si všimněte, že se kanál nezdařil, protože průměrná doba odezvy byla vyšší, než jste určili v kritériích selhání.

    Snímek obrazovky, který zobrazuje protokoly kanálu po neúspěšných kritériích testu.

    Služba zátěžové testování Azure vyhodnocuje kritéria během provádění testu. Pokud některá z těchto podmínek není úspěšná, služba Azure Load Tests vrátí nenulový ukončovací kód. Tento kód informuje pracovní postup CI/CD, že test se nezdařil.

  5. Upravte soubor dotazů. yml a změňte kritéria selhání testu.

    failureCriteria: 
        - avg(response_time_ms) > 5000
        - percentage(error) > 20
    
  6. potvrďte změny a aktivujte pracovní postup CI/CD Azure Pipelines.

    Snímek obrazovky, který zobrazuje protokoly kanálů po průchodu všemi testovacími kritérii.

    Zátěžový test je nyní úspěšný a kanál byl úspěšně dokončen.

Předání parametrů zátěžovým testům z kanálu

V dalším kroku otestujete zátěžový test pomocí proměnných kanálu. Tyto proměnné můžou být tajné kódy, jako jsou hesla nebo jiné než tajné klíče.

V tomto kurzu překonfigurujete ukázkovou aplikaci tak, aby přijímala pouze zabezpečené požadavky. Pokud chcete poslat zabezpečený požadavek, budete muset v požadavku HTTP předat tajnou hodnotu.

  1. upravte soubor dotazů. yaml v úložišti GitHub.

    Aktualizujte nastavení konfigurace testovací plán tak, aby používalo soubor SampleApp_Secrets. JMX .

    version: v0.1
    testName: SampleApp
    testPlan: SampleApp_Secrets.jmx
    description: 'SampleApp Test with secrets'
    engineInstances: 1
    

    Skript SampleApp_Secrets. JMX Apache JMeter používá uživatelsky definovanou proměnnou, která načítá tajnou hodnotu s vlastní funkcí ${__GetSecret(secretName)} . Apache JMeter pak tuto tajnou hodnotu předá do koncového bodu aplikace.

  2. Potvrďte změny v souboru YAML.

  3. upravte soubor config. json v úložišti GitHub.

    Aktualizujte enableSecretsFeature nastavení na hodnotu true a překonfigurujte ukázkovou aplikaci tak, aby přijímala pouze zabezpečené požadavky.

    {
        "enableSecretsFeature": true
    }
    
  4. Potvrďte změny v souboru config. JSON .

  5. Upravte soubor SampleApp_Secrets. JMX .

  6. Vyhledejte <stringProp name="HTTPSampler.domain">.

    V souboru se zobrazí tři instance <stringProp name="HTTPSampler.domain"> .

  7. Nahraďte hodnotu adresou URL App Service vaší ukázkové aplikace ve všech třech instancích.

    <stringProp name="HTTPSampler.domain">{your-app-name}.azurewebsites.net</stringProp>
    

    ukázkovou aplikaci nasadíte do Azure App Service webové aplikace pomocí pracovního postupu akce GitHub. V předchozím fragmentu kódu XML nahraďte zástupný text {your-app-name} jedinečným názvem webové aplikace App Service.

    Důležité

    Nezahrnujte https ani http do adresy URL ukázkové aplikace.

  8. Uložte a potvrďte skript Apache JMeter.

  9. přejít na stránku Pipelines , vyberte svou definici kanálu a pak vyberte upravit.

    Snímek obrazovky, který ukazuje, jak upravit definici kanálu.

  10. Vyberte proměnné a pak vyberte Nová proměnná.

  11. Zadejte název (MySecret) a hodnotu (1797669089) informace a potom zaškrtněte políčko ponechat tuto hodnotu v tajnosti , aby se proměnná ukládala bezpečně.

    Snímek obrazovky, který ukazuje, jak vytvořit novou proměnnou kanálu.

  12. Vyberte OK a pak vyberte Uložit a uložte novou proměnnou.

  13. Upravte soubor Azure-Pipeline. yml tak, aby před zátěžovým testem předal tajný klíč.

    Přidejte následující fragment kódu YAML a upravte úlohu testování zatížení Azure:

    secrets: |
      [
          {
          "name": "appToken",
          "value": "$(mySecret)"
          }
      ]
    
  14. Uložte a spusťte kanál.

    Úloha testování zatížení Azure bezpečně předává tajný kód z kanálu do testovacího stroje. Parametr tajného klíče se používá pouze při spuštění zátěžového testu a pak je hodnota z paměti zahozena.

Podívejte se na přehled úlohy testování zatížení Azure v další části.

Úloha testování zatížení Azure

Tato část popisuje úlohu testování zatížení Azure pro Azure Pipelines. tato úloha je pro různé platformy a běží na agentech Windows, Linux nebo Mac.

K nakonfigurování úlohy Azure Load test můžete použít následující parametry.

Parametr Popis
azureSubscription Vyžaduje se Název připojení služby Azure Resource Manager.
loadTestConfigFile Vyžaduje se Cesta ke konfiguračnímu souboru YAML zátěžového testu Cesta je plně kvalifikovaná nebo relativní vzhledem k výchozímu pracovnímu adresáři.
resourceGroup Vyžaduje se Název skupiny prostředků, která obsahuje prostředek testování zatížení Azure.
loadTestResource Vyžaduje se Název existujícího prostředku testování zatížení Azure.
secrets Pole objektů JSON, která se skládají z názvu a hodnoty pro každý tajný klíč. Název by měl odpovídat tajnému názvu používanému ve skriptu Apache JMeter test.
env Pole objektů JSON, která se skládají z názvu a hodnoty pro každou proměnnou prostředí. Název by měl odpovídat názvu proměnné používanému ve skriptu Apache JMeter test.

následující fragment kódu YAML popisuje, jak používat úlohu v pracovním postupu CI/CD 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>",
          }
      ]

Vyčištění prostředků

Důležité

Prostředky, které jste vytvořili, můžete použít jako požadavky v dalších kurzech a článcích s návody pro zátěžové testování Azure.

Pokud nemáte v plánu používat žádné z prostředků, které jste vytvořili, odstraňte je, aby se vám za ně ne účtovány žádné další poplatky.

  • Na webu Azure Portal:

    1. V levém horním rohu vyberte tlačítko nabídky a pak vyberte Skupiny prostředků.

    2. V seznamu vyberte skupinu prostředků, kterou jste vytvořili.

    3. Vyberte Odstranit skupinu prostředků.

      Snímek obrazovky s výběry k odstranění skupiny prostředků na portálu Azure Portal.

    4. Zadejte název skupiny prostředků. Vyberte Odstranit.

  • Alternativně můžete použít Azure CLI.

    az group delete --name <yourresourcegroup>
    

    Nezapomeňte, že odstraněním skupiny prostředků se odstraní všechny prostředky v ní.

Další kroky

nyní jste vytvořili pracovní postup CI/CD Azure Pipelines, který používá testování zatížení Azure pro automatické spouštění zátěžových testů. Pomocí kritérií předat/selhat můžete nastavit stav pracovního postupu CI/CD. S parametry můžete provést konfiguraci spuštění zátěžového testu.