Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6) · Pelajaran

Pemp_parameteran Data dalam k6

Laksanakan pemp_parameteran data dalam skrip k6 untuk menggunakan sumber data luaran sebagai input ujian.

Pelajaran 2 daripada 411 langkah

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,75

Anda 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 SharedArray k6 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)!

Percuma untuk bermula

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

  1. Senario Pengguna Maya (VUs)
  2. Pemp_parameteran Data dalam k6
  3. Pelaksanaan Awan dengan k6
  4. Metrik Tersuai dan Trend dalam k6
← Kembali ke Ujian Beban dan Penandaarasan Prestasi (JMeter dan k6)