Udostępnij za pośrednictwem


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 skryfcie testowym przy użyciu usługi Azure Load Testing. Użyj danych z zewnętrznego pliku CSV, aby skonfigurować skrypt testowy JMeter lub Locust. Na przykład możesz iterować po wszystkich klientach w pliku CSV, aby przekazać szczegóły klienta w żądaniu interfejsu API.

W JMeter możesz użyć elementu Config zestawu danych CSV w skryfcie testowym, aby odczytywać dane z pliku CSV. W obszarze Locust możesz otworzyć plik CSV w skry skryfcie testowym, odczytać wymagane dane i przekazać go do żądań.

Aby odczytać dane z pliku zewnętrznego w usłudze Azure Load Testing, musisz przekazać plik zewnętrzny wraz ze skryptem testowym w teście obciążeniowym. W przypadku horyzontalnego skalowania testu na wiele równoległych instancji silnika testowego można równomiernie podzielić dane wejściowe pomiędzy te instancje.

Rozpocznij od sklonowania lub pobrania przykładowego projektu 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) lub skrypt locust.
  • (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 testowego w celu odczytywania danych CSV

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

Ważne

Azure Load Testing przesyła plik JMX i wszystkie powiązane pliki w jednym folderze. Jeśli odwołujesz się do pliku zewnętrznego w swoim skrypcie JMeter, upewnij się, że w skrypcie testowym nie masz odwołań do ścieżek plików.

W przypadku testów opartych na JMeter zmodyfikuj skrypt JMeter przy użyciu graficznego interfejsu użytkownika apache JMeter:

  1. Wybierz element CSV Data Set Config w skrypcie testowym.

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

  3. Opcjonalnie wprowadź nazwy pól CSV w nazwy zmiennych, kiedy dzielisz plik CSV pomiędzy silniki testowe.

    Testowanie obciążenia platformy Azure nie zachowuje wiersza nagłówka podczas dzielenia pliku CSV. Podaj nazwy zmiennych w elemencie Konfiguracja zestawu danych CSV zamiast używać wiersza nagłówka.

    Zrzut ekranu pokazujący interfejs użytkownika JMeter do konfiguracji elementu CSV Data Set Config.

  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.

W przypadku testów opartych na Locust zaktualizuj skrypt Locust, otwierając go w edytorze wg własnego wyboru.

  1. W sekcji, w której otworzysz plik, zaktualizuj informacje o nazwie pliku i usuń odwołanie do ścieżki pliku.

  2. Zapisz skrypt Locust i przekaż skrypt do testu obciążeniowego.

Przekazywanie pliku CSV do testu obciążeniowego

W przypadku odwoływania się do plików zewnętrznych ze skryptu testowego upewnij się, że wszystkie te pliki są przesyłane razem ze skryptem testowym. Po uruchomieniu testu obciążeniowego usługa Azure Load Testing kopiuje wszystkie pliki do jednego folderu w każdej instancji silnikó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.

    Zrzut ekranu przedstawiający listę testów obciążeniowych i przycisk

  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 .

    Zrzut ekranu przedstawiający kartę Plan testu w okienku Edytowanie testu.

    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. Dozwolone jest tylko pięć archiwów zip, z maksymalnie 1000 plików w każdym, a całkowity rozpakowany rozmiar nie może przekraczać 1 GB.

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

Wskazówka

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 w niezmodyfikowanej postaci przetwarza pliki wejściowe we wszystkich instancjach maszyny testowej. Domyślnie każdy aparat testowy przetwarza cały plik CSV. Alternatywnie, usługa Testowania Obciążenia Azure umożliwia równomierne podzielenie danych wejściowych z pliku CSV na wszystkie instancje silnika. 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 zawierający dane klientów, a test obciążeniowy jest uruchamiany na 10 równoległych silnikach testowych, każda instancja przetwarza 1/10 klientów.

Ważne

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

  1. Skonfiguruj skrypt testowy 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 Podziel CSV równomiernie między silniki testowe.

    Zrzut ekranu przedstawiający pole wyboru umożliwiające dzielenie wejściowych plików C S V podczas konfigurowania testu w witrynie Azure Portal.

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

    Przy następnym uruchomieniu testu Azure Load Testing równomiernie dzieli i przetwarza plik CSV między maszynami testowymi.

Rozwiązywanie problemów

Status testu jest niepowodzeniem, a dziennik testów zawiera 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 testowego.

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

Poniższy fragment kodu pokazuje wyciąg z pliku JMeter, który używa elementu CSVDataSet do odczytu 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>