Tietojen parametrisointi k6:ssa
Toteuta tietojen parametrisointi k6-skripteissä käyttämällä ulkoisia tietolähteitä testisyötteinä.
Tietojen parametrisointi k6:ssa on ilmainen Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.
Dynaamiset tiedot k6-testeissä
Suorituskykyä testattaessa haluatte harvoin, että jokainen virtuaalinen käyttäjä (VU) tekee täsmälleen saman asian käyttäen täsmälleen samoja tietoja. Oikeat käyttäjät toimivat eri tavoin!
Tietojen parametrisoiminen tarkoittaa tekniikkaa, jossa ulkoisia tietolähteitä käytetään dynaamisten syötteiden välittämiseen testiskripteihin.
Miksi testitiedot kannattaa parametrisoida?
Kuvitellaan, että testaatte kirjautumissivua. Jos kaikki VU:t yrittävät kirjautua tunnuksilla "user1" ja "pass1", ette testaa yksilöllisiä käyttäjäskenaarioita. Tämä voi johtaa seuraaviin ongelmiin:
- Epärealistiset kuormitusmallit
- Välimuistiongelmat
- Päällekkäisten toimintojen aiheuttamat virheet
Parametrisointi auttaa simuloimaan monipuolista ja realistista käyttäjäkäyttäytymistä.
Tehokas tietojen lataus SharedArraylla
k6:ssa SharedArray on ensisijainen tapa ladata ulkoisia tietoja tehokkaasti. Se on suunniteltu lataamaan tiedot kerran testin alussa ja jakamaan ne sen jälkeen kaikkien virtuaalisten käyttäjien (VU:iden) kesken.
- Ladataan kerran: Estää tiedoston tarpeettomat uudelleenluvut.
- Muuttumattomuus: VU:t eivät voi muuttaa tietoja.
- Tehokkuus: Vähentää muistin kulutusta.
JSON-tietojen lataaminen SharedArraylla
Aloitetaan lataamalla yksinkertainen JSON-taulukko käyttäjätunnuksista. Oikeassa testissä käyttäisitte open('./users.json')-kutsua paikallisen tiedoston lukemiseen. Tässä suoritettavassa esimerkissä upotamme JSON-tiedot suoraan koodiin.
import { SharedArray } from 'k6/data';
import http from 'k6/http';
import { sleep } from 'k6/execution';
const users = new SharedArray('user_data', function () {
// In a real test, you'd use open('./users.json')
// For this runnable example, we'll use inline JSON data:
const inlineJson = `[
{"username": "user1", "password": "password1"},
{"username": "user2", "password": "password2"}
]`;
return JSON.parse(inlineJson);
});
export default function () {
const user = users[Math.floor(Math.random() * users.length)]; // Pick a random user
console.log(`VU ${__VU} using user: ${user.username}`);
// Simulate a request
http.get('https://test.k6.io');
sleep(1);
}
Parametrisoidun JSON:n käyttäminen
Kun SharedArray on ladattu, kukin virtuaalinen käyttäjä (VU) voi valita pyynnöissä käytettäväksi yksilöllisen tai satunnaisen alkion. Näin voidaan simuloida eri käyttäjien kirjautumista tai toimintojen suorittamista.
Huomaa, kuinka käyttäjä valitaan lausekkeella __VU % users.length, jotta käyttäjät jakautuvat tasaisesti. Tämän käyttäjän tiedot ovat sen jälkeen HTTP-pyyntöjesi käytettävissä.
import { SharedArray } from 'k6/data';
import http from 'k6/http';
import { sleep } from 'k6/execution';
const users = new SharedArray('user_data', function () {
const inlineJson = `[
{"username": "alice", "password": "passA"},
{"username": "bob", "password": "passB"},
{"username": "charlie", "password": "passC"}
]`;
return JSON.parse(inlineJson);
});
export default function () {
const user = users[__VU % users.length]; // Distribute users evenly
console.log(`VU ${__VU} logging in as: ${user.username}`);
const payload = JSON.stringify({
username: user.username,
password: user.password,
});
const params = {
headers: {
'Content-Type': 'application/json',
},
};
// Simulate a login request
http.post('https://test.k6.io/login', payload, params);
sleep(1);
}
CSV-tietojen lataaminen SharedArraylla
CSV-tiedostot (Comma Separated Values) ovat toinen yleinen tapa tallentaa testitietoja. SharedArray pystyy käsittelemään myös niitä, mutta tiedot on ensin jäsennettävä lyhyellä käsittelyvaiheella.
Kuvitellaan products.csv-tiedosto:
product_id,product_name,price
101,Laptop,1200
102,Mouse,25
103,Keyboard,75Luette tämän tiedoston ja jäsennätte sen jokaisen rivin.
CSV:n jäsentäminen k6:ssa
CSV-tietojen jäsentämiseksi tiedosto luetaan yleensä rivi riviltä, rivit jaetaan pilkkujen kohdalta ja muunnetaan sitten objekteiksi. k6/data-moduulissa ei ole sisäänrakennettua CSV-jäsentäjää, joten käsittely on tehtävä itse tai käytettävä yksinkertaista apufunktiota.
Seuraavassa näytetään, kuinka CSV-merkkijono ladataan ja jäsennetään niin, että otsikkorivi ohitetaan:
import { SharedArray } from 'k6/data';
import http from 'k6/http';
import { sleep } from 'k6/execution';
const products = new SharedArray('product_data', function () {
// For runnable example, use inline CSV content
const csvData = `product_id,product_name,price\n101,Laptop,1200\n102,Mouse,25\n103,Keyboard,75`;
const lines = csvData.split('\n');
const headers = lines[0].split(','); // Get headers
const data = [];
for (let i = 1; i < lines.length; i++) { // Start from second line (skip header)
const values = lines[i].split(',');
const row = {};
for (let j = 0; j < headers.length; j++) {
row[headers[j]] = values[j];
}
data.push(row);
}
return data;
});
export default function () {
const product = products[__VU % products.length]; // Distribute products
console.log(`VU ${__VU} viewing product: ${product.product_name}`);
// Simulate viewing a product page
http.get(`https://test.k6.io/products/${product.product_id}`);
sleep(1);
}
Parametrisoidun CSV:n käyttäminen
Kun CSV-tiedot on ladattu ja jäsennetty SharedArray-toiminnolla objektien taulukoksi, niiden ominaisuuksia voidaan käyttää samalla tavalla kuin JSON-tietojen ominaisuuksia. Näin voit muodostaa dynaamisia URL-osoitteita, pyyntöjen runkoja tai otsakkeita.
Esimerkissä kukin VU käyttää tuotteen ominaisuuksia product_id ja product_name eri tuotesivujen selaamisen simuloimiseen ja lisää tuotteen sitten ostoskoriin.
import { SharedArray } from 'k6/data';
import http from 'k6/http';
import { sleep } from 'k6/execution';
const products = new SharedArray('product_data', function () {
const csvData = `product_id,product_name,price\n101,Laptop,1200\n102,Mouse,25\n103,Keyboard,75`;
const lines = csvData.split('\n');
const headers = lines[0].split(',');
const data = [];
for (let i = 1; i < lines.length; i++) {
const values = lines[i].split(',');
const row = {};
for (let j = 0; j < headers.length; j++) {
row[headers[j]] = values[j];
}
data.push(row);
}
return data;
});
export default function () {
const product = products[__VU % products.length]; // Distribute products
console.log(`VU ${__VU} adding ${product.product_name} to cart`);
const payload = JSON.stringify({
productId: product.product_id,
quantity: 1,
price: product.price,
});
const params = {
headers: {
'Content-Type': 'application/json',
},
};
// Simulate adding a product to cart
http.post('https://test.k6.io/cart/add', payload, params);
sleep(1);
}
Tietojen jakaminen VU:ille
Miten VU:t saavat tietonsa? Olette nähneet kaksi yleistä tapaa:
- Satunnainen valinta:
data[Math.floor(Math.random() * data.length)]– Kukin VU valitsee satunnaisen alkion. Sopii suurelle joukolle keskenään vaihdettavia tietoja. - Tasainen jakaminen:
data[__VU % data.length]– Kukin VU saa yksilöllisen alkion vuorotteluperiaatteella. Hyödyllinen, kun tietoja on vähemmän kuin VU:ita ja haluat varmistaa, että jokaista käytetään.
Valitse menetelmä, joka simuloi parhaiten todellista käyttäjäkäyttäytymistä.
Testaa ymmärryksesi
Mitkä seuraavista k6:n SharedArray-toimintoa ja tietojen parametrisointia koskevista väitteistä PITÄVÄT PAIKKANSA?
Kertaus: dynaamiset tiedot k6:ssa
Olette oppineet elävöittämään k6-testinne dynaamisilla tiedoilla! Käsittelimme seuraavia aiheita:
- Tietojen parametrisoinnin merkitys realistisissa testeissä.
- k6:n
SharedArray-toiminnon käyttäminen tietojen tehokkaaseen lataamiseen ja jakamiseen. - Esimerkkejä sekä JSON- että CSV-tietojen lataamisesta ja käyttämisestä.
- Strategioita tietojen jakamiseen yksittäisille virtuaalisille käyttäjille.
Seuraavaksi tutustutte siihen, kuinka palvelinvastauksista poimitaan dynaamisia arvoja (korrelaatio)!
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 ”Tietojen parametrisointi k6:ssa” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kuormitustestaus ja suorituskyvyn vertailumittaus (JMeter ja k6)-oppimispolun 3 oppituntia, myös oppitunnin “Tietojen parametrisointi k6:ssa”. 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 ”Tietojen parametrisointi k6:ssa”?
Toteuta tietojen parametrisointi k6-skripteissä käyttämällä ulkoisia tietolähteitä testisyötteinä. 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 2/4.
Kuinka kauan ”Tietojen parametrisointi k6:ssa”-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
- Virtuaalikäyttäjien skenaariot (VU:t)
- Tietojen parametrisointi k6:ssa
- Suoritus pilvipalvelussa k6:lla
- Mukautetut metriikat ja trendit k6:ssa