Konfigurer hemmeligheder og miljøvariabler

Fuldført

Få mere at vide om, hvordan du overfører hemmeligheder og miljøer som parametre til en belastningstest i Azure Load Testing. Du kan bruge parametre til at ændre funktionsmåden for en belastningstest uden at skulle redigere Apache JMeter-scriptet. Hvis du f.eks. vil teste et webprogram, skal du angive URL-adressen til slutpunktet som en parameter for at genbruge dit testscript på tværs af flere miljøer. Du kan også bruge parametre til at undgå at skulle hard code følsomme oplysninger i JMeter-testscriptet.

Tjenesten Azure Load Testing understøtter to typer parametre:

  • Secrets: Indeholder følsomme oplysninger og overføres sikkert til belastningstestprogrammet. Hemmeligheder leverer f.eks. legitimationsoplysninger til webtjenesten i stedet for at kode dem hårdt i testscriptet.

  • Miljøvariabler: Indeholder ikke-følsomme oplysninger og er tilgængelige som miljøvariabler i belastningstestprogrammet. Miljøvariabler gør f.eks. URL-adressen til programslutpunktet konfigurerbar.

Du kan angive parametre i konfigurationen af indlæsningstesten, når du opretter en ny test eller opdaterer en eksisterende test. Hvis du kører en belastningstest i ci/cd-arbejdsprocessen, definerer du parametre i konfigurationsfilen til belastningstesten eller i definitionen af CI/CD-arbejdsprocessen.

Konfigurer indlæsningstest med hemmeligheder

I dette afsnit lærer du, hvordan du overfører hemmeligheder til dit belastningstestscript i Azure Load Testing. Du kan f.eks. bruge en hemmelighed til at overføre API-nøglen til et slutpunkt for webtjenesten, som du indlæser test af. I stedet for at gemme API-nøglen i konfigurationen eller kode den hårdt i scriptet, kan du gemme den i et hemmeligt lager for at styre adgangen til hemmeligheden nøje.

Azure Load Testing giver dig mulighed for at gemme hemmeligheder i Azure Key Vault. Når du kører din belastningstest i en CI/CD-pipeline, kan du også bruge det hemmelige lager, der er knyttet til din CI/CD-teknologi, f.eks. Azure Pipelines eller GitHub Actions.

Hvis du vil bruge hemmeligheder med Azure Load Testing, skal du udføre følgende trin:

  1. Gem værdien for hemmeligheden i det hemmelige lager
  2. Overfør en reference til hemmeligheden i Apache JMeter-testscriptet.
  3. Brug den hemmelige værdi i Apache JMeter-testscriptet ved hjælp af den GetSecret brugerdefinerede funktion.

Vigtig

Du kan kun bruge den GetSecret brugerdefinerede funktion, når du kører dit JMeter-testscript med Azure Load Testing. Hvis du kører testscriptet lokalt, skal du opdatere testscriptet og læse værdier for hemmeligheden på en anden måde.

Brug GitHub Secret Store til at gemme indlæsningstesthemmeligheder

Sådan bruger du hemmeligheder i CI/CD-hemmelighedslageret og sender dem til din belastningstest i CI/CD:

  1. Føj værdien for hemmeligheden til GitHub Actions Secret Store.

    I GitHub kan du bruge GitHub-lagerhemmeligheder.

    Skærmbillede, der viser, hvordan du tilføjer en GitHub-lagerhemmelighed.

  2. Overfør hemmeligheden som en inputparameter til indlæsningstestopgaven/-handlingen i CI/CD-arbejdsprocessen.

    Følgende YAML-kodestykke viser, hvordan du overfører hemmeligheden til Load Testing GitHub-handlingen:

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

    Vigtig

    Navnet på den hemmelige inputparameter skal svare til det navn, der bruges i Apache JMeter-scriptet.

Du har angivet en hemmelighed i CI/CD-hemmelighedslageret og overført en reference til Azure Load Testing. Du kan nu bruge hemmeligheden i Apache JMeter-scriptet.

Brug hemmeligheder i Apache JMeter

Derefter skal du opdatere Apache JMeter-scriptet for at bruge den hemmelighed, du angav tidligere.

Du skal først oprette en brugerdefineret variabel, der henter værdien for hemmeligheden. Derefter kan du bruge denne variabel i din test. Det kan f.eks. være at overføre et API-token i en HTTP-anmodningsheader.

  1. Opret en brugerdefineret variabel i din JMX-fil, og tildel den hemmelige værdi ved hjælp af den GetSecret brugerdefinerede funktion.

    Funktionen GetSecret(<my-secret-name>) bruger det hemmelige navn som argument. Du bruger det samme navn, når du konfigurerer indlæsningstesten på et senere trin.

    Du kan oprette den brugerdefinerede variabel ved hjælp af Apache JMeter IDE som vist på følgende billede:

    Skærmbillede, der viser, hvordan du føjer brugerdefinerede variabler til dit Apache JMeter-script.

    Du kan også redigere JMX-filen direkte som vist i dette eksempel på kodestykket:

    <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. Reference til den brugerdefinerede variabel i testscriptet.

    Du kan bruge ${}-syntaksen til at referere til variablen i scriptet. I følgende eksempel skal du bruge variablen udv_appToken til at angive en HTTP-header.

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

Konfigurer belastningstest med miljøvariabler

I dette afsnit skal du bruge miljøvariabler til at overføre parametre til din belastningstest.

  1. Opdater Apache JMeter-scriptet for at bruge miljøvariablen. For eksempel for at konfigurere værtsnavnet for programslutpunktet.

  2. Konfigurer belastningstesten, og send miljøvariablen til testscriptet.

Brug miljøvariabler i Apache JMeter

I dette afsnit skal du opdatere Apache JMeter-scriptet for at bruge miljøvariabler til at styre scriptets funktionsmåde.

Du definerer først en brugerdefineret variabel, der læser miljøvariablen, og derefter kan du bruge denne variabel i udførelse af test. For eksempel for at opdatere HTTP-domænet.

  1. Opret en brugerdefineret variabel i JMX-filen, og tildel miljøvariablens værdi til den ved hjælp af funktionen System.getenv.

    Funktionen System.getenv("<my-variable-name>") bruger navnet på miljøvariablen som et argument. Du bruger det samme navn, når du konfigurerer indlæsningstesten.

    Du kan oprette en brugerdefineret variabel ved hjælp af Apache JMeter IDE som vist på følgende billede:

    Skærmbillede, der viser, hvordan du føjer brugerdefinerede variabler for miljøvariabler til dit JMeter-script.

    Du kan også redigere JMX-filen direkte som vist i dette eksempel på kodestykket:

    <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. Reference til den brugerdefinerede variabel i testscriptet.

    Du kan bruge ${}-syntaksen til at referere til variablen i scriptet. I følgende eksempel skal du bruge variablen udv_webapp til at konfigurere URL-adressen til programmets slutpunkt.

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

Konfigurer miljøvariabler i Azure Load Testing

Hvis du vil overføre miljøvariabler til Apache JMeter-scriptet, kan du konfigurere belastningstesten på Azure Portal, i YAML-testkonfigurationsfilen eller direkte i CI/CD-arbejdsprocessen.

Følgende YAML-kodestykke viser et eksempel på GitHub-handlinger:

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