Testy wydajnościowe z Artillery

Wydajnościowe

Loading

Testy wydajnościowe z Artillery. Artillery to narzędzie open source do testowania wydajności i niezawodności aplikacji internetowych i usług sieciowych. Został stworzony przez zespół Artillery.io w 2014 roku.

Wprowadzenie

Artillery umożliwia tworzenie i uruchamianie skryptów testowych, które symulują działanie wielu użytkowników jednocześnie i pozwalają na ocenę wydajności i niezawodności aplikacji pod obciążeniem. Narzędzie jest szybkie i łatwe w użyciu i pozwala na automatyzację testów wydajnościowych.

Narzędzie Artillery jest napisane w Node.js i można go używać za pośrednictwem wiersza poleceń lub za pomocą interfejsu API. Jest wspierany przez wielu programistów i jest stale rozwijany i ulepszany.

Artillery jest idealnym narzędziem dla programistów, testerów oprogramowania czy specjalistów DevOps, którzy chcą zautomatyzować testy wydajności swoich aplikacji internetowych. Narzędzie jest elastyczne i pozwala na dostosowywanie skryptów testowych do konkretnych potrzeb i wymagań.

Strona domowa.

Główne cechy narzędzia

Narzędzie posiada wiele zalet i może przypaść do gustu osobom które lubią tworzyć testy automatyczne w ramach pisania skryptów.

  1. Symulacja wielu użytkowników jednocześnie.
  2. Łatwe tworzenie i uruchamianie skryptów testowych.
  3. Wbudowane raportowanie i analiza danych z testów.
  4. Obsługa protokołów HTTP i WebSockets.
  5. Integracja z innymi narzędziami do testowania wydajności.
  6. Wsparcie dla testów z wieloma wątkami.
  7. Elastyczność i dostosowywanie skryptów testowych.
  8. Wsparcie dla skryptów testowych napisanych w języku YAML.
  9. Proste i intuicyjne interfejsy użytkownika i API.
  10. Darmowa i open source’owa licencja.
  11. Używanie Playwrighta do testów wydajnościowych

Instalacja

Aby zainstalować niezbędne jest posiadanie zainstalowanej wersji NodeJSa.

npm install -g artillery
npm install -D artillery@latest

Po krótkiej instalacji możemy zabierać się za tworzenie skryptów testowych które będą

Pierwsze testy

Testy tworzymy poprzez stworzenie plików *.yml. Następnie w ramach prostego wzorca tworzymy prosty test.

Ten skrypt jest zapisany w języku YAML i składa się z dwóch sekcji: config i scenarios.

W sekcji config określamy docelowy adres URL strony (target), a także fazę testu, w której symulujemy działanie 10 użytkowników na sekundę przez 60 sekund (arrivalRate i duration).

Dalej w sekcji scenarios określamy, co użytkownicy powinni robić na stronie. W tym przypadku jedyną akcją jest wysłanie żądania HTTP GET do głównej strony (/).

Po uruchomieniu skryptu Artillery będzie wysyłać żądania do strony www.example-page.pl i mierzyć wydajność i niezawodność.

config:
target: "https://www.example-page.pl"
phases:
- duration: 60
arrivalRate: 10

scenarios:
- flow:
- get:
url: "/"

Możemy też przetestować inne warianty :

config:
target: "https://www.example-page.pl"

scenarios:
- name: "10 users per second for 60 seconds"
flow:
- population: 10
duration: 60

- name: "20 users per second for 60 seconds"
flow:
- population: 20
duration: 60

- name: "50 users per second for 30 seconds"
flow:
- population: 50
duration: 30

- name: "10 users per second for 60 seconds"
flow:
- population: 10
duration: 60

W powyższym skrypcie konfigurujesz cel testu jako adres URL witryny, a następnie opisujesz każdy test obciążenia jako osobne scenariusze, określając liczbę użytkowników na sekundę i czas trwania testu.

Kolejnym wariantem jest obciążenie dwóch slugów:

config:
target: "http://www.example-page.pl"
phases:
- duration: 60
arrivalRate: 10

scenarios:
- flow:
- get:
url: "/info"

- flow:
- get:
url: "/about-us"

Możemy też uruchomić testy jeden po drugim.

config:
target: "http://www.example-page.pl"
phases:
- duration: 30
arrivalRate: 10

scenarios:
- name: "Test /info"
flow:
- get:
url: "/info"

- name: "Test /about-us"
flow:
- get:
url: "/about-us"

Więcej przykładów na oficjalnej stronie.

Integracje

Oczywiście Artillery możemy zintegrować z wieloma narzędziami by wykorzystywać jego pełny potencjał.

Możesz zintegrować Artillery IO z następującymi narzędziami do CI/CD:

  • Jenkins
  • Travis CI
  • CircleCI
  • GitLab CI/CD
  • Bitbucket Pipelines
  • AWS CodePipeline
  • Azure DevOps Pipelines

Integracja z powyższymi narzędziami pozwala na automatyzację procesu testowania obciążenia i dodanie go do pipeline. W ten sposób można zapewnić testowanie aplikacji w jakimś zakresie w ramach automatycznego procesu.

Artillery posiada listę narzędzi oficjalnych z którymi możemy zintegrować narzędzie:

Testy wydajnościowe z Artillery - integration official

Oczywiście możemt też zintegrować narzędzie z nieoficjalnymi dodatkami – tworzonymi przez społeczność:

Testy wydajnościowe z Artillery - unoficcial

Uruchamianie testów i raporty

Aby uruchomić nasz test wystarczy krótka komenda z linii poleceń:

    - artillery run test.yml --output ./report/result.json
    - artillery report ./report/result.json

Tworzą się raporty dzięki którym możemy odczytać w jaki sposób przebiegał nasz test i jakie są rezultaty.

Podsumowanie

Testy wydajnościowe z Artillery to wpis, który miał Wam przybliżyć kolejne narzędzia, w bardzo skondensowanej formie. Więcej o testach wydajnościowych a szczególnie o JMeterze, k6 stale piszemy w dziale dedykowanym dla tego narzędzia.