Odczytywanie danych z pliku CSV w narzędziu JMeter za pomocą testowania obciążenia platformy Azure

Z tego artykułu dowiesz się, jak odczytywać dane z pliku wartości rozdzielanej przecinkami (CSV) w narzędziu JMeter przy użyciu testowania obciążenia platformy Azure. Użyj danych z zewnętrznego pliku CSV, aby skonfigurować skrypt testowy JMeter. Na przykład możesz iterować wszystkich klientów w pliku CSV, aby przekazać szczegóły klienta do żądania interfejsu API.

W JMeter możesz użyć elementu Config zestawu danych CSV w skryfcie testowym, aby odczytywać dane z pliku CSV.

Aby odczytać dane z pliku zewnętrznego w usłudze Azure Load Testing, należy przekazać plik zewnętrzny wraz ze skryptem testowym JMeter w teście obciążeniowym. W przypadku skalowania testu w poziomie w wielu równoległych wystąpieniach aparatu testowego można podzielić dane wejściowe równomiernie między te wystąpienia.

Rozpocznij od sklonowania lub pobrania projektu przykładów z usługi GitHub.

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. Aby utworzyć zasób testowania obciążenia, zobacz Tworzenie i uruchamianie testu obciążeniowego.
  • Skrypt testowy apache JMeter (JMX).
  • (Opcjonalnie) Graficzny interfejs użytkownika narzędzia Apache JMeter do tworzenia skryptu testowego. Aby zainstalować narzędzie Apache JMeter, zobacz Apache JMeter Getting Started (Wprowadzenie do narzędzia Apache JMeter).

Aktualizowanie skryptu JMeter w celu odczytywania danych CSV

W tej sekcji skonfigurujesz skrypt Apache JMeter, aby odwoływać się do zewnętrznego pliku CSV. Element Config zestawu danych CSV służy do odczytywania danych z pliku CSV.

Ważne

Testowanie obciążenia platformy Azure przekazuje plik JMX i wszystkie powiązane pliki w jednym folderze. Jeśli odwołujesz się do pliku zewnętrznego w skry skryptie JMeter, sprawdź, czy nie masz odwołań do ścieżki pliku w skry skryptie testowym.

Zmodyfikuj skrypt JMeter przy użyciu graficznego interfejsu użytkownika narzędzia Apache JMeter:

  1. Wybierz element Config zestawu danych CSV w skry skryptie testowym.

  2. Zaktualizuj informacje o nazwie pliku i usuń wszelkie odwołania do ścieżki pliku.

  3. Opcjonalnie wprowadź nazwy pól CSV w nazwach zmiennych po podzieleniu pliku CSV między aparaty testowe.

    Testowanie obciążenia platformy Azure nie zachowuje wiersza nagłówka podczas dzielenia pliku CSV. Podaj nazwy zmiennych w elemecie Konfiguracji zestawu danych CSV zamiast przy użyciu wiersza nagłówka.

    Screenshot that shows the JMeter UI to configure a C S V Data Set Config element.

  4. Powtórz poprzednie kroki dla każdego elementu konfiguracji zestawu danych CSV w skryscie.

  5. Zapisz skrypt JMeter i przekaż skrypt do testu obciążeniowego.

Przekazywanie pliku CSV do testu obciążeniowego

Podczas odwoływanie się do plików zewnętrznych ze skryptu testowego upewnij się, że wszystkie te pliki zostały przekazane wraz ze skryptem testowym JMeter. Po uruchomieniu testu obciążeniowego usługa Azure Load Testing kopiuje wszystkie pliki do jednego folderu w każdym wystąpieniu aparatów testowych.

Ważne

Testowanie obciążenia platformy Azure nie zachowuje wiersza nagłówka podczas dzielenia pliku CSV. Przed dodaniem pliku CSV do testu obciążeniowego usuń wiersz nagłówka z pliku.

Aby dodać plik CSV do testu obciążeniowego przy użyciu witryny Azure Portal:

  1. W witrynie Azure Portal przejdź do zasobu testowania obciążenia platformy Azure.

  2. W okienku po lewej stronie wybierz pozycję Testy , aby wyświetlić listę testów.

  3. Wybierz test z listy, zaznaczając pole wyboru, a następnie wybierz pozycję Edytuj.

    Screenshot that shows the list of load tests and the 'Edit' button.

  4. Na karcie Plan testu wybierz plik CSV z komputera, a następnie wybierz pozycję Przekaż, aby przekazać plik na platformę Azure.

    Jeśli używasz testu obciążeniowego opartego na adresie URL, możesz wprowadzić nazwy zmiennych jako listę rozdzielaną przecinkami w kolumnie Zmienne .

    Screenshot of the Test plan tab on the Edit test pane.

    Jeśli rozmiar pliku CSV jest większy niż 50 MB, spakuj plik. Rozmiar pliku zip powinien być mniejszy niż 50 MB. Testowanie obciążenia platformy Azure automatycznie rozpakowuje plik podczas przebiegu testu. Tylko pięć artefaktów zip jest dozwolonych z maksymalnie 1000 plików w każdym zip i nieskompresowany całkowity rozmiar 1 GB.

  5. Wybierz pozycję Zastosuj , aby zmodyfikować test i użyć nowej konfiguracji podczas ponownego uruchamiania.

Napiwek

Jeśli używasz testu obciążeniowego opartego na adresie URL, możesz odwołać się do wartości z pliku danych wejściowych CSV w żądaniach HTTP przy użyciu $(variable) składni .

Dzielenie danych wejściowych CSV między aparatami testowymi

Domyślnie usługa Azure Load Testing kopiuje i przetwarza pliki wejściowe niezmodyfikowane we wszystkich wystąpieniach aparatu testowego. Domyślnie każdy aparat testowy przetwarza cały plik CSV. Alternatywnie testowanie obciążenia platformy Azure umożliwia równomierne podzielenie danych wejściowych CSV we wszystkich wystąpieniach aparatu. Jeśli masz wiele plików CSV, każdy plik jest podzielony równomiernie.

Jeśli na przykład masz duży plik wejściowy CSV klienta, a test obciążeniowy jest uruchamiany na 10 równoległych aparatach testowych, każde wystąpienie przetwarza 1/10 th klientów.

Ważne

Testowanie obciążenia platformy Azure nie zachowuje wiersza nagłówka podczas dzielenia pliku CSV.

  1. Skonfiguruj skrypt JMeter tak, aby używał nazw zmiennych podczas odczytywania pliku CSV.
  2. Usuń wiersz nagłówka z pliku CSV przed dodaniem go do testu obciążeniowego.

Aby skonfigurować test obciążeniowy w celu podzielenia wejściowych plików CSV:

  1. Przejdź do karty Plan testów dla testu obciążeniowego.

  2. Wybierz pozycję Podziel wolumin CSV równomiernie między aparatami testowymi.

    Screenshot that shows the checkbox to enable splitting input C S V files when configuring a test in the Azure portal.

  3. Wybierz pozycję Zastosuj , aby potwierdzić zmiany konfiguracji.

    Przy następnym uruchomieniu testu testowanie obciążenia platformy Azure dzieli i przetwarza plik CSV równomiernie w aparatach testowych.

Rozwiązywanie problemów

Stan testu zakończył się niepowodzeniem, a dziennik testów File {my-filename} must exist and be readable

Po zakończeniu testu obciążeniowego ze stanem Niepowodzenie można pobrać dzienniki testów.

Po wyświetleniu komunikatu File {my-filename} must exist and be readable o błędzie w dzienniku testów nie można odnaleźć wejściowego pliku CSV podczas uruchamiania skryptu JMeter.

Usługa Azure Load Testing przechowuje wszystkie pliki wejściowe wraz ze skryptem JMeter. W przypadku odwołania się do wejściowego pliku CSV w skry skrypecie JMeter upewnij się, że nie dołączysz ścieżki pliku, ale użyj tylko nazwy pliku.

Poniższy fragment kodu przedstawia wyodrębnienie pliku JMeter, który używa CSVDataSet elementu do odczytania pliku wejściowego. Zwróć uwagę, że element filename nie zawiera ścieżki pliku.

<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Websites CSV" enabled="true">
    <stringProp name="filename">websites.csv</stringProp>
    <stringProp name="fileEncoding">UTF-8</stringProp>
    <stringProp name="variableNames">CustomerId,CustomerName,Url</stringProp>
    <boolProp name="ignoreFirstLine">true</boolProp>
    <stringProp name="delimiter">,</stringProp>
    <boolProp name="quotedData">false</boolProp>
    <boolProp name="recycle">false</boolProp>
    <boolProp name="stopThread">true</boolProp>
    <stringProp name="shareMode">shareMode.all</stringProp>
    <stringProp name="TestPlan.comments">Read all records from the CSV file -  stop thread at end of file</stringProp>
</CSVDataSet>