Konfigurowanie sekretów i zmiennych środowiskowych
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:
- Przechowaj wartość tajną w magazynie tajnym
- Przekaż odwołanie do tajemnicy do skryptu testowego Apache JMeter.
- 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:
Dodaj wartość tajną do magazynu tajnych danych GitHub Actions.
W usłudze GitHub można używać sekretów repozytorium GitHub.
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.
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:
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>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 zmiennejudv_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.
Zaktualizuj skrypt Apache JMeter, aby użyć zmiennej środowiskowej. Aby na przykład skonfigurować nazwę hosta punktu końcowego aplikacji.
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.
Utwórz zmienną zdefiniowaną przez użytkownika w pliku JMX i przypisz do niej wartość zmiennej środowiskowej
System.getenvprzy 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:
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>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 zmiennejudv_webappdo 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"
}
]