Configurare segreti e variabili di ambiente

Completato

Scopri come passare segreti e ambienti come parametri in un test di carico in Azure Load Testing. È possibile usare i parametri per modificare il comportamento di un test di carico senza dover modificare lo script Apache JMeter. Ad esempio, per testare un'applicazione Web, specificare l'URL dell'endpoint come parametro per riutilizzare lo script di test in più ambienti. È anche possibile usare i parametri per evitare di dover impostare come hardcoded le informazioni riservate nello script di test di JMeter.

Il servizio Test di carico di Azure supporta due tipi di parametri:

  • Segreti: contengono informazioni riservate e vengono passati in modo sicuro al motore di test di carico. Ad esempio, i segreti forniscono le credenziali del servizio Web anziché impostarle come hardcoded nello script di test.

  • variabili di ambiente: contengono informazioni non sensibili e sono disponibili come variabili di ambiente nel motore di test di carico. Ad esempio, le variabili di ambiente rendono configurabile l'URL dell'endpoint dell'applicazione.

È possibile specificare i parametri nella configurazione del test di carico quando si crea un nuovo test o si aggiorna un test esistente. Se si esegue un test di carico nel flusso di lavoro CI/CD, si definiscono i parametri nel file di configurazione del test di carico o nella definizione del flusso di lavoro CI/CD.

Configurare i test di carico con informazioni riservate

In questa sezione, si apprenderà come passare informazioni riservate allo script del test di carico in Azure Load Testing. Ad esempio, è possibile usare un segreto per passare la chiave API a un endpoint del servizio Web di cui si sta eseguendo il test di carico. Anziché archiviare la chiave API nella configurazione o inserirla direttamente nel codice dello script, è possibile salvarla in un archivio protetto per controllare rigorosamente l'accesso al segreto.

Test di carico di Azure consente di archiviare i segreti in Azure Key Vault. In alternativa, quando si esegue il test di carico in una pipeline CI/CD, è anche possibile usare l'archivio segreto associato alla tecnologia CI/CD, ad esempio Azure Pipelines o GitHub Actions.

Per usare i segreti con Test carico di Azure, seguire questa procedura:

  1. Archiviare il valore del segreto nell'archivio segreti
  2. Passare un riferimento al segreto nello script di test di Apache JMeter.
  3. Utilizzare il valore segreto nello script di test di Apache JMeter utilizzando la funzione personalizzata GetSecret.

Importante

È possibile usare la funzione personalizzata GetSecret solo quando si esegue lo script di test JMeter con Test di carico di Azure. Se si esegue lo script di test in locale, è necessario aggiornare lo script di test e leggere i valori dei segreti in modo diverso.

Usare l'archivio segreto GitHub per salvare i segreti dei test di carico

Per usare i segreti nell'archivio segreto CI/CD e passarli al test di carico in CI/CD:

  1. Aggiungere il valore del segreto all'archivio segreti di GitHub Actions.

    In GitHub è possibile usare i segreti del repository GitHub .

    Screenshot che mostra come aggiungere un segreto del repository GitHub.

  2. Passare il segreto come parametro di input all'attività/azione Test di carico nel flusso di lavoro CI/CD.

    Il frammento di codice YAML seguente illustra come passare il segreto all'azione GitHub test di carico:

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

    Importante

    Il nome del parametro di input segreto deve coincidere con quello usato nello script di Apache JMeter.

È stato specificato un segreto nell'archivio segreto CI/CD ed è stato passato un riferimento a Test di carico di Azure. È ora possibile usare il segreto nello script Apache JMeter.

Usare i segreti in Apache JMeter

Aggiornare quindi lo script Apache JMeter per usare il segreto specificato in precedenza.

Per prima cosa, creare una variabile definita dall'utente che recupera il valore segreto. È quindi possibile usare questa variabile nel test. Ad esempio, per passare un token API in un'intestazione di richiesta HTTP.

  1. Creare una variabile definita dall'utente nel file JMX e assegnarvi il valore del segreto usando la funzione personalizzata GetSecret.

    La funzione GetSecret(<my-secret-name>) accetta il nome del segreto come argomento. Si utilizza lo stesso nome quando si configura il test di carico in un passaggio successivo.

    È possibile creare la variabile definita dall'utente usando l'IDE apache JMeter, come illustrato nell'immagine seguente:

    Screenshot che mostra come aggiungere variabili definite dall'utente allo script Apache JMeter.

    In alternativa, è possibile modificare direttamente il file JMX, come illustrato in questo frammento di codice di esempio:

    <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. Fare riferimento alla variabile definita dall'utente nello script di test.

    È possibile usare la sintassi ${} per fare riferimento alla variabile nello script. Nell'esempio seguente viene usata la variabile udv_appToken per impostare un'intestazione HTTP.

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

Configurare i test di carico con le variabili di ambiente

In questa sezione si usano le variabili di ambiente per passare i parametri al test di carico.

  1. Aggiornare lo script Apache JMeter per usare la variabile di ambiente. Ad esempio, per configurare il nome host dell'endpoint dell'applicazione.

  2. Configurare il test di carico e passare la variabile di ambiente allo script di test.

Usare le variabili di ambiente in Apache JMeter

In questa sezione si aggiorna lo script Apache JMeter per usare le variabili di ambiente per controllare il comportamento dello script.

Per prima cosa si definisce una variabile definita dall'utente che legge la variabile di ambiente e quindi è possibile usare questa variabile nell'esecuzione del test. Ad esempio, per aggiornare il dominio HTTP.

  1. Creare una variabile definita dall'utente nel file JMX e assegnarvi il valore della variabile di ambiente usando la funzione System.getenv.

    La funzione System.getenv("<my-variable-name>") accetta il nome della variabile di ambiente come argomento. Usi questo stesso nome quando configuri il test di carico.

    È possibile creare una variabile definita dall'utente usando l'IDE apache JMeter, come illustrato nell'immagine seguente:

    Screenshot che mostra come aggiungere variabili definite dall'utente per le variabili di ambiente allo script JMeter.

    In alternativa, è possibile modificare direttamente il file JMX, come illustrato in questo frammento di codice di esempio:

    <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. Fare riferimento alla variabile definita dall'utente nello script di test.

    È possibile usare la sintassi ${} per fare riferimento alla variabile nello script. Nell'esempio seguente viene usata la variabile udv_webapp per configurare l'URL dell'endpoint dell'applicazione.

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

Configurare le variabili di ambiente in Test di carico di Azure

Per passare le variabili di ambiente allo script Apache JMeter, è possibile configurare il test di carico nel portale di Azure, nel file di configurazione del test YAML o direttamente nel flusso di lavoro CI/CD.

Il frammento YAML seguente mostra un esempio di GitHub Actions:

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