Używanie wpisów tajnych i zmiennych środowiskowych w usłudze Azure Load Testing

Z tego artykułu dowiesz się, jak przekazywać wpisy tajne i środowiska jako parametry do testu obciążeniowego w usłudze Azure Load Testing. Parametry umożliwiają zmianę zachowania testu obciążeniowego bez konieczności edytowania skryptu Apache JMeter. Aby na przykład przetestować aplikację internetową, określ adres URL punktu końcowego jako parametr umożliwiający ponowne użycie skryptu testowego w wielu środowiskach. Możesz również użyć parametrów, aby uniknąć konieczności stosowania twardych informacji poufnych w skry skryptie testowym JMeter.

Usługa Azure Load Testing obsługuje dwa typy parametrów:

Parametry można określić w konfiguracji testu obciążeniowego podczas tworzenia nowego testu lub aktualizowania istniejącego testu. Jeśli uruchomisz test obciążeniowy w przepływie pracy ciągłej integracji/ciągłego wdrażania, zdefiniuj parametry w pliku konfiguracji testu obciążeniowego lub w definicji przepływu pracy ciągłej integracji/ciągłego wdrażania.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

  • Zasób testowania obciążenia platformy Azure. Jeśli musisz utworzyć zasób usługi Azure Load Testing, zobacz przewodnik Szybki start Tworzenie i uruchamianie testu obciążeniowego.

Konfigurowanie testów obciążeniowych przy użyciu wpisów tajnych

W tej sekcji dowiesz się, jak przekazywać wpisy tajne do skryptu testu obciążeniowego w usłudze Azure Load Testing. Możesz na przykład użyć wpisu tajnego, aby przekazać klucz interfejsu API do punktu końcowego usługi internetowej, który testujesz obciążenie. Zamiast przechowywać klucz interfejsu API w konfiguracji lub trwale kodować go w skrypie, możesz zapisać go w magazynie wpisów tajnych, aby ściśle kontrolować dostęp do wpisu tajnego.

Testowanie obciążenia platformy Azure umożliwia przechowywanie wpisów tajnych w usłudze Azure Key Vault. Alternatywnie po uruchomieniu testu obciążeniowego w potoku ciągłej integracji/ciągłego wdrażania można również użyć magazynu wpisów tajnych skojarzonych z technologią ciągłej integracji/ciągłego wdrażania, takimi jak Azure Pipelines lub GitHub Actions.

Aby używać wpisów tajnych z usługą Azure Load Testing, wykonaj następujące kroki:

  1. Zapisz wartość wpisu tajnego w magazynie wpisów tajnych (usługa Azure Key Vault lub magazyn wpisów tajnych ciągłej integracji/ciągłego wdrażania).
  2. Przekaż odwołanie do wpisu tajnego do skryptu testowego apache JMeter.
  3. Użyj wartości wpisu tajnego w skrypie testowym Apache JMeter przy użyciu funkcji niestandardowej GetSecret .

Ważne

Funkcję niestandardową można używać tylko podczas uruchamiania skryptu GetSecret testowego JMeter za pomocą testowania obciążenia platformy Azure. Jeśli uruchamiasz skrypt testowy lokalnie, musisz zaktualizować skrypt testowy i odczytać wartości wpisów tajnych w inny sposób.

Przechowywanie wpisów tajnych testów obciążeniowych przy użyciu usługi Azure Key Vault

Za pomocą usługi Azure Key Vault możesz przekazać wartości wpisów tajnych do skryptu testowego w usłudze Azure Load Testing. Dodasz odwołanie do wpisu tajnego w konfiguracji testowania obciążenia platformy Azure. Usługa Azure Load Testing następnie używa tego odwołania do pobierania wartości wpisu tajnego w skrypie Apache JMeter.

Musisz również udzielić usłudze Azure Load Testing dostępu do magazynu kluczy platformy Azure, aby pobrać wartość wpisu tajnego.

Uwaga

Jeśli uruchomisz test obciążeniowy w ramach procesu ciągłej integracji/ciągłego wdrażania, możesz również użyć powiązanego magazynu wpisów tajnych. Przejdź do sekcji Korzystanie z magazynu wpisów tajnych ciągłej integracji/ciągłego wdrażania.

Tworzenie wpisu tajnego w usłudze Azure Key Vault

  1. Jeśli jeszcze tego nie zrobiono, dodaj wartość wpisu tajnego do magazynu kluczy.

    Ważne

    Jeśli dostęp do magazynu kluczy platformy Azure został ograniczony przez zaporę lub sieć wirtualną, wykonaj następujące kroki, aby udzielić dostępu do zaufanych usług platformy Azure.

  2. Pobierz identyfikator wpisu tajnego magazynu kluczy dla wpisu tajnego. Ten identyfikator wpisu tajnego służy do konfigurowania testu obciążeniowego.

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

    Identyfikator wpisu tajnego jest pełnym identyfikatorem URI wpisu tajnego w usłudze Azure Key Vault. Opcjonalnie możesz również dołączyć numer wersji. Na przykład: https://myvault.vault.azure.net/secrets/mysecret/ lub https://myvault.vault.azure.net/secrets/mysecret/abcdef01-2345-6789-0abc-def012345678.

Dodawanie wpisu tajnego do testu obciążeniowego

  1. Odwołuj się do wpisu tajnego w konfiguracji testu obciążeniowego.

    Zdefiniuj parametr wpisu tajnego testu obciążeniowego dla każdego wpisu tajnego, do którego odwołujesz się w skry skrypie Apache JMeter. Nazwa parametru powinna być zgodna z nazwą wpisu tajnego używaną w skrypie testowym Apache JMeter. Wartość parametru to identyfikator zabezpieczeń magazynu kluczy.

    Parametry wpisu tajnego można określić, wykonując jedną z następujących czynności:

    • W witrynie Azure Portal wybierz test obciążeniowy, wybierz pozycję Konfiguruj, wybierz kartę Parametry , a następnie wprowadź szczegóły parametru.

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

    • Jeśli konfigurujesz przepływ pracy ciągłej integracji/ciągłego wdrażania i używasz usługi Azure Key Vault, możesz określić wpis tajny w pliku konfiguracji YAML przy użyciu secrets właściwości . Aby uzyskać więcej informacji na temat składni, zobacz dokumentację YAML konfiguracji testowej.

  2. Określ tożsamość używaną przez usługę Azure Load Testing w celu uzyskania dostępu do wpisów tajnych w usłudze Azure Key Vault.

    Tożsamość może być tożsamością przypisaną przez system zasobu testowania obciążenia lub jedną z tożsamości przypisanych przez użytkownika. Upewnij się, że używasz tej samej tożsamości, której udzielono wcześniej dostępu.

    Tożsamość referencyjną magazynu kluczy można określić, wykonując jedną z następujących czynności:

    • W witrynie Azure Portal wybierz test obciążeniowy, wybierz pozycję Konfiguruj, wybierz kartę Parametry, a następnie skonfiguruj tożsamość referencyjną usługi Key Vault.

      Screenshot that shows how to select key vault reference identity.

    • Jeśli konfigurujesz przepływ pracy ciągłej integracji/ciągłego wdrażania i używasz usługi Azure Key Vault, możesz określić tożsamość referencyjną w pliku konfiguracji YAML przy użyciu keyVaultReferenceIdentity właściwości . Aby uzyskać więcej informacji na temat składni, zobacz dokumentację YAML konfiguracji testowej.

Udzielanie dostępu do magazynu kluczy platformy Azure

Podczas przechowywania wpisów tajnych testów obciążeniowych lub certyfikatów w usłudze Azure Key Vault zasób testowania obciążenia używa tożsamości zarządzanej do uzyskiwania dostępu do magazynu kluczy. Po skonfigurowaniu tożsamości zarządzania należy udzielić tożsamości zarządzanej uprawnień zasobu do testowania obciążenia, aby odczytać te wartości z magazynu kluczy.

Aby przyznać zasobom testowania obciążenia platformy Azure uprawnienia do odczytywania wpisów tajnych lub certyfikatów z magazynu kluczy platformy Azure:

  1. W witrynie Azure Portal przejdź do zasobu usługi Azure Key Vault.

    Jeśli nie masz magazynu kluczy, postępuj zgodnie z instrukcjami w przewodniku Szybki start usługi Azure Key Vault, aby go utworzyć.

  2. W okienku po lewej stronie wybierz pozycję Zasady dostępu, a następnie wybierz pozycję + Utwórz.

  3. Na karcie Uprawnienia w obszarze Uprawnienia w obszarze Uprawnienia tajne wybierz pozycję Pobierz, a następnie wybierz pozycję Dalej.

    Uwaga

    Testowanie obciążenia platformy Azure pobiera certyfikaty jako klucz tajny , aby upewnić się, że klucz prywatny certyfikatu jest dostępny.

  4. Na karcie Podmiot zabezpieczeń wyszukaj i wybierz tożsamość zarządzaną dla zasobu testowania obciążenia, a następnie wybierz pozycję Dalej.

    Jeśli używasz tożsamości zarządzanej przypisanej przez system, nazwa tożsamości zarządzanej jest zgodna z nazwą zasobu testowania obciążenia platformy Azure.

  5. Ponownie wybierz przycisk Dalej .

    Po uruchomieniu testu tożsamość zarządzana skojarzona z zasobem testowania obciążenia może teraz odczytywać wpisy tajne lub certyfikaty dla testu obciążeniowego z magazynu kluczy.

Teraz, po dodaniu wpisu tajnego w usłudze Azure Key Vault, skonfigurowanego wpisu tajnego dla testu obciążeniowego, możesz teraz przejść do sekcji Używanie wpisów tajnych w narzędziu Apache JMeter.

Zapisywanie wpisów tajnych testu obciążenia przy użyciu magazynu wpisów tajnych ciągłej integracji/ciągłego wdrażania

Jeśli używasz usługi Azure Load Testing w przepływie pracy ciągłej integracji/ciągłego wdrażania, możesz również użyć skojarzonego magazynu wpisów tajnych. Możesz na przykład użyć wpisów tajnych repozytorium GitHub lub zmiennych wpisów tajnych w usłudze Azure Pipelines.

Uwaga

Jeśli używasz już magazynu kluczy, możesz również użyć go do przechowywania wpisów tajnych testu obciążenia. Przejdź do sekcji Korzystanie z usługi Azure Key Vault.

Aby używać wpisów tajnych w magazynie wpisów tajnych ciągłej integracji/ciągłego wdrażania i przekazać je do testu obciążeniowego w ciągłej integracji/ciągłego wdrażania:

  1. Dodaj wartość wpisu tajnego do magazynu wpisów tajnych ciągłej integracji/ciągłego wdrażania, jeśli jeszcze nie istnieje.

    W usłudze Azure Pipelines możesz edytować potok i dodać zmienną.

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

    W usłudze GitHub można używać wpisów tajnych repozytorium GitHub.

    Screenshot that shows how to add a GitHub repository secret.

    Uwaga

    Pamiętaj, aby użyć rzeczywistej wartości wpisu tajnego, a nie identyfikatora wpisu tajnego magazynu kluczy jako wartości.

  2. Przekaż wpis tajny jako parametr wejściowy do zadania/akcji testowania obciążenia w przepływie pracy ciągłej integracji/ciągłego wdrażania.

    Poniższy fragment kodu YAML pokazuje, jak przekazać wpis tajny do akcji GitHub testowania obciążenia:

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

    Poniższy fragment kodu YAML pokazuje, jak przekazać wpis tajny do zadania usługi Azure Pipelines:

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

    Ważne

    Nazwa tajnego parametru wejściowego musi być zgodna z nazwą używaną w skrypie Apache JMeter.

W magazynie wpisów tajnych ciągłej integracji/ciągłego wdrażania określono wpis tajny i przekazano odwołanie do testowania obciążenia platformy Azure. Teraz możesz użyć wpisu tajnego w skryscie Apache JMeter.

Używanie wpisów tajnych w narzędziu Apache JMeter

Następnie zaktualizujesz skrypt Apache JMeter, aby użyć określonego wcześniej wpisu tajnego.

Najpierw należy utworzyć zmienną zdefiniowaną przez użytkownika, która pobiera wartość wpisu tajnego. Następnie możesz użyć tej zmiennej w teście (na przykład do przekazania tokenu interfejsu API w nagłówku żądania HTTP).

  1. Utwórz zmienną zdefiniowaną przez użytkownika w pliku JMX i przypisz do niej wartość wpisu tajnego przy użyciu funkcji niestandardowej GetSecret .

    Funkcja GetSecret(<my-secret-name>) przyjmuje nazwę wpisu tajnego jako argument. Ta sama nazwa jest używana podczas konfigurowania testu obciążeniowego w późniejszym kroku.

    Zmienną zdefiniowaną przez użytkownika można utworzyć przy użyciu środowiska IDE Apache JMeter, jak pokazano na poniższej ilustracji:

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

    Alternatywnie możesz bezpośrednio edytować plik JMX, jak pokazano w tym przykładowym fragmencie kodu:

    <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. Odwołuj się do zmiennej zdefiniowanej przez użytkownika w skry skryptie testowym.

    Składnia ${} służy do odwołowania się do zmiennej w skry skryptzie. W poniższym przykładzie użyjesz zmiennej udv_appToken , aby ustawić nagłówek 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>
    

Konfigurowanie testów obciążeniowych przy użyciu zmiennych środowiskowych

W tej sekcji użyjesz zmiennych środowiskowych, aby przekazać parametry do testu obciążeniowego.

  1. Zaktualizuj skrypt Apache JMeter, aby użyć zmiennej środowiskowej (na przykład w celu skonfigurowania nazwy hosta punktu końcowego aplikacji).

  2. Skonfiguruj test obciążeniowy i przekaż zmienną środowiskową do skryptu testowego.

Używanie zmiennych środowiskowych w narzędziu Apache JMeter

W tej sekcji zaktualizujesz skrypt Apache JMeter, aby używać zmiennych środowiskowych do kontrolowania zachowania skryptu.

Najpierw zdefiniuj zmienną zdefiniowaną przez użytkownika, która odczytuje zmienną środowiskową, a następnie możesz użyć tej zmiennej w wykonaniu testu (na przykład w celu zaktualizowania domeny HTTP).

  1. Utwórz zmienną zdefiniowaną przez użytkownika w pliku JMX i przypisz do niej wartość zmiennej środowiskowej System.getenv przy użyciu funkcji .

    Funkcja System.getenv("<my-variable-name>") przyjmuje nazwę zmiennej środowiskowej jako argument. Ta sama nazwa jest używana podczas konfigurowania testu obciążeniowego.

    Zmienną zdefiniowaną przez użytkownika można utworzyć przy użyciu środowiska IDE Apache JMeter, jak pokazano na poniższej ilustracji:

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

    Alternatywnie możesz bezpośrednio edytować plik JMX, jak pokazano w tym przykładowym fragmencie kodu:

    <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. Odwołuj się do zmiennej zdefiniowanej przez użytkownika w skry skryptie testowym.

    Składnia ${} służy do odwołowania się do zmiennej w skry skryptzie. W poniższym przykładzie użyjesz zmiennej udv_webapp do skonfigurowania adresu URL punktu końcowego aplikacji.

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

Konfigurowanie zmiennych środowiskowych w usłudze Azure Load Testing

Aby przekazać zmienne środowiskowe do skryptu Apache JMeter, możesz skonfigurować test obciążeniowy w witrynie Azure Portal, w pliku konfiguracji testu YAML lub bezpośrednio w przepływie pracy ciągłej integracji/ciągłego wdrażania.

Ważne

Podczas definiowania zmiennej środowiskowej dla testu obciążeniowego jego nazwa musi być zgodna z nazwą zmiennej użytej w skry skryptzie Apache JMeter.

Aby określić zmienną środowiskową do testu obciążeniowego przy użyciu witryny Azure Portal, wykonaj następujące czynności:

  1. Na stronie konfiguracja testu wybierz kartę Parametry .

  2. W sekcji Zmienne środowiskowe wprowadź zmienną środowiskową Nazwa i Wartość, a następnie wybierz pozycję Zastosuj.

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

Jeśli uruchomisz test obciążeniowy w przepływie pracy ciągłej integracji/ciągłego wdrażania, możesz zdefiniować zmienne środowiskowe w pliku konfiguracji testu YAML. Aby uzyskać więcej informacji na temat składni, zobacz dokumentację YAML konfiguracji testowej.

Alternatywnie można bezpośrednio określić zmienne środowiskowe w definicji przepływu pracy ciągłej integracji/ciągłego wdrażania. Do przekazania zmiennych środowiskowych do skryptu Apache JMeter należy użyć parametrów wejściowych dla akcji testowania obciążenia platformy Azure lub zadania usługi Azure Pipelines.

Poniższy fragment kodu YAML przedstawia przykład funkcji 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"
        }
    ]

Poniższy fragment kodu YAML przedstawia przykład usługi Azure Pipelines:

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

Często zadawane pytania

Czy usługa Azure Load Testing przechowuje moje wartości wpisów tajnych?

L.p. Usługa Azure Load Testing nie przechowuje wartości wpisów tajnych. Gdy używasz identyfikatora URI wpisu tajnego magazynu kluczy, usługa przechowuje tylko identyfikator URI wpisu tajnego i pobiera wartość wpisu tajnego dla każdego przebiegu testu. Jeśli podasz wartość wpisów tajnych w przepływie pracy ciągłej integracji/ciągłego wdrażania, wartości wpisów tajnych nie będą dostępne po uruchomieniu testu. Te wartości należy podać dla każdego przebiegu testu.

Co się stanie, jeśli mam parametry zarówno w pliku konfiguracji YAML, jak i w przepływie pracy ciągłej integracji/ciągłego wdrażania?

Jeśli parametr istnieje zarówno w pliku konfiguracji YAML, jak i w zadaniu testowania obciążenia platformy Azure lub w usłudze Azure Pipelines, wartość przepływu pracy ciągłej integracji/ciągłego wdrażania jest używana na potrzeby przebiegu testu.

Utworzono i uruchomiono test z przepływu pracy ciągłej integracji/ciągłego wdrażania, przekazując parametry przy użyciu zadania lub akcji testowania obciążenia platformy Azure. Czy mogę uruchomić ten test w witrynie Azure Portal z tymi samymi parametrami?

Wartości parametrów nie są przechowywane podczas ich przekazywania z przepływu pracy ciągłej integracji/ciągłego wdrażania. Po uruchomieniu testu w witrynie Azure Portal należy ponownie podać wartości parametrów. Zostanie wyświetlony monit o wprowadzenie brakujących wartości. W przypadku wartości wpisów tajnych należy wprowadzić identyfikator URI wpisu tajnego magazynu kluczy. Wartości wprowadzone na stronie przebiegu testu lub ponownego uruchamiania są prawidłowe tylko dla tego przebiegu testu. Aby wprowadzić zmiany na poziomie testu, przejdź do pozycji Konfigurowanie testu i wprowadź wartości parametrów.