Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6) · Oppitunti

WebSocket- ja suoratoistotestaus

Tutustu reaaliaikaisten sovellusten suorituskykytestauksen menetelmiin WebSocketien ja suoratoistoprotokollien avulla.

Oppitunti 3/412 vaihetta

WebSocket- ja suoratoistotestaus on ilmainen Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-kurssilla on yhteensä 4 oppituntia.

Reaaliaikaiset sovellukset tarvitsevat erityistestejä

Chat-sovellukset, reaaliaikaiset koontinäytöt ja verkkopelit ovat esimerkkejä reaaliaikaisista sovelluksista. Ne edellyttävät jatkuvia, nopeita päivityksiä ja välitöntä vuorovaikutusta.

Perinteinen HTTP-testaus perustuu pyyntö–vastausmalliin eikä kuvaa täysin näiden dynaamisten järjestelmien toimintaa. Niiden tehokas testaaminen edellyttää erityisiä työkaluja ja menetelmiä.

WebSocketsin ymmärtäminen

WebSockets tarjoaa pysyvän kaksisuuntaisen viestintäkanavan yhden TCP-yhteyden yli. Tämä tarkoittaa, että sekä asiakas että palvelin voivat lähettää toisilleen tietoja milloin tahansa.

Toisin kuin HTTP, joka avaa ja sulkee yhteyden jokaisen pyynnön yhteydessä, WebSockets muodostaa aluksi niin sanotun kättelyn ja pitää sen jälkeen yhteyden avoinna jatkuvaa, full-duplex-viestintää varten. Siksi se sopii erinomaisesti reaaliaikaiseen vuorovaikutukseen.

WebSocket-testauksen erityishaasteet

WebSocketsin suorituskykytestaukseen liittyy perinteiseen HTTP:hen verrattuna erityisiä haasteita:

  • Pysyvät yhteydet: Simuloidaan useita avoimia, pitkäkestoisia yhteyksiä pitkien ajanjaksojen ajan.
  • Kaksisuuntainen liikenne: Käsitellään sekä asiakkaan että palvelimen asynkronisesti lähettämiä viestejä.
  • Dynaaminen sisältö: Varmennetaan jatkuvasti päivittyvät tietovirrat staattisten vastausten sijaan.

Testaustyökalujemme on pystyttävä hallitsemaan näitä jatkuvia vuorovaikutustilanteita.

JMeter WebSocket-kuormitustestaukseen

JMeteriä voidaan laajentaa WebSocketsin testaamiseen kolmannen osapuolen laajennuksilla (esimerkiksi Maciej Zaleskin WebSocket Samplers -laajennuksella).

Näiden laajennusten avulla voit:

  • Avata ja sulkea WebSocket-yhteyksiä.
  • Lähettää viestejä palvelimelle.
  • Kuunnella saapuvia viestejä ja tallentaa ne.

Määrität nämä vaiheet JMeterin graafisessa käyttöliittymässä (GUI).

JMeter WebSocket-testin määrittäminen

WebSocket-yhteyden muodostamiseksi JMeterissä lisätään yleensä 'WebSocket Open Connection' sampler. Siinä määrität WebSocket-URL-osoitteen (ws:// tai wss://).

Sen jälkeen viestien lähettämiseen voidaan käyttää 'WebSocket Request' samplers -komponentteja. Yhteys päätetään 'WebSocket Close' sampler -komponentilla. Vastaanotettujen viestien tarkistamiseen voidaan lisätä myös 'Response Assertions' -tarkistuksia.

k6: WebSocket-testien ohjelmointi JavaScriptillä

k6 tarjoaa natiivin WebSocket-tuen ws-moduulin kautta, joten se on tehokas ja joustava valinta reaaliaikaiseen testaukseen.

Kirjoitat testilogiikan JavaScriptillä ja määrität, miten virtuaaliset käyttäjät toimivat WebSocket-palvelimen kanssa. Tämä tarjoaa paljon joustavuutta monimutkaisten ja tilallisten skenaarioiden luomiseen, jolloin käyttäjän toimintaa voidaan simuloida tarkasti.

Perustason k6-WebSocket-yhteys

Katsotaan, miten k6:lla muodostetaan yksinkertainen WebSocket-yhteys. Tämä skripti muodostaa yhteyden julkiseen testikäyttöön tarkoitettuun WebSocket-kaikupalvelimeen ja sulkee yhteyden heti.

import ws from 'k6/ws';
import { check } from 'k6';

export default function () {
  const url = 'ws://echo.websocket.events/'; // A public echo server
  const params = { tags: { ws_tag: 'hello' } };

  const res = ws.connect(url, params, function (socket) {
    socket.on('open', () => console.log('Connected!'));
    socket.on('close', () => console.log('Disconnected!'));
    socket.on('error', (e) => console.log('Error:', e.error()));

    socket.close(); // Close immediately after connecting
  });

  check(res, { 'status is 101': (r) => r && r.status === 101 });
}

Viestien lähettäminen ja vastaanottaminen k6:lla

Laajennetaan nyt k6-skriptiä niin, että se lähettää viestin ja odottaa kaikupalvelimen vastausta. Käytämme socket.send()-funktiota tietojen lähettämiseen ja käsittelemme saapuvat viestit socket.on('message')-funktion avulla.

import ws from 'k6/ws';
import { check } from 'k6';

export default function () {
  const url = 'ws://echo.websocket.events/';

  ws.connect(url, null, function (socket) {
    socket.on('open', () => {
      console.log('Connected, sending message...');
      socket.send('Hello CoddyKit!');
    });

    socket.on('message', (data) => {
      console.log('Received:', data);
      check(data, { 'message is "Hello CoddyKit!"': (d) => d === 'Hello CoddyKit!' });
      socket.close(); // Close after receiving the message
    });

    socket.on('close', () => console.log('Disconnected!'));
    socket.on('error', (e) => console.log('Error:', e.error()));

    // Keep the VU alive until a message is received or timeout
    socket.prune();
  });
}

Oikeellisuuden varmistaminen k6-tarkistuksilla

HTTP-pyyntöjen tapaan myös WebSocket-viestien sisältö on varmennettava, jotta reaaliaikainen tietovirta toimii kuormituksen aikana oikein.

k6:n check()-funktio sopii tähän erinomaisesti. Sen avulla voit tarkistaa palvelimelta vastaanotetun viestin sisällön, muodon tai tietyt kentät.

import ws from 'k6/ws';
import { check } from 'k6';

export default function () {
  const url = 'ws://echo.websocket.events/';
  const expectedMessage = 'Test Message 123';

  ws.connect(url, null, function (socket) {
    socket.on('open', () => {
      socket.send(expectedMessage);
    });

    socket.on('message', (data) => {
      console.log('Received:', data);
      check(data, {
        'received message matches sent': (d) => d === expectedMessage,
        'message length is correct': (d) => d.length === expectedMessage.length,
      });
      socket.close();
    });

    socket.on('close', () => console.log('Disconnected!'));
    socket.on('error', (e) => console.log('Error:', e.error()));

    socket.prune();
  });
}

Muiden suoratoistoprotokollien testaaminen

Vaikka WebSockets on suosittu, käytettävissä on myös muita suoratoistoprotokollia:

  • Server-Sent Events (SSE): Yksisuuntainen protokolla, jossa palvelin työntää päivityksiä asiakkaalle. Se sopii yksinkertaisiin tietosyötteisiin ja on niitä varten helpompi.
  • gRPC Streaming: Käyttää HTTP/2:ta tehokkaaseen kaksisuuntaiseen suoratoistoon, ja sitä suositaan usein mikropalveluarkkitehtuureissa. Se edellyttää erityisiä gRPC-testaustyökaluja.

Kullakin protokollalla on omat testaukseen liittyvät huomionsa, ja ne saattavat edellyttää omia työkaluja tai kirjastoja.

Pikatarkistus

Ajatellaan reaaliaikaista chat-sovellusta, jossa käyttäjät lähettävät ja vastaanottavat jatkuvasti viestejä. Mikä seuraavista kuvaa parhaiten sitä, miksi WebSocketsia yleensä suositaan perinteisen HTTP:n sijaan tässä tilanteessa?

Kertaus: reaaliaikaisten testien hallinta

Olemme tarkastelleet WebSocketsia ja suoratoistoprotokollia käyttävien reaaliaikaisten sovellusten testauksen erityishaasteita.

Opit, että:

  • WebSockets tarjoaa pysyvän kaksisuuntaisen viestinnän.
  • JMeter (laajennuksineen) ja k6 (natiivin tuen ansiosta) ovat keskeisiä testaustyökaluja.
  • k6 tarjoaa joustavan JavaScript-ohjelmoinnin monimutkaisia skenaarioita varten.
  • Dynaamisten viestien tarkistaminen tarkistusten avulla on ratkaisevan tärkeää.

Näiden käsitteiden ymmärtäminen on olennaista nykyaikaisten vuorovaikutteisten sovellusten suorituskyvyn varmistamisessa.

Aloita maksutta

Opi Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6) tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”WebSocket- ja suoratoistotestaus” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-oppimispolun 3 oppituntia, myös oppitunnin “WebSocket- ja suoratoistotestaus”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”WebSocket- ja suoratoistotestaus”?

Tutustu reaaliaikaisten sovellusten suorituskykytestauksen menetelmiin WebSocketien ja suoratoistoprotokollien avulla. Harjoittelet Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”WebSocket- ja suoratoistotestaus”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-oppitunnilla?

Kyllä. Jokainen Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. API- ja mikropalvelutestaus
  2. Tapahtumaohjattujen järjestelmien testaus
  3. WebSocket- ja suoratoistotestaus
  4. GraphQL-rajapintojen kuormitustestaus
← Takaisin: Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)