Erstellen konfigurierbarer Auslastungstests mit Geheimnissen und Umgebungsvariablen

Erfahren Sie, wie Sie das Verhalten eines Auslastungstests ändern, ohne das Apache JMeter-Skript bearbeiten zu müssen. Mit der Vorschauversion von Azure Load Testing können Sie Parameter verwenden, um ein konfigurierbares Testskript zu erstellen. Wandeln Sie beispielsweise den Anwendungsendpunkt in einen Parameter um, um Ihr Testskript in mehreren Umgebungen wiederzuverwenden.

Der Azure Load Testing-Dienst unterstützt zwei Arten von Parametern:

  • Geheimnisse: Enthalten vertrauliche Informationen und werden sicher an die Auslastungstest-Engine übergeben. Geheimnisse stellen beispielsweise Webdienst-Anmeldeinformationen bereit, anstatt sie im Testskript hart zu codieren. Weitere Informationen finden Sie unter Konfigurieren von Auslastungstests mit Geheimnissen.

  • Umgebungsvariablen: Enthalten nicht vertrauliche Informationen und sind als Umgebungsvariablen in der Auslastungstest-Engine verfügbar. Umgebungsvariablen machen beispielsweise die Anwendungsendpunkt-URL konfigurierbar. Weitere Informationen finden Sie unter Konfigurieren von Auslastungstests mit Umgebungsvariablen.

Wichtig

Azure Load Testing befindet sich derzeit in der VORSCHAUPHASE. Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie kein Azure-Abonnement haben, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

  • Eine Azure Load Testing-Ressource. Wenn Sie eine Azure Load Testing-Ressource erstellen müssen, lesen Sie den Schnellstart Erstellen und Ausführen eines Auslastungstests.

Konfigurieren von Auslastungstests mit Geheimnissen

In diesem Abschnitt erfahren Sie, wie Sie Geheimnisse an Ihr Auslastungstestskript in Azure Load Testing übergeben. Beispielsweise können Sie mithilfe eines Geheimnisses den API-Schlüssel an einen Webdienstendpunkt übergeben, für den Sie einen Auslastungstest durchführen. Anstatt den API-Schlüssel in der Konfiguration zu speichern oder im Skript hartzucodieren, können Sie ihn in einem Geheimnisspeicher speichern, um den Zugriff auf das Geheimnis streng zu steuern.

Mit Azure Load Testing können Sie Geheimnisse in Azure Key Vault speichern. Alternativ können Sie beim Ausführen des Auslastungstests in einer CI/CD-Pipeline auch den Geheimnisspeicher verwenden, der Ihrer CI/CD-Technologie zugeordnet ist, z. B. Azure Pipelines oder GitHub Actions.

Führen Sie die folgenden Schritte aus, um Geheimnisse mit Azure Load Testing zu verwenden:

  1. Speichern Sie den Geheimniswert im Geheimnisspeicher (Azure Key Vault oder im CI/CD-Geheimnisspeicher).
  2. Übergeben Sie einen Verweis auf das Geheimnis an das Apache JMeter-Testskript.
  3. Verwenden Sie den Geheimniswert im Apache JMeter-Testskript mithilfe der benutzerdefinierten Funktion GetSecret.

Speichern von Auslastungstestgeheimnissen mit Azure Key Vault

Mit Azure Key Vault können Sie Geheimniswerte an Ihr Testskript in Azure Load Testing übergeben. Sie fügen einen Verweis auf das Geheimnis in der Azure Load Testing-Konfiguration hinzu. Azure Load Testing verwendet dann diesen Verweis, um den Geheimniswert im Apache JMeter-Skript abzurufen.

Außerdem müssen Sie Azure Load Testing Zugriff auf Ihren Azure-Schlüsseltresor gewähren, um den Geheimniswert abzurufen.

Hinweis

Wenn Sie einen Auslastungstest im Rahmen Ihres CI/CD-Prozesses ausführen, können Sie auch den zugehörigen Geheimnisspeicher verwenden. Fahren Sie mit Verwenden des CI/CD-Geheimnisspeichers fort.

  1. Fügen Sie Ihrem Schlüsseltresor den Geheimniswert hinzu, falls Sie dies noch nicht getan haben.

  2. Rufen Sie den Geheimnisbezeichner des Schlüsseltresors für Ihr Geheimnis ab. Sie verwenden diesen geheimen Bezeichner, um Ihren Auslastungstest zu konfigurieren.

    Screenshot that shows the details of a secret in an Azure key vault.

    Der Geheimnisbezeichner ist der vollständige URI des Geheimnisses im Azure-Schlüsseltresor. Optional können Sie auch eine Versionsnummer einschließen. Zum Beispiel: https://myvault.vault.azure.net/secrets/mysecret/ oder https://myvault.vault.azure.net/secrets/mysecret/abcdef01-2345-6789-0abc-def012345678.

  3. Gewähren Sie Ihrer Azure Load Testing-Ressource Zugriff auf den Schlüsseltresor.

    Um das Geheimnis aus Ihrem Azure-Schlüsseltresor abzurufen, müssen Sie Ihrer Azure Load Testing-Ressource Leseberechtigung erteilen. Hierfür müssen Sie zuerst eine Identität für Ihre Auslastungstestressource angeben. Azure Load Testing kann eine vom System oder vom Benutzer zugewiesene Identität verwenden.

    Informationen zum Bereitstellen von Azure Load Testing-Zugriff auf Ihren Schlüsseltresor finden Sie unter Verwenden von verwalteten Identitäten für Azure Load Testing.

  4. Verweisen Sie in der Auslastungstestkonfiguration auf das Geheimnis.

    Sie definieren einen Auslastungstest-Geheimnisparameter für jedes Geheimnis, auf das Sie im Apache JMeter-Skript verweisen. Der Parametername sollte mit dem Geheimnisnamen übereinstimmen, den Sie im Apache JMeter-Testskript verwenden. Der Parameterwert ist die Sicherheits-ID des Schlüsseltresors.

    Sie können Geheimnisparameter angeben, indem Sie einen der folgenden Schritte ausführen:

    • Wählen Sie im Azure-Portal Ihren Auslastungstest aus, wählen Sie Konfigurieren und die Registerkarte Parameter aus, und geben Sie dann die Parameterdetails ein.

      Screenshot that shows where to add secret details to a load test in the Azure portal.

    • Wenn Sie einen CI/CD-Workflow konfigurieren und Azure Key Vault verwenden, können Sie mithilfe der secrets-Eigenschaft ein Geheimnis in der YAML-Konfigurationsdatei angeben. Weitere Informationen zur Syntax finden Sie in der YAML-Referenz zur Testkonfiguration.

  5. Geben Sie die Identität an, die Azure Load Testing für den Zugriff auf Ihre Geheimnisse in Azure Key Vault verwendet.

    Die Identität kann die vom System zugewiesene Identität der Auslastungstestressource oder eine der vom Benutzer zugewiesenen Identitäten sein. Stellen Sie sicher, dass Sie dieselbe Identität verwenden, der Sie zuvor Zugriff gewährt haben.

    Sie können die Verweisidentität des Schlüsseltresors folgendermaßen angeben:

    • Wählen Sie im Azure-Portal Ihren Auslastungstest aus, klicken Sie auf Konfigurieren und dann auf die Registerkarte Parameter, und konfigurieren Sie dann die Key Vault-Verweisidentität.

    Screenshot that shows how to select key vault reference identity.

    • Wenn Sie einen CI/CD-Workflow konfigurieren und Azure Key Vault verwenden, können Sie mithilfe der keyVaultReferenceIdentity-Eigenschaft die Verweisidentität in der YAML-Konfigurationsdatei angeben. Weitere Informationen zur Syntax finden Sie in der YAML-Referenz zur Testkonfiguration.

Sie haben nun ein Geheimnis in Azure Key Vault angegeben und Ihre Azure Load Testing-Ressource so konfiguriert, dass sie ihren Wert abruft. Sie können jetzt zu Verwenden von Geheimnissen in Apache JMeter wechseln.

Speichern von Auslastungstestgeheimnissen mithilfe des CI/CD-Geheimnisspeichers

Mit Azure Key Vault können Sie Geheimniswerte an Ihr Testskript in Azure Load Testing übergeben. Sie fügen einen Verweis auf das Geheimnis in der Azure Load Testing-Konfiguration hinzu. Azure Load Testing verwendet dann diesen Verweis, um den Geheimniswert im Apache JMeter-Skript abzurufen.

Außerdem müssen Sie Azure Load Testing Zugriff auf Ihren Azure-Schlüsseltresor gewähren, um den Geheimniswert abzurufen.

Wenn Sie Azure Load Testing in Ihrem CI/CD-Workflow verwenden, können Sie auch den zugehörigen Geheimnisspeicher verwenden. Sie können z. B. GitHub-Repositorygeheimnisse oder Geheimnisvariablen in Azure Pipelines verwenden.

Zunächst fügen Sie dem CI/CD-Geheimnisspeicher ein Geheimnis hinzu. Im CI/CD-Workflow übergeben Sie dann den Geheimniswert an die Azure Load Testing-Aufgabe bzw. -Aktion.

Hinweis

Wenn Sie bereits einen Schlüsseltresor verwenden, können Sie ihn auch zum Speichern der Auslastungstestgeheimnisse verwenden. Fahren Sie mit Verwenden von Azure Key Vault fort.

  1. Fügen Sie den Geheimniswert dem CI/CD-Geheimnisspeicher hinzu, falls er noch nicht vorhanden ist.

    In Azure Pipelines können Sie die Pipeline bearbeiten und eine Variable hinzufügen.

    Screenshot that shows how to add a variable to Azure Pipelines.

    In GitHub können Sie GitHub-Repositorygeheimnisse verwenden.

    Screenshot that shows how to add a GitHub repository secret.

    Hinweis

    Achten Sie darauf, den tatsächlichen Geheimniswert und nicht den Schlüsseltresor-Geheimnisbezeichner als Wert zu verwenden.

  2. Übergeben Sie das Geheimnis als Eingabeparameter an die Aufgabe/Aktion für Auslastungstests im CI/CD-Workflow.

    Der folgende YAML-Codeausschnitt zeigt, wie das Geheimnis an die GitHub-Aktion für Auslastungstests übergeben wird:

    - name: 'Azure Load Testing'
      uses: azure/load-testing@v1
      with:
        loadtestConfigFile: 'SampleApp.yaml'
        loadtestResource: 'MyTest'
        resourceGroup: 'loadtests-rg'
        secrets: |
        [
            {
            "name": "appToken",
            "value": "${{ secrets.MY_SECRET }}"
            }
        ]
    

    Der folgende YAML-Codeausschnitt zeigt, wie das Geheimnis an die Azure Pipelines-Aufgabe übergeben wird:

    - task: AzureLoadTest@1
      inputs:
        azureSubscription: 'MyAzureLoadTestingRG'
        loadTestConfigFile: 'SampleApp.yaml'
        loadTestResource: 'MyTest'
        resourceGroup: 'loadtests-rg'
        secrets: |
          [
              {
              "name": "appToken",
              "value": "$(mySecret)"
              }
          ]
    

    Wichtig

    Der Name des Geheimniseingabeparameters muss mit dem Namen übereinstimmen, der im Apache JMeter-Skript verwendet wird.

Sie haben nun ein Geheimnis im CI/CD-Geheimnisspeicher angegeben und einen Verweis an Azure Load Testing übergeben. Sie können jetzt das Geheimnis im Apache JMeter-Skript verwenden.

Verwenden von Geheimnissen in Apache JMeter

In diesem Abschnitt aktualisieren Sie das Apache JMeter-Skript, um das zuvor angegebene Geheimnis zu verwenden.

Zunächst erstellen Sie eine benutzerdefinierte Variable, die den Geheimniswert abruft. Anschließend können Sie diese Variable in Ihrem Test verwenden (z. B. um ein API-Token in einem HTTP-Anforderungsheader zu übergeben).

  1. Erstellen Sie eine benutzerdefinierte Variable in Ihrer JMX-Datei, und weisen Sie ihr den Geheimniswert mithilfe der benutzerdefinierten Funktion GetSecret zu.

    Die Funktion GetSecret(<my-secret-name>) verwendet den Geheimnisnamen als Argument. Sie verwenden diesen Namen auch, wenn Sie den Auslastungstest in einem späteren Schritt konfigurieren.

    Sie können die benutzerdefinierte Variable mithilfe der Apache JMeter-IDE erstellen, wie in der folgenden Abbildung dargestellt:

    Screenshot that shows how to add user-defined variables to your Apache JMeter script.

    Alternativ können Sie die JMX-Datei direkt bearbeiten, wie in diesem Beispielcodeausschnitt gezeigt:

    <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
      <collectionProp name="Arguments.arguments">
        <elementProp name="appToken" elementType="Argument">
          <stringProp name="Argument.name">udv_appToken</stringProp>
          <stringProp name="Argument.value">${__GetSecret(appToken)}</stringProp>
          <stringProp name="Argument.desc">Value for x-secret header </stringProp>
          <stringProp name="Argument.metadata">=</stringProp>
        </elementProp>
      </collectionProp>
    </Arguments>
    
  2. Verweisen Sie im Testskript auf die benutzerdefinierte Variable.

    Sie können die ${}-Syntax verwenden, um im Skript auf die Variable zu verweisen. Im folgenden Beispiel verwenden Sie die udv_appToken-Variable, um einen HTTP-Header festzulegen.

      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="" elementType="Header">
            <stringProp name="Header.name">api-key</stringProp>
            <stringProp name="Header.value">${udv_appToken}</stringProp>
          </elementProp>
        </collectionProp>
      </HeaderManager>
    

Konfigurieren von Auslastungstests mit Umgebungsvariablen

In diesem Abschnitt verwenden Sie Umgebungsvariablen, um Parameter an Ihren Auslastungstest zu übergeben.

  1. Aktualisieren Sie das Apache JMeter-Skript, um die Umgebungsvariable zu verwenden (z. B. um den Hostnamen des Anwendungsendpunkts zu konfigurieren).

  2. Konfigurieren Sie den Auslastungstest, und übergeben Sie die Umgebungsvariable an das Testskript.

Verwenden von Umgebungsvariablen in Apache JMeter

In diesem Abschnitt aktualisieren Sie das Apache JMeter-Skript, um Umgebungsvariablen zum Steuern des Skriptverhaltens zu verwenden.

Sie definieren zuerst eine benutzerdefinierte Variable, die die Umgebungsvariable liest, und dann können Sie diese Variable in der Testausführung verwenden (z. B. zum Aktualisieren der HTTP-Domäne).

  1. Erstellen Sie eine benutzerdefinierte Variable in Ihrer JMX-Datei, und weisen Sie ihr den Wert der Umgebungsvariablen mithilfe der benutzerdefinierten Funktion System.getenv zu.

    Die System.getenv("<my-variable-name>")-Funktion nimmt den Namen der Umgebungsvariablen als Argument an. Sie verwenden diesen Namen, wenn Sie den Auslastungstest konfigurieren.

    Sie können eine benutzerdefinierte Variable mithilfe der Apache JMeter-IDE erstellen, wie in der folgenden Abbildung dargestellt:

    Screenshot that shows how to add user-defined variables for environment variables to your JMeter script.

    Alternativ können Sie die JMX-Datei direkt bearbeiten, wie in diesem Beispielcodeausschnitt gezeigt:

    <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
      <collectionProp name="Arguments.arguments">
        <elementProp name="appToken" elementType="Argument">
          <stringProp name="Argument.name">udv_webapp</stringProp>
          <stringProp name="Argument.value">${__BeanShell( System.getenv("webapp") )}</stringProp>
          <stringProp name="Argument.desc">Web app URL</stringProp>
          <stringProp name="Argument.metadata">=</stringProp>
        </elementProp>
      </collectionProp>
    </Arguments>
    
  2. Verweisen Sie im Testskript auf die benutzerdefinierte Variable.

    Sie können die ${}-Syntax verwenden, um im Skript auf die Variable zu verweisen. Im folgenden Beispiel verwenden Sie die udv_webapp-Variable, um die Anwendungsendpunkt-URL zu konfigurieren.

    <stringProp name="HTTPSampler.domain">${udv_webapp}</stringProp>
    

Konfigurieren von Umgebungsvariablen in Azure Load Testing

Um Umgebungsvariablen an das Apache JMeter-Skript zu übergeben, können Sie den Auslastungstest im Azure-Portal, in der YAML-Testkonfigurationsdatei oder direkt im CI/CD-Workflow konfigurieren.

Wichtig

Wenn Sie die Umgebungsvariable für den Auslastungstest definieren, muss ihr Name mit dem Variablennamen übereinstimmen, den Sie im Apache JMeter-Skript verwendet haben.

Gehen Sie wie folgt vor, um eine Umgebungsvariable für den Auslastungstest im Azure-Portal anzugeben:

  1. Wählen Sie auf der Testkonfigurationseite die Registerkarte Parameter aus.

  2. Geben Sie im Abschnitt Umgebungsvariablen die Umgebungsvariablen Name und Wert ein, und wählen Sie dann Anwenden aus.

    Screenshot that shows how to add an environment variable to a load test in the Azure portal.

Wenn Sie den Auslastungstest in einem CI/CD-Workflow ausführen, können Sie Umgebungsvariablen in der YAML-Testkonfigurationsdatei definieren. Weitere Informationen zur Syntax finden Sie in der YAML-Referenz zur Testkonfiguration.

Alternativ können Sie Umgebungsvariablen direkt in der CI/CD-Workflowdefinition angeben. Sie verwenden Eingabeparameter für die Azure Load Testing-Aktion oder den Azure Pipelines-Task, um Umgebungsvariablen an das Apache JMeter-Skript zu übergeben.

Der folgende YAML-Codeausschnitt zeigt ein GitHub Actions-Beispiel:

- name: 'Azure Load Testing'
  uses: azure/load-testing
  with:
    loadtestConfigFile: 'SampleApp.yaml'
    loadtestResource: 'MyTest'
    resourceGroup: 'loadtests-rg'
    env: |
    [
        {
        "name": "webapp",
        "value": "myapplication.contoso.com"
        }
    ]

Der folgende YAML-Codeausschnitt zeigt ein Azure Pipelines-Beispiel:

- task: AzureLoadTest@1
  inputs:
    azureSubscription: 'MyAzureLoadTestingRG'
    loadTestConfigFile: 'SampleApp.yaml'
    loadTestResource: 'MyTest'
    resourceGroup: 'loadtests-rg'
    env: |
      [
          {
          "name": "webapp",
          "value": "myapplication.contoso.com"
          }
      ]

Häufig gestellte Fragen

Werden meine Geheimniswerte vom Azure Load Testing-Dienst gespeichert?

Nein. Im Azure Load Testing-Dienst werden die Werte von Geheimnissen nicht gespeichert. Wenn Sie einen geheimen Schlüsseltresor-URI verwenden, speichert der Dienst nur den geheimen URI und ruft den Wert des Geheimnisses für jeden Testlauf ab. Wenn Sie den Wert von Geheimnissen in einem CI/CD-Workflow bereitstellen, sind die Geheimniswerte nach dem Testlauf nicht verfügbar. Sie geben diese Werte für jeden Testlauf an.

Was geschieht, wenn sowohl in meiner YAML-Konfigurationsdatei als auch im CI/CD-Workflow Parameter enthalten sind?

Wenn ein Parameter sowohl in der YAML-Konfigurationsdatei als auch in der Azure Load Testing-Aktion oder im Azure Pipelines-Task vorhanden ist, wird der Wert aus dem CI/CD-Workflow für den Testlauf verwendet.

Ich habe einen Test in meinem CI/CD-Workflow erstellt und ausgeführt, indem ich Parameter mithilfe des Azure Load Testing-Tasks oder der Aktion übergeben habe. Kann ich diesen Test im Azure-Portal mit denselben Parametern ausführen?

Die Werte der Parameter werden nicht gespeichert, wenn sie vom CI/CD-Workflow übergeben werden. Sie müssen die Parameterwerte erneut angeben, wenn Sie den Test im Azure-Portal ausführen. Sie erhalten eine Aufforderung zur Eingabe der fehlenden Werte. Für Geheimniswerte geben Sie den Schlüsseltresor-Geheimnis-URI ein. Die Werte, die Sie auf der Seite für den Testlauf oder erneutes Ausführen eingeben, sind nur für diesen Testlauf gültig. Wenn Sie Änderungen auf Testebene vornehmen möchten, wechseln Sie zu Test konfigurieren, und geben Sie Ihre Parameterwerte ein.

Nächste Schritte