Konfigurowanie sekretów i zmiennych środowiskowych

Ukończone

Dowiedz się, jak ustawiać tajne dane 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 kodowania poufnych informacji w skry skryptie testowym JMeter.

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

  • Wpisy tajne: zawierają poufne informacje i są bezpiecznie przekazywane do aparatu testów obciążeniowych. Na przykład tajne hasła umożliwiają dostęp do poświadczeń usługi internetowej, zamiast kodować je na stałe w skrypcie testowym.

  • Zmienne środowiskowe: zawierają informacje niewrażliwe i są dostępne jako zmienne środowiskowe w aucie testów obciążeniowych. Na przykład zmienne środowiskowe umożliwiają skonfigurowanie adresu URL punktu końcowego aplikacji.

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/CD, zdefiniuj parametry w pliku konfiguracji testu obciążeniowego lub w definicji.

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

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ć tajemnicy, aby przekazać klucz interfejsu API do punktu końcowego usługi internetowej, który testujesz pod kątem obciążenia. Zamiast przechowywać klucz interfejsu API w konfiguracji lub na stałe kodować go w skrypcie, możesz zapisać go w magazynie sekretów, aby ściśle kontrolować dostęp do sekretu.

Testowanie obciążenia Azure umożliwia przechowywanie sekretów w usłudze Azure Key Vault. Alternatywnie, podczas uruchamiania testu obciążeniowego w potoku CI/CD, można użyć magazynu tajnych danych powiązanego z technologią CI/CD, taką jak Azure Pipelines lub GitHub Actions.

Aby używać sekretów wraz z Azure Load Testing, wykonaj następujące kroki:

  1. Przechowaj wartość tajną w magazynie tajnym
  2. Przekaż odwołanie do tajemnicy 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ą usługi testowania obciążenia w Azure. Jeśli uruchamiasz skrypt testowy lokalnie, musisz zaktualizować skrypt testowy i odczytać wartości tajne w inny sposób.

Użyj magazynu tajnych danych GitHub do zapisywania tajnych danych testów obciążeniowych.

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ść tajną do magazynu tajnych danych GitHub Actions.

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

    Zrzut ekranu pokazujący, jak dodać sekret repozytorium GitHub.

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

    Ważne

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

Określono tajemnicę w przechowalni tajemnic CI/CD i przekazano referencję do Azure Load Testing. Teraz możesz użyć sekretu w skrypcie 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. Aby na przykład przekazać token 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:

    Zrzut ekranu przedstawiający sposób dodawania zmiennych zdefiniowanych przez użytkownika do skryptu Apache JMeter.

    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. Aby na przykład skonfigurować nazwę 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:

    Zrzut ekranu przedstawiający sposób dodawania zmiennych zdefiniowanych przez użytkownika dla zmiennych środowiskowych do skryptu JMeter.

    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.

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