Configureerbare belastingstests maken met geheimen en omgevingsvariabelen

Meer informatie over het wijzigen van het gedrag van een belastingstest zonder wijzigingen aan te brengen in het Apache JMeter-script. Met Azure Load Testing Preview kunt u parameters gebruiken om een configureerbaar testscript te maken. Zet het eindpunt van de toepassing bijvoorbeeld om in een parameter om uw testscript opnieuw te gebruiken in meerdere omgevingen.

De Azure Load Testing-service ondersteunt twee typen parameters:

  • Geheimen: bevatten gevoelige informatie en worden veilig doorgegeven aan de belastingtest-engine. Bijvoorbeeld om webservicereferenties op te geven in plaats van ze hard te coderen in het testscript. Zie Belastingstests configureren met geheimen voor meer informatie.

  • Omgevingsvariabelen: bevatten niet-gevoelige informatie en zijn beschikbaar als omgevingsvariabelen in de belastingtest-engine. Bijvoorbeeld om de EINDPUNT-URL van de toepassing configureerbaar te maken. Zie Belastingstests configureren met omgevingsvariabelen voor meer informatie.

Belangrijk

Azure Load Testing is momenteel beschikbaar als preview-versie. Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.

Vereisten

  • Een Azure-account met een actief abonnement. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.

  • Een Azure Load Testing-resource. Als u een Azure Load Testing-resource moet maken, bekijkt u de quickstart Een belastingstest maken en uitvoeren.

Belastingstests configureren met geheimen

In deze sectie configureert u de belastingstest om geheimen door te geven aan uw belastingstestscript.

  1. Werk het Apache JMeter-script bij om een geheime invoerparameter te accepteren en te gebruiken. Bijvoorbeeld een verificatie-token voor de webservice dat u door geeft aan een HTTP-header.

  2. Sla de geheime waarde op in een geheim opslag, zodat u de toegang nauw kunt controleren. Azure Load Testing kan worden geïntegreerd met Azure Key Vault of met het geheimopslag dat is gekoppeld aan uw CI/CD-werkstroom.

  3. Configureer de belastingstest en geef een verwijzing voor het geheim door aan het testscript.

Geheimen gebruiken in Apache JMeter

In deze sectie gaat u het Apache JMeter-script bijwerken om een geheim als invoerparameter te gebruiken.

Eerst definieert u een door de gebruiker gedefinieerde variabele die de geheime waarde op haalt. Vervolgens kunt u deze variabele gebruiken in de testuitvoering, bijvoorbeeld om een HTTP-aanvraagheader in te stellen.

  1. Maak een door de gebruiker gedefinieerde variabele in uw JMX-bestand en wijs de geheime waarde toe met behulp van de GetSecret aangepaste functie.

    De GetSecret(<my-secret-name>) functie gebruikt de geheime naam als argument. U gebruikt dezelfde naam wanneer u de belastingstest in een latere stap configureert.

    In de volgende schermopname ziet u hoe u een door de gebruiker gedefinieerde variabele maakt met behulp van de Apache JMeter IDE.

    Schermopname die laat zien hoe u door de gebruiker gedefinieerde variabelen toevoegt aan uw Apache JMeter-script.

    In plaats daarvan kunt u ook het JMX-bestand rechtstreeks bewerken, zoals wordt weergegeven in dit voorbeeldcodefragment:

    <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. Verwijs naar de door de gebruiker gedefinieerde variabele in het testscript.

    U kunt de ${} syntaxis gebruiken om te verwijzen naar de variabele in het script. In het volgende voorbeeld gebruikt u de variabele udv_appToken om een HTTP-header in te stellen.

      <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>
    

Gebruik Azure Key Vault

Wanneer u een belastingstest maakt in de Azure Portal of als u een YAML-testconfiguratiebestandgebruikt, gebruikt u een verwijzing naar een Azure Key Vault geheim.

Notitie

Als u een belastingstest als onderdeel van uw CI/CD-proces hebt uitgevoerd, kunt u ook het bijbehorende geheime opslag gebruiken. Ga verder met Het geheime CI/CD-opslag gebruiken.

  1. Voeg het geheim toe Azure Key Vault, als het nog niet bestaat.

  2. Haal de Key Vault voor uw geheim op. U gebruikt deze geheime id om uw belastingstest te configureren.

    Schermopname van de details van het geheim in Azure Key Vault.

    De geheime id is de volledige URI van het geheim in Azure Key Vault. U kunt eventueel ook een versienummer opnemen. Bijvoorbeeld https://myvault.vault.azure.net/secrets/mysecret/ of https://myvault.vault.azure.net/secrets/mysecret/abcdef01-2345-6789-0abc-def012345678.

  3. Verleen uw Azure Load Testing-resource toegang tot Key Vault.

    Uw Azure Load Testing-resource heeft geen toestemming om geheimen op te halen uit Azure Key Vault. U gaat eerst door het systeem toegewezen beheerde identiteit inschakelen voor uw resource voor belastingstests. Vervolgens verleent u leesmachtigingen voor deze beheerde identiteit.

    Zie Beheerde identiteiten gebruiken voor Azure Load Testingom Azure Load Testing toegang te geven tot uw Key Vault.

  4. Verwijs naar het geheim in de configuratie van de belastingstest.

    U definieert een geheimparameter voor belastingstests voor elk geheim waarnaar u verwijst in het Apache JMeter-script. De parameternaam moet overeenkomen met de naam die u in het testscript hebt gebruikt. De waarde van de geheime parameter is de Key Vault beveiligings-id.

    U kunt geheimenparameters opgeven in het Azure Portal of in het YAML-configuratiebestand van de belastingtest.

    Selecteer in Azure Portal uw belastingstest, selecteer Configureren en voer vervolgens de parameterdetails in het tabblad Parameters in.

    Schermopname die laat zien hoe u geheime gegevens toevoegt aan een belastingstest.

    In plaats daarvan kunt u ook een geheim opgeven in het YAML-configuratiebestand. Zie de YAML-referentie voor testconfiguratie voor meer informatie over de syntaxis.

Het geheime CI/CD-opslag gebruiken

Als u Azure Load Testing gebruikt in uw CI/CD-werkstroom, kunt u ook het bijbehorende geheime opslag gebruiken. U kunt bijvoorbeeld de opslagplaatsgeheimen GitHubgeheime variabelen in Azure Pipelines gebruiken.

Notitie

Als u al een Azure Key Vault, kunt u deze ook gebruiken om de geheimen van de belastingstest op te slaan. Ga verder met Azure KeyVault gebruiken.

  1. Voeg de geheime waarde toe aan het geheime CI/CD-opslag, als deze nog niet bestaat.

    In Azure Pipelines kunt u de pijplijn bewerken en een variabele toevoegen.

    Schermopname die laat zien hoe u een variabele toevoegt aan Azure Pipelines.

    In GitHub kunt u de GitHub gebruiken.

    Schermopname die laat zien hoe u een geheim GitHub opslagplaats toevoegt.

    Notitie

    Zorg ervoor dat u de werkelijke geheime waarde gebruikt en niet de Key Vault geheime id als de waarde.

  2. Geef het geheim door als invoerparameter voor de taak/actie Belasting testen in de CI/CD-werkstroom.

    In het volgende YAML-fragment ziet u een voorbeeld GitHub Acties.

    - 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 }}",
            }
        ]
    

    In het volgende YAML-fragment ziet u een Voorbeeld van Azure Pipelines.

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

    Belangrijk

    De naam van de geheime parameter moet overeenkomen met de naam die wordt gebruikt in het Apache JMeter-script.

Belastingstests configureren met omgevingsvariabelen

In deze sectie gebruikt u omgevingsvariabelen om parameters door te geven aan uw belastingstest.

  1. Werk het Apache JMeter-script bij om de omgevingsvariabele te gebruiken. Bijvoorbeeld om de hostnaam van het toepassings-eindpunt te configureren.

  2. Configureer de belastingstest en geef de omgevingsvariabele door aan het testscript.

Omgevingsvariabelen gebruiken in Apache JMeter

In deze sectie gaat u het Apache JMeter-script bijwerken om omgevingsvariabelen te gebruiken om het scriptgedrag te bepalen.

Eerst definieert u een door de gebruiker gedefinieerde variabele die de omgevingsvariabele leest. Vervolgens kunt u deze variabele gebruiken in de testuitvoering, bijvoorbeeld om het HTTP-domein bij te werken.

  1. Maak een door de gebruiker gedefinieerde variabele in uw JMX-bestand en wijs de waarde van de omgevingsvariabele toe met behulp van de System.getenv functie .

    De System.getenv("<my-variable-name>") functie gebruikt de naam van de omgevingsvariabele als argument. U gebruikt dezelfde naam wanneer u de belastingstest configureert.

    In de volgende schermopname ziet u hoe u een door de gebruiker gedefinieerde variabele maakt met behulp van de Apache JMeter IDE.

    Schermopname die laat zien hoe u door de gebruiker gedefinieerde variabelen voor omgevingsvariabelen toevoegt aan uw JMeter-script.

    In plaats daarvan kunt u ook het JMX-bestand rechtstreeks bewerken, zoals wordt weergegeven in dit voorbeeldcodefragment:

    <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. Verwijs naar de door de gebruiker gedefinieerde variabele in het testscript.

    U kunt de ${} syntaxis gebruiken om te verwijzen naar de variabele in het script. In het volgende voorbeeld gebruikt u de variabele om de eindpunt-URL van de toepassing udv_webapp te configureren.

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

Omgevingsvariabelen configureren in Azure Load Testing

Als u omgevingsvariabelen wilt doorgeven aan het Apache JMeter-script, kunt u de belastingstest configureren in de Azure Portal, in het YAML-testconfiguratiebestand of rechtstreeks in de CI/CD-werkstroom.

Belangrijk

Wanneer u de omgevingsvariabele voor de belastingstest definieert, moet de naam overeenkomen met de naam van de variabele die u in het Apache JMeter-script hebt gebruikt.

Als u een omgevingsvariabele voor de belastingstest wilt opgeven met behulp van de Azure Portal, moet u de volgende stappen uitvoeren:

  1. Ga op de pagina testconfiguratie naar het tabblad Parameters.

  2. Voer in de sectie Omgevingsvariabelen de omgevingsvariabele Naam en Waarde in en selecteer toepassen.

    Schermopname die laat zien hoe u een omgevingsvariabele toevoegt aan een belastingstest.

Als u de belastingstest in een CI/CD-werkstroom hebt uitgevoerd, kunt u omgevingsvariabelen definiëren in het YAML-testconfiguratiebestand. Zie de YAML-referentie voor testconfiguratie voor meer informatie over de syntaxis.

U kunt ook rechtstreeks omgevingsvariabelen opgeven in de CI/CD-werkstroomdefinitie. U gebruikt invoerparameters voor de GitHub-actie of Azure Pipelines-taak om omgevingsvariabelen door te geven aan het Apache JMeter-script.

In het volgende YAML-fragment ziet u een voorbeeld GitHub Acties.

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

In het volgende YAML-fragment ziet u een Voorbeeld van Azure Pipelines.

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

Veelgestelde vragen

Worden mijn geheimenwaarden opgeslagen door de Azure Load Testing-service?

Nee. De waarden van geheimen worden niet opgeslagen door de Azure Load Testing-service. Wanneer u een geheime Azure Key Vault gebruikt, slaat de service alleen de geheime URI op en haalt de waarde van het geheim op voor elke testrun. Als u de waarde van geheimen in een CI/CD-werkstroom hebt opgegeven, zijn de geheime waarden na de test niet meer beschikbaar. U geeft deze waarden op voor elke testrun.

Wat gebeurt er als ik parameters heb in zowel mijn YAML-configuratiebestand als in de CI/CD-werkstroom?

Als er een parameter bestaat in zowel het YAML-configuratiebestand als de Azure Pipelines-taak of GitHub-actie, wordt de waarde van de Azure Pipelines-taak of GitHub Action gebruikt voor de testrun.

Ik heb een test gemaakt en uitgevoerd vanuit mijn CI/CD-werkstroom door parameters door te geven met behulp van de Azure Load Testing-taak/-actie. Kan ik deze test uitvoeren vanaf Azure Portal dezelfde parameters?

De waarden van de parameters worden niet opgeslagen wanneer ze worden doorgegeven vanuit de CI/CD-werkstroom. U moet de parameterwaarden opnieuw opgeven wanneer u de test vanaf de Azure Portal. U krijgt een prompt om de ontbrekende waarden in te voeren. Voor geheime waarden voert u de geheime URI Azure Key Vault in. De waarden die zijn ingevoerd op de pagina voor het uitvoeren of opnieuw uitvoeren van de test, zijn alleen geldig voor die testuit voeren. Als u wijzigingen wilt aanbrengen op testniveau, gaat u naar Test configureren en geeft u de parameterwaarden op.