Pemp_parameteran Data dalam k6
Laksanakan pemp_parameteran data dalam skrip k6 untuk menggunakan sumber data luaran sebagai input ujian.
Pemp_parameteran Data dalam k6 ialah pelajaran Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6) percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6), dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6) merangkumi sejumlah 4 pelajaran.
Data Dinamik dalam Ujian k6
Semasa menguji prestasi, Anda jarang mahu setiap pengguna maya (VU) melakukan perkara yang sama tepat dengan data yang sama tepat. Pengguna sebenar berkelakuan secara berbeza!
Pemparameteran data ialah teknik menggunakan sumber data luaran untuk membekalkan input dinamik kepada skrip ujian Anda.
Mengapa Data Ujian Perlu Diparameterkan?
Bayangkan Anda sedang menguji halaman log masuk. Jika semua VU cuba log masuk menggunakan "user1" dan "pass1", Anda tidak menguji senario pengguna yang unik. Keadaan ini boleh menyebabkan:
- Corak beban yang tidak realistik
- Masalah caching
- Ralat akibat operasi pendua
Pemparameteran membantu mensimulasikan tingkah laku pengguna yang pelbagai dan realistik.
SharedArray untuk Data yang Cekap
Dalam k6, SharedArray ialah pilihan utama Anda untuk memuatkan data luaran dengan cekap. Ia direka untuk memuatkan data sekali pada permulaan ujian, kemudian berkongsinya dengan semua pengguna maya (VU).
- Muatkan Sekali: Menghalang pembacaan fail yang berulang.
- Tidak Boleh Diubah: Data tidak boleh diubah oleh VU.
- Cekap: Mengurangkan penggunaan memori.
Muatkan JSON dengan SharedArray
Mari mulakan dengan memuatkan tatasusunan JSON ringkas yang mengandungi kelayakan pengguna. Dalam ujian sebenar, Anda akan menggunakan open('./users.json') untuk membaca fail setempat. Untuk contoh yang boleh dijalankan ini, kami akan membenamkan data JSON secara terus.
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);
}
Gunakan JSON Berparameter
Setelah SharedArray dimuatkan, setiap pengguna maya (VU) boleh memilih entri unik atau rawak untuk digunakan dalam permintaannya. Ini mensimulasikan pengguna yang berbeza semasa log masuk atau melakukan tindakan.
Perhatikan bahawa kami memilih pengguna berdasarkan __VU % users.length untuk mengagihkan pengguna secara sama rata. Data pengguna ini kemudiannya tersedia untuk permintaan HTTP Anda.
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);
}
Muatkan CSV dengan SharedArray
Fail CSV (Nilai Dipisahkan Koma) ialah satu lagi cara yang biasa digunakan untuk menyimpan data ujian. SharedArray juga boleh mengendalikannya, tetapi memerlukan langkah penghuraian ringkas.
Bayangkan fail products.csv berikut:
product_id,product_name,price
101,Laptop,1200
102,Mouse,25
103,Keyboard,75Anda akan membaca fail ini dan menghuraikan setiap baris.
Huraikan CSV dalam k6
Untuk menghuraikan data CSV, Anda biasanya membaca fail baris demi baris, memisahkannya mengikut koma, kemudian memetakannya kepada objek. Modul k6/data tidak mempunyai penghuraikan CSV terbina dalam, jadi Anda perlu melakukannya secara manual atau menggunakan pembantu ringkas.
Berikut ialah cara memuatkan dan menghuraikan rentetan CSV sambil memastikan baris pengepala dilangkau:
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);
}
Gunakan CSV Berparameter
Setelah data CSV dimuatkan dan dihuraikan menjadi tatasusunan objek oleh SharedArray, Anda boleh mengakses sifatnya sama seperti data JSON. Ini membolehkan Anda membina URL dinamik, badan permintaan atau pengepala.
Dalam contoh ini, setiap VU mengakses product_id dan product_name produk untuk mensimulasikan pelayaran ke halaman produk yang berbeza, kemudian menambahkannya ke dalam troli.
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);
}
Agihkan Data kepada VU
Bagaimanakah VU mendapatkan datanya? Anda telah melihat dua corak biasa:
- Rawak:
data[Math.floor(Math.random() * data.length)]- Setiap VU memilih item rawak. Sesuai untuk kumpulan data besar yang itemnya boleh saling menggantikan. - Agihan Sama Rata:
data[__VU % data.length]- Setiap VU mendapat item unik secara giliran. Berguna apabila item data lebih sedikit daripada VU dan Anda mahu memastikan setiap item digunakan.
Pilih kaedah yang paling baik mensimulasikan tingkah laku pengguna sebenar Anda.
Semak Pemahaman Anda
Manakah antara pernyataan berikut tentang SharedArray k6 untuk pemparameteran data yang TRUE?
Ringkasan: Data Dinamik dalam k6
Anda telah mempelajari cara menghidupkan ujian k6 Anda dengan data dinamik! Kami telah membincangkan:
- Kepentingan pemparameteran data untuk ujian yang realistik.
- Penggunaan
SharedArrayk6 untuk memuatkan dan berkongsi data dengan cekap. - Contoh memuatkan dan menggunakan data JSON dan CSV.
- Strategi untuk mengagihkan data kepada pengguna maya individu.
Seterusnya, terokai cara mengekstrak nilai dinamik daripada respons pelayan (korelasi)!
Pelajari Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6) dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Soalan Lazim
Adakah pelajaran “Pemp_parameteran Data dalam k6” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6), termasuk “Pemp_parameteran Data dalam k6”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6) merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pemp_parameteran Data dalam k6”?
Laksanakan pemp_parameteran data dalam skrip k6 untuk menggunakan sumber data luaran sebagai input ujian. Anda berlatih Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6) menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6)?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6) di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Pemp_parameteran Data dalam k6” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6) ini?
Ya. Setiap pelajaran Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6) menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Senario Pengguna Maya (VUs)
- Pemp_parameteran Data dalam k6
- Pelaksanaan Awan dengan k6
- Metrik Tersuai dan Trend dalam k6