Kurz: Identifikace regresí výkonu pomocí GitHub Actions a Azure Load Testing Preview
V tomto kurzu se dozvíte, jak automatizovat testování regrese výkonu pomocí Azure Load Testing Preview a GitHub Actions. Nakonfigurujete pracovní postup CI/CD GitHub Actions tak, aby spouštěl zátěžový test ukázkové webové aplikace, a výsledky pak použijete k identifikaci regresí výkonu.
Důležité
Existuje známý problém s akcí GitHub pro zátěžové testování Azure, což vede k selhání pracovního postupu GitHub Actions. V případě známých problémů se službou Azure Load Testing zkontrolujte nejnovější aktualizaci stavu.
Pokud pro pracovní postupy CI/CD Azure Pipelines pracovní postupy CI/CD, podívejte se na odpovídající Azure Pipelines kurzu.
Dozvíte se, jak provést tyto akce:
- Nastavte úložiště se soubory požadovanými pro zátěžové testování.
- Nastavte pracovní postup GitHub pro integraci s Azure Load Testing.
- Spusťte zátěžový test a zobrazte výsledky v pracovním postupu.
- Na základě prahových hodnot definujte testovací kritéria, která zátěžový test projdou nebo selžou.
- Parametrizujte zátěžový test pomocí GitHub tajných kódů.
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.
Požadavky
- Účet Azure s aktivním předplatným. Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
- Účet GitHub, ve kterém můžete vytvořit úložiště. Pokud účet nemáte, můžete si ho zdarma vytvořit.
- Existující prostředek Azure Load Testing. Pokud chcete vytvořit prostředek zátěžového testování, podívejte se na vytvoření a spuštění zátěžového testu.
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 postupu GitHub Akce pro spuštění zátěžového testu.
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.
Výběrem možnosti Fork (Fork) fork (Fork) na fork úložiště ukázkové aplikace GitHub účet.
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.
V úložišti ukázkové aplikace otevřete soubor SampleApp.jmx pro úpravy.
Vyhledejte
<stringProp name="HTTPSampler.domain">.V souboru se zobrazí tři
<stringProp name="HTTPSampler.domain">instance .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í pracovního postupu GitHub Actions 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
httpsani do adresy URL ukázkovéhttpaplikace.Potvrďte změny do hlavní větve.
Nastavení GitHub přístupu pro Azure
V této části nakonfigurujete své úložiště GitHub 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 objekt služby Azure Active Directory a pomocí řízení přístupu na základě role přiřadíte potřebná oprávnění.
Spuštěním následujícího příkazu Azure CLI vytvořte objekt služby:
az ad sp create-for-rbac --name "my-load-test-cicd" --role contributor \ --scopes /subscriptions/<subscription-id> \ --sdk-authV předchozím příkazu nahraďte zástupný text
<subscription-id>ID vašeho předplatného Azure vašeho prostředku Azure Load Testing.Výsledkem příkazu Azure CLI je řetězec JSON, který v pozdějším kroku přidáte do GitHub tajných kódů.
{ "clientId": "<my-client-id>", "clientSecret": "<my-client-secret>", "subscriptionId": "<my-subscription-id>", "tenantId": "<my-tenant-id>", (...) }Přejděte do svého forku ukázkové aplikace GitHub úložiště.
Do svého úložiště úložiště přidejte nový GitHub výběrem možnosti Nastavení Secrets New repository secret (Nový tajný kód úložiště pro > > tajné kódy).
Jako AZURE_CREDENTIALS zadejte , do pole Název vložte odpověď JSON z Azure CLI a pak vyberte Přidat tajný kód.
Pokud chcete objektu služby udělit oprávnění pro přístup ke službě Azure Load Testing, přiřaďte k objektu služby roli Přispěvatel zátěžového testu.
Nejprve načtěte ID objektu služby spuštěním tohoto příkazu Azure CLI:
az ad sp list --filter "displayname eq 'my-load-test-cicd'" -o tableDále přiřaďte roli Přispěvatel zátěžového testu k objektu služby. Zástupný text
<sp-object-id>nahraďte hodnotou ObjectId z předchozího příkazu Azure CLI. 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 GitHub Actions pro spuštění zátěžového testu
V této části nastavíte pracovní postup GitHub Actions, který spustí zátěžový test.
Pokud chcete spustit test pomocí zátěžového testování Azure z pracovního postupu CI/CD, potřebujete konfigurační soubor YAML zátěžového testu. Úložiště ukázkové aplikace obsahuje soubor SampleApp.yaml, který obsahuje parametry pro spuštění testu.
Otevřete soubor pracovního postupu .github/workflows/workflow.yml GitHub Actions v úložišti ukázkové aplikace.
Upravte soubor a nahraďte následující zástupné texty.
Zástupný symbol Hodnota <your-azure-web-app>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. <your-azure-load-testing-resource-name>Název vašeho prostředku Azure Load Testing. <your-azure-load-testing-resource-group-name>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.
env: AZURE_WEBAPP_NAME: "<your-azure-web-app>" LOAD_TEST_RESOURCE: "<your-azure-load-testing-resource-name>" LOAD_TEST_RESOURCE_GROUP: "<your-azure-load-testing-resource-group-name>"Potvrďte změny přímo do hlavní větve.
Potvrzení aktivuje pracovní postup GitHub Actions ve vašem úložišti. To, jestli je pracovní postup spuštěný, můžete ověřit tak, že přejdete na kartu Akce.
Zobrazení výsledků zátěžového testu
Pracovní GitHub Actions provede následující kroky pro každou aktualizaci hlavní větve:
- Nasaďte ukázkovou Node.js do webové aplikace Azure App Services azure. Název webové aplikace se konfiguruje v souboru pracovního postupu.
- Aktivujte zátěžové testování Azure, které vytvoří a spustí zátěžový test na základě skriptu Apache JMeter a souboru YAML testovací konfigurace v úložišti.
V této části zobrazíte výsledky zátěžového testu v protokolu pracovních postupů GitHub Actions.
Výběrem karty Actions (Akce) v GitHub úložiště zobrazte seznam spuštění pracovních postupů.
V seznamu vyberte spuštění pracovního postupu a přejděte k podrobnostem o spuštění a informacím o protokolování.
Po dokončení zátěžového testu můžete v protokolech pracovního postupu zobrazit souhrnné informace o testu a metriky na straně klienta. V protokolu se také zobrazí kroky pro přechod na řídicí panel Azure Load Testing pro tento zátěžový test.
Na obrazovce s podrobnostmi o spuštění pracovního postupu vyberte artefakt loadTestResults a stáhněte soubory výsledků zátěžového testu.
Definování kritérií pro testovací průchod/selhání
V této části přidáte kritéria selhání k určení výsledku zátěžového testu. Pokud se alespoň jedno z kritérií selhání vyhodnotí jako true, zátěžový test není úspěšný.
Tato kritéria můžete zadat v souboru YAML konfigurace testu.
Upravte soubor SampleApp.yml ve vašem GitHub úložiště.
Na konec souboru přidejte následující fragment kódu.
failureCriteria: - avg(response_time_ms) > 100 - percentage(error) > 20Nyní 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%.
Potvrďte změny a předejte je do hlavní větve úložiště.
změny budou aktivovat pracovní postup CI/CD akcí GitHub.
Vyberte kartu Akce a potom vyberte poslední spuštění pracovního postupu pro zobrazení protokolů pracovního postupu.
Po dokončení zátěžového testu si všimněte, že pracovní postup se nezdařil, protože průměrná doba odezvy byla vyšší, než jste určili v kritériích selhání.
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.
Upravte soubor dotazů. yml a změňte kritéria selhání testu.
failureCriteria: - avg(response_time_ms) > 5000 - percentage(error) > 20potvrďte změny a aktivujte pracovní postup akcí GitHub.
Zátěžový test je nyní úspěšný a pracovní postup byl úspěšně dokončen.
Předání parametrů zátěžovým testům z pracovního postupu
V dalším kroku otestujete zátěžový test pomocí proměnných pracovního postupu. Tyto parametry můžou být tajné klíče, 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.
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: 1Skript 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.Potvrďte změny v souboru YAML.
upravte soubor config. json v úložišti GitHub.
Aktualizujte
enableSecretsFeaturenastavení na hodnotu true a překonfigurujte ukázkovou aplikaci tak, aby přijímala pouze zabezpečené požadavky.{ "enableSecretsFeature": true }Potvrďte změny v souboru config. JSON .
Upravte soubor SampleApp_Secrets. JMX .
Vyhledejte
<stringProp name="HTTPSampler.domain">.V souboru se zobrazí tři instance
<stringProp name="HTTPSampler.domain">.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>do Azure App Service webové aplikace nasadíte zabezpečenou ukázkovou aplikaci pomocí pracovního postupu akce GitHub v následujících krocích. 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. Pak použijete stejný název k vytvoření webové aplikace.Důležité
Nezahrnujte
httpsanihttpdo adresy URL ukázkové aplikace.Uložte a potvrďte skript Apache JMeter.
vyberte Nastavení tajných > klíčů > nový tajný klíč úložiště a přidejte do úložiště GitHub nový tajný klíč.
Jako název zadejte MY_SECRET a pro hodnotu 1797669089 a pak vyberte Přidat tajný klíč.
Upravte soubor . GitHub/Workflows/Workflow. yml , aby se tajný kód předal zátěži testu.
Přidejte následující fragment kódu YAML a upravte akci testování zatížení Azure.
secrets: | [ { "name": "appToken", "value": "${{ secrets.MY_SECRET }}" } ]potvrďte změny, které aktivují pracovní postup GitHub akcí.
Úloha testování zatížení Azure bezpečně předá tajný klíč úložiště z pracovního postupu testovacímu stroji. Parametr tajného klíče se používá pouze při spuštění zátěžového testu a poté je jeho hodnota z paměti zahozena.
Akce testování zatížení Azure
tato část popisuje akci testování zátěže Azure GitHub. Tuto akci můžete použít odkazem azure/load-testing@v1 na akci ve vašem pracovním postupu. akce běží na spouštěčech Windows, Linux a Mac.
pomocí následujících parametrů můžete nakonfigurovat GitHub akci.
| Parametr | Popis |
|---|---|
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žít akci v pracovním postupu GitHub akce.
- name: 'Azure Load Testing'
uses: azure/load-testing@v1
with:
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": "${{ secrets.MY_SECRET1 }}",
},
{
"name": "<Name of the secret>",
"value": "${{ secrets.MY_SECRET2 }}",
}
]
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:
V levém horním rohu vyberte tlačítko nabídky a pak vyberte Skupiny prostředků.
V seznamu vyberte skupinu prostředků, kterou jste vytvořili.
Vyberte Odstranit skupinu prostředků.

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 akcí GitHub, 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.
- Další informace o zátěžových testech Parametrizace naleznete v tématu parametrizovat a load test.
- Další informace o definování kritérií testu Pass/selhání najdete v tématu definice testovacích kritérií.