Rakenduse Node.js testimine K6 abil

OK, olete välja töötanud oma Node.js rakenduse, käinud ühikateste, käinud integreerimisteste nüüd, mida peaksite tegema? Peaksite läbi viima koormustesti! eks? Selleks, et näha, kas teie rakendus saab eeldatava koormusega hakkama. Niisiis, kuidas saate koormustesti läbi viia? Milline tööriist on saadaval? Selles artiklis räägin ma ühest sellisest tööriistast, mida saate kasutada oma rakenduse testimiseks.

Rakenduse nimi on k6. K6 on avatud lähtekoodiga projekt, mille eesmärk on pakkuda võimalust teie taustainfrastruktuuri jõudluse testimiseks. Selle kirjutamiseks on kasutatud Go ja JavaScripti. K6 on kaasaegne koormustesti tööriist, mis on üles ehitatud LoadImpact kogemustele. See pole esimene tööriist, mis Google'i otsingutulemustes üles tuleb. Kuid Grafana poolt visualiseeritav lihtsus ja võime eksportida andmeid InfluxDB-sse muudab selle võimsaks tööriistaks teie rakenduse testimiseks.

K6 kasutab virtuaalsete kasutajate (VU) mõistet. Teil võib olla mitu arvu virtuaalseid kasutajaid, kes käivitavad paralleelselt testiskripti. Testiskripte saab oma rakenduse jaoks kirjutada, kasutades tänapäevast ES6 süntaksit.

Paigaldamine

Macis saate joosta,

keeda kraanimõju / k6
pruulima installida k6

Kui kasutate mõnda muud platvormi, laadige kahendkood alla siit.

Koormustesti läbiviimine

Koormustesti käivitamiseks k6 abil peate looma testi kirjeldava skripti. Järgnev on lihtne näide skriptist,

impordi http kataloogist "k6 / http";
import {kontroll, uni} kaustast "k6";
eksporti lasta valikud = {
  vus: 10,
  kestus: "10 s"
};
eksporti vaikefunktsioon () {
  lase res = http.get ("url");
  vaadata (res, {
    "edu": (r) => r.status == 200
  });
};

Valikutes määratleb vus vajalike virtuaalsete kasutajate arvu ja kestus on teie testi käivitamiseks vajalik aeg. Saadaolevate valikute üksikasjaliku loetelu leiate siit.

Testkäivituse käivitamiseks

k6 käivitage skript.js

Tulemused on järgmised:

/ \ | ‾‾ | / ‾‾ / / ‾ /
     / \ / \ | | _ / / / /
    / \ / \ | | / ‾‾ \
   / \ | | ‾ \ \ | (_) |
  / __________ \ | __ | \ __ \ \ ___ / Tere tulemast k6 v0.17.1!
hukkamine: kohalik
     väljund: -
     skript: /opt/k6-v0.17.2-linux64/script.js (js)
kestus: 10 s, iteratsioonid: 0
        vus: 10, max: 10
veebi ui: http://127.0.0.1:6565/
[töötab] 1s / 10s
[töötab] 1,9s / 10s
[töötab] 3s / 10s
[töötab] 3,9s / 10s
[töötab] 5s / 10s
[töötab] 5.9s / 10s
[töötab] 6,9 s / 10 s
[töötab] 8s / 10s
[töötab] 9s / 10s
[töötab] 9,9 s / 10 s
[tehtud] 10s / 10s
✓ edu
tšekid ................: 100.00%
    andmeid vastu võetud .........: 8,3 kB (828 B / s)
    data_sent .............: 1,0 kB (100 B / s)
    http_req_blokeeritud ......: keskm = 15,34 ms max = 460,51 ms med = 2,26 µs min = 1,17 µs p (90) = 4,87 µs p (95) = 6,37 µs
    http_req_ühendus ...: keskm = 13,65 ms = 409,75 ms med = 0 s min = 0 s p (90) = 0 s p (95) = 0 s
    http_req_duration .....: keskm = 316,86 ms max = 410,34 ms med = 307,13 ms min = 263,38 ms p (90) = 399,14 ms p (95) = 406,81 ms
    http_req_vastuvõtt ....: keskm = 209,5 µs max = 9,89 ms med = 117,57 µs min = 62,95 µs p (90) = 228,21 µs p (95) = 289,2 µs
    http_req_sending ......: keskm = 21,04 µs max = 195,85 µs med = 16,37 µs min = 7,74 µs p (90) = 35,21 µs p (95) = 43,46 µs
    http_req_waiting ......: keskm = 316,62 ms max = 410,16 ms med = 306,97 ms min = 263,25 ms p (90) = 398,95 ms p (95) = 406,69 ms
    http_reqs .............: 300 (30 / s)
    vus ...................: 10
    vus_max ...............: 10

Nende mõõdikute tähendused leiate siit.

Grafana abil tulemuste visualiseerimine

Nüüd, kui me teame, kuidas mõõdikuid katsete abil unustada, laseme neid Grafanas visualiseerida. Andmete Grafanas visualiseerimiseks peame need eksportima vormingus, millest Grafana aru saab. K6 toetab andmete eksportimist InfluxDB-sse, millest Grafana saab aru.

Järgmised käsud installivad Grafana ja InfluxDB,

Ubuntu 16.04
sudo apt-get install grafana
sudo apt-get install effxdb
Mac
pruulima installida grafana
pruulima installima sissetulek

Vaikimisi töötab InfluxDB server pordil 8086 ja Grafana server pordil 3000.

Nüüd saab käivitada koormustesti ja eksportida andmeid InfluxDB-sse,

k6 käivitusväljaanne influenxdb = http: // localhost: 8086 / resultsdb script.js

Tulemuste andmebaas on siin InfluxDB-s loodav andmebaas.

Nüüd minge üle aadressile http: // localhost: 3000. Seejärel looge andmeallikas.

Andmeallika seadistamine

Seadke väärtused nagu ülalpool. Valige puhverserverina juurdepääs, kui soovite serveri poolelt juurde pääseda InfluxDB-le (näiteks kui teie InfluxDB töötab Grafana serveris localhost)

Nüüd looge uus armatuurlaud (peamenüü -> armatuurlauad -> uus) ja looge graafik.

Graafik

Minge graafiku redigeerimisrežiimi ja valige loendis Metrics loodud andmeallikas. Mõõdiku saate valida järgmiselt. Mõõdiku valimisel laaditakse andmed teie graafikusse.

Muutke mõõdikuid

Meie elu lihtsustamiseks on kasutajad juba loonud põhjalikud Grafana armatuurlauad. Nende importimiseks minge aadressile

Peamenüü -> Armatuurlauad -> Import

Nüüd peate sisestama armatuurlaua ID. Selle armatuurlaua tüübi 2587 importimiseks.

Eelkonfigureeritud Grafana armatuurlaud

Ok inimesed, head koormustesti !!!