Opanuj testowanie wydajności z Locust: Praktyczny przewodnik

Kamil Sosnowski

Wprowadzenie

Locust to oparte na Pythonie narzędzie open source do testowania obciążenia, które umożliwia projektowanie scenariuszy testowych. Jest skalowalne, przyjazne dla użytkownika i dostarcza informacji w czasie rzeczywistym. Ten wpis na blogu pokaże jak korzystać z Locust, zawiera też przykłady implementacji testów. Celem jest pomoc w zrozumieniu możliwości Locust i sposobu wykorzystania go do testowania wydajności.

Zrozumienie Locust

Locust jest oparty na zdarzeniach i wykorzystuje coroutines zamiast wątków, co czyni go lekkim i zdolnym do obsługi tysięcy użytkowników na jednej maszynie. Pozwala na pisanie przypadków testowych jako kodu, dzięki czemu są one wysoce konfigurowalne i łatwe w utrzymaniu. Ta elastyczność jest jedną z kluczowych zalet Locust. Jest również rozproszony i skalowalny, co oznacza, że można symulować miliony użytkowników, uruchamiając testy na wielu maszynach.

Konfiguracja Locust

Locust jest oparty na Pythonie, więc będziesz potrzebować zainstalowanego Pythona na swoim komputerze. Możesz sprawdzić, czy Python jest zainstalowany, uruchamiając następujące polecenie w terminalu:

python --version

Jeśli Python jest zainstalowany, powinieneś zobaczyć numer wersji. Jeśli nie, musisz najpierw zainstalować Pythona.

Po zainstalowaniu Pythona można zainstalować Locust za pomocą pip, instalatora pakietów Pythona. Uruchom następujące polecenie w terminalu:

pip install locust

Po zakończeniu instalacji można sprawdzić, czy Locust został poprawnie zainstalowany, uruchamiając go:

locust --version

Powinieneś zobaczyć wersję Locust, która została zainstalowana.

Po zainstalowaniu Locust można rozpocząć pisanie skryptów testowych. Skrypty Locust są zwykłymi plikami Pythona, co oznacza, że w testach można używać dowolnych bibliotek lub modułów Pythona. POzwala to na tworzenie złożonych i potężnych testów obciążeniowych.

Tworzenie pierwszego testu obciążeniowego

W Locust zachowanie użytkownika jest zdefiniowane w klasie Pythona. Oto prosty przykład:

from locust import HttpUser, task, between

class WebsiteUser(HttpUser):
    wait_time = between(5, 15)

    @task
    def index_page(self):
        self.client.get("/")

    @task
    def about_page(self):
        self.client.get("/about")

W tym skrypcie WebsiteUser reprezentuje użytkownika. Atrybut wait_time określa czas oczekiwania między zadaniami, a @task oznacza metody jako zadania.

Uruchamianie testu obciążeniowego

Aby uruchomić test, zapisz skrypt do pliku (np. locustfile.py), a następnie uruchom polecenie locust w terminalu:

locust -f locustfile.py

Spowoduje to uruchomienie interfejsu internetowego Locust. Tutaj można określić liczbę użytkowników do symulacji i częstotliwość powtarzania.

Analiza wyników testu

Po uruchomieniu testu ważne jest, aby przeanalizować wyniki, aby zrozumieć, jak działał system. Locust umożliwia kilka sposobów, aby to zrobić. Możesz przeglądać statystyki w czasie rzeczywistym w interfejsie internetowym lub wyeksportować wyniki do pliku CSV w celu dalszej analizy. Analizując wyniki, należy szukać wszelkich powolnych żądań lub awarii, które mogą wskazywać na problem z wydajnością.

Przykład ze świata

Rozważmy scenariusz, w którym testujesz aplikację internetową. Możesz zdefiniować klasę użytkownika z metodami logowania, przeglądania przedmiotów, dodawania przedmiotu do koszyka i finalizacji zamówienia. Następnie można uruchomić test symulujący setki lub tysiące tych użytkowników, aby zobaczyć, jak aplikacja działa pod obciążeniem. Ten rodzaj realistycznych testów opartych na kodzie jest najmocniejszą stroną Locust.

from locust import HttpUser, task, between

class Shopper(HttpUser):
    wait_time = between(1, 2)

    @task
    def view_product(self):
        self.client.get("/product")

    @task
    def add_to_cart(self):
        self.client.post("/cart", json={"product_id": 1})

    @task
    def checkout(self):
        self.client.post("/checkout")

Podsumowanie

Locust to potężne narzędzie do testowania wydajności, które wyróżnia się elastycznością i skalowalnością. Jego zdolność do symulowania tysięcy użytkowników z realistycznym zachowaniem czyni go doskonałym wyborem do testowania aplikacji internetowych. Dzięki skryptom opartym na języku Python oferuje wysoki stopień personalizacji, umożliwiając dostosowanie testów do konkretnych potrzeb.

W tym przewodniku omówiliśmy podstawy konfiguracji Locust, tworzenia prostego testu obciążenia, uruchamiania testu i analizowania wyników. Przyjrzeliśmy się również rzeczywistemu przykładowi testowania witryny e-commerce. To jednak dopiero początek tego, co można zrobić z Locust.

Poza podstawami, Locust obsługuje bardziej zaawansowane funkcje, takie jak dystrybucja testów na wielu maszynach, złożone modelowanie zachowań użytkowników i integracja z innymi systemami za pomocą skryptów opartych na języku Python. Dzięki opanowaniu tych możliwości można tworzyć bardziej realistyczne testy, które lepiej odwzorowują zachowanie użytkowników, pomagając w tworzeniu aplikacji, które mogą wytrzymać rzeczywiste warunki.

Pamiętaj, że kluczem do skutecznego testowania wydajności jest zrozumienie zachowania użytkowników i wymagań dotyczących wydajności systemu. Dzięki temu zrozumieniu i mocy Locust możesz upewnić się, że Twoje aplikacje są gotowe do obsługi dowolnego obciążenia, jakie wytwrorzą użytkownicy. Udanego testowania!

Poznaj mageek of j‑labs i daj się zadziwić, jak może wyglądać praca z j‑People!

Skontaktuj się z nami