全部产品
Search
文档中心

Performance Testing:Parameter Output

更新时间:Jun 29, 2025

Dalam skenario pengujian stres yang sebenarnya, Anda dapat mengekstrak parameter output dari respons permintaan dan menggunakannya sebagai input untuk permintaan berikutnya. Anda juga dapat mendefinisikan beberapa parameter output dalam satu API. Topik ini menjelaskan cara mengekstrak parameter output.

Konfigurasikan parameter output

image Tabel berikut menjelaskan elemen-elemen dalam parameter output.

Elemen

Deskripsi

Output Parameter Name

Nama parameter output. Nama dapat berisi huruf, angka, garis bawah (_), dan tanda hubung (-). Nama harus dimulai dengan huruf.

Source

Metode penguraian respons. Anda dapat memilih salah satu metode penguraian berikut:

  • Body : JSON: menguraikan badan respons dalam format JSON.

  • Body : TEXT: menguraikan badan respons dalam format TEXT.

  • Header : K/V: menguraikan header respons dalam format pasangan kunci-nilai.

    Catatan

    Jika Anda memilih metode penguraian Header : K/V, ekspresi penguraian yang Anda tentukan harus dalam format Multipurpose Internet Mail Extensions (MIME) standar.

  • Cookie : K/V: menguraikan cookie dalam format pasangan kunci-nilai.

  • Status Code: mengekstrak kode status dalam respons.

Parsing Expression

Ekspresi penguraian yang digunakan untuk mengekstrak konten yang ingin Anda gunakan sebagai parameter output dari respons.

Nth match

Parameter ini hanya tersedia ketika Anda mengatur parameter Source ke Body : TEXT. Jika ekspresi penguraian yang ditentukan memiliki lebih dari satu kecocokan dalam respons, gunakan parameter ini untuk menentukan nomor urut string yang ingin Anda gunakan sebagai parameter output. Nomor urut dimulai dari 0. Nilai negatif menentukan string ke-N dari akhir. Nilai valid: -99 hingga 99. Jika Anda ingin menggunakan string acak sebagai parameter output, masukkan random.

Metode penguraian Body : JSON

Jenis respons berikut didukung: application/json dan text/json.

PTS mendukung sintaks JSONPath versi baru dan lama. Untuk membedakan antara kedua versi, bagian berikut menyediakan struktur JSONPath sampel serta deskripsi sintaks dan ekspresi JSONPath untuk masing-masing versi.

Disarankan menggunakan sintaks JSONPath versi baru.

Ekspresi JSONPath (Versi Baru)

Kode sampel berikut menunjukkan contoh struktur JSONPath versi baru. Tabel berikut menjelaskan sintaks dan deskripsi ekspresi JSONPath versi baru.

Struktur JSONPath Sampel

{
    "menu":{
        "header":"SVG Viewer",
        "items":[
            {
                "id":0
            },
            {
                "id":1,
                "label":"Open New"
            },
            null,
            {
                "id":2,
                "label":"Zoom In"
            },
            {
                "id":3,
                "label":"Zoom Out"
            },
            {
                "id":4,
                "label":"Original View"
            },
            null,
            {
                "id":5
            },
            {
                "id":6
            },
            {
                "id":7
            },
            null,
            {
                "id":8,
                "label":"Find..."
            },
            {
                "id":9,
                "label":"Find Again"
            },
            {
                "id":10
            },
            {
                "id":11,
                "label":"Copy Again"
            },
            {
                "id":12,
                "label":"Copy SVG"
            },
            {
                "id":13,
                "label":"View SVG"
            },
            {
                "id":14,
                "label":"View Source"
            },
            {
                "id":15,
                "label":"Save As"
            },
            null,
            {
                "id":16
            },
            {
                "id":17,
                "label":"About Adobe CVG Viewer..."
            }
        ]
    }
}

Sintaks JSONPath

Deskripsi

$

Objek root. Misalnya, jika Anda menentukan ekspresi $.menu.header, SVG Viewer akan dikembalikan.

[num]

Pengambilan elemen dalam array. Variabel num menentukan angka. Misalnya, jika Anda menentukan ekspresi $.menu.items[0], nilai {"id":0} akan dikembalikan.

[num0,num1,num2...]

Pengambilan beberapa elemen dalam array. Variabel num menentukan angka. Dalam hal ini, beberapa elemen dalam array dikembalikan. Misalnya, jika Anda menentukan ekspresi $.menu.items[0,3], array yang terdiri dari dua elemen dikembalikan dan elemen yang ditentukan oleh 3 adalah {"id":2,"label":"Zoom In"}.

[start:end]

Pengambilan rentang elemen yang didefinisikan oleh elemen awal dan elemen akhir dalam array. Misalnya, jika Anda menentukan ekspresi $.menu.items[0:3], array yang terdiri dari empat elemen dikembalikan. Elemen yang ditentukan oleh 1 adalah {"id":1,"label":"Open New"} dan elemen yang ditentukan oleh 2 adalah null.

[?(@.key)]

Pengambilan atribut objek yang tidak kosong. Misalnya, jika Anda menentukan ekspresi $.menu.items[?(@.label)], array yang terdiri dari 12 elemen dikembalikan. 12 elemen tersebut memiliki label yang tidak kosong dan elemen pertama adalah {"id":1,"label":"Open New"}.

[?(@.key > 123)]

Pengambilan atribut objek bertipe numerik melalui operasi perbandingan. Operator perbandingan yang didukung termasuk sama dengan (=), tidak sama dengan (!=), lebih besar dari (>), lebih besar dari atau sama dengan (>=), kurang dari (<), dan kurang dari atau sama dengan (<=). Misalnya, jika Anda menentukan ekspresi $.menu.items[?(@.id > 5)], array yang terdiri dari 12 elemen dengan ID lebih besar dari 5 dikembalikan dan elemen pertama adalah {"id":6}.

[?(@.key = '123')]

Pengambilan atribut objek bertipe string melalui operasi perbandingan. Operator perbandingan yang didukung termasuk sama dengan (=), tidak sama dengan (!=), lebih besar dari (>), lebih besar dari atau sama dengan (>=), kurang dari (<), dan kurang dari atau sama dengan (<=). Misalnya, jika Anda menentukan ekspresi $.menu.items[?(@.label = 'Copy Again')], array yang terdiri dari satu elemen dikembalikan dan elemen yang dikembalikan adalah {"id":11,"label":"Copy Again"}.

[?(@.key like 'aa%')]

Pengambilan atribut objek bertipe string melalui klausa like. Anda hanya dapat menggunakan tanda persen (%) sebagai wildcard. Klausa not like juga didukung. Misalnya, jika Anda menentukan ekspresi $.menu.items[?(@.label like 'Copy%')], array yang terdiri dari dua elemen dikembalikan. Dua elemen tersebut memiliki label yang mengandung string Copy, dan elemen pertama adalah {"id":11,"label":"Copy Again"}. Jika Anda menentukan ekspresi $.menu.items[?(@.label not like 'Copy%')], array yang terdiri dari 10 elemen dikembalikan. 10 elemen tersebut memiliki label yang tidak mengandung string Copy, dan elemen pertama adalah {"id":1,"label":"Open New"}.

[?(@.key rlike 'regexpr')]

Pengambilan atribut objek bertipe string melalui ekspresi reguler. Sintaks Java Development Kit (JDK) digunakan dan klausa not rlike didukung. Misalnya, jika Anda menentukan ekspresi $.menu.items[?(@.label rlike 'Copy ([A-Z]+)')], array yang terdiri dari satu elemen yang labelnya mengandung string Copy dan huruf kapital dikembalikan. Elemen yang dikembalikan adalah {"id":12,"label":"Copy SVG"}. Jika Anda menentukan ekspresi $.menu.items[?(@.label not rlike 'Copy ([A-Z]+)')], array yang terdiri dari 11 elemen dikembalikan dan elemen pertama adalah {"id":1,"label":"Open New"}.

[?(@.key in ('v0', 'v1'))]

Pengambilan atribut objek melalui klausa in. Objek bertipe string dan numerik didukung. Klausa not in didukung. Misalnya, jika Anda menentukan ekspresi $.menu.items[?(@.id in (1, 2))], array yang terdiri dari dua elemen dengan ID 1 dan 2 dikembalikan dan elemen pertama adalah {"id":1,"label":"Open New"}. Jika Anda menentukan ekspresi $.menu.items[?(@.id not in (1, 2))], array yang terdiri dari 16 elemen dengan ID bukan 1 atau 2 dikembalikan dan elemen pertama adalah {"id":0}.

[?(@.key between 234 and 456)]

Pengambilan atribut objek melalui klausa between. Objek bertipe numerik didukung. Klausa not between didukung. Misalnya, jika Anda menentukan ekspresi :$.menu.items[?(@.id between 0 and 3)], array yang terdiri dari empat elemen dengan ID dalam rentang 0 hingga 3 dikembalikan dan elemen pertama adalah {"id":0}.

length() or size()

Pengambilan jumlah elemen dalam array. Misalnya, jika Anda menentukan ekspresi $.menu.items.size() atau $.menu.items.length(), 22 akan dikembalikan.

..

Pengambilan atribut tertentu. Misalnya, jika Anda menentukan ekspresi $.menu.items..id, array yang terdiri dari 18 elemen dikembalikan. Setiap elemen sesuai dengan nilai ID.

*

Pengambilan semua atribut dalam objek. Misalnya, jika Anda menentukan ekspresi $.menu.items.*, semua data dalam array items dikembalikan.

randomIndex()

Pengambilan elemen acak dalam array. Misalnya, jika Anda menentukan ekspresi $.menu.items[randomIndex()], elemen acak dari array items dikembalikan.

['key']

Pengambilan atribut. Misalnya, jika Anda menentukan ekspresi $['menu']['items'], nilai array items dikembalikan.

['key0','key1']

Pengambilan beberapa atribut. Misalnya, jika Anda menentukan ekspresi $['menu']['items'][3]['id', 'label'], array yang terdiri dari dua elemen dikembalikan. ID yang dikembalikan adalah 2 dan label yang dikembalikan adalah Zoom In.

Catatan

Semantik ekspresi $.store.book[0].title dan $['store']['book'][0]['title'] adalah sama.

Ekspresi JSONPath (Versi Lama)

Kode sampel berikut menunjukkan contoh struktur JSONPath versi lama. Tabel berikut menjelaskan sintaks dan deskripsi ekspresi JSONPath versi lama.

{
    "info": "success",
    "message": "Succeeded.",
    "data": {
        "id":13509, "code":0,
        "items": [
            {"name": "name1", "value": "1234"},
            {"name": "name2", "value": "8448"},
            {"name": "name3", "value": "1298"},
            {"name": "name4", "value": "3049"},
            {"name": "name5", "value": "7648"}
        ]
    }
}
            

Nilai parameter output

Versi lama ekspresi penguraian

Versi baru ekspresi penguraian (untuk perbandingan)

Nilai objek info.

info

$.info

Nilai ID dalam array data.

data.id

$.data.id

Nilai elemen pertama dalam array items. Posisi relatif didukung.

data.items[0].value

$.data.items[0].value

Nilai elemen kedua dari belakang dalam array items. Posisi relatif didukung.

data.items[-2].value

Tidak didukung

Seluruh array items.

data.items[ALL]

$.data.items[*]

Elemen acak dalam array items.

data.items[RANDOM]

$.data.items[randomIndex()]

Metode penguraian Body : TEXT

Semua format teks didukung. Anda dapat menggunakan ekspresi reguler untuk mengekstrak informasi. Jika ekspresi reguler memiliki beberapa kecocokan, Anda dapat menentukan kecocokan mana yang digunakan. Secara default, 0 menunjukkan kecocokan pertama.

Kode sampel berikut menunjukkan contoh respons API:

<input name="id" value="34729XXXX">
<input name="token" value="acdfo4dfopasdf44dXXXX">
...
<script>
    var planId=4587;
    var planId=5689;
    var planId=8906;
</script>
            

Output parameter value

Parsing expression

Nth match

Nilai yang namanya adalah id.

<input name="id" value="([0-9]*)">

0

Nilai yang namanya adalah token.

name="token" value="([A-Za-z0-9]*)"

0

Nilai elemen PlanID ketiga.

var planId=([0-9]*);

2

Nilai elemen PlanID acak.

var planId=([0-9]*);

random

Konvensi Format:

  • Order matching principle: Ekspresi penguraian dicocokkan dengan badan respons berdasarkan urutan teks dalam badan respons. Jika ditemukan kecocokan, teks yang cocok ditetapkan ke parameter output dan teks berikutnya diabaikan. Pastikan bahwa ekspresi penguraian yang digunakan dapat secara tepat mencocokkan teks yang diinginkan. Jika hanya perlu memilih kecocokan pertama dari beberapa kecocokan, tidak perlu menentukan kecocokan mana yang digunakan.

  • Teks yang cocok tidak boleh mengandung karakter khusus seperti kurung kurawal ({}) dan tanda kurung (()).

  • Saat menggunakan ekspresi reguler untuk mengekstrak informasi dari respons JSON, tidak perlu menambahkan spasi setelah titik dua antara kunci dan nilai dalam pasangan kunci-nilai. Namun, Anda dapat menambahkan spasi setelah titik dua untuk meningkatkan efek visual data JSON.

Metode penguraian Cookie : K/V dan Header : K/V

Metode penguraian Cookie : K/V dan Header : K/V digunakan untuk mengekstrak bidang Cookie dan Header, masing-masing. Anda dapat menentukan kunci yang ingin diekstrak dalam ekspresi penguraian. Misalnya, jika bidang Cookie berisi token=1234;path=/ dan Anda ingin mengekstrak nilai token, masukkan token dalam ekspresi penguraian.

Metode penguraian Kode Status

Anda dapat menggunakan metode penguraian Kode Status untuk mengekstrak kode status respons permintaan. Dalam banyak kasus, gunakan metode penguraian ini untuk poin pemeriksaan atau lompatan bersyarat. Informasi halaman yang berbeda dikembalikan untuk kode status yang berbeda.

Parameter output node JDBC

Untuk mengekstrak parameter output dari hasil kueri SQL, pilih metode penguraian Body : JSON parsing method yang dijelaskan dalam bagian sebelumnya. Kode sampel berikut menunjukkan contoh struktur data JSON:

{
    "data": [
        
         {
             "Kolom 1": "nilai",
             "Kolom 2": "nilai"
           },
         
           {
              "Kolom 1": "nilai",
              "Kolom 2": "nilai"
           }
           ...
  ]
}

Misalnya, tabel berikut menunjukkan hasil kueri SQL. Anggaplah Anda ingin mengurai nilai (name1) dalam kolom nama baris pertama sebagai parameter output.

id

nama

1

name1

2

name2

Gunakan ekspresi penguraian berikut:

$.data[0].name

Debug parameter output

Jika Anda tidak yakin apakah ekspresi penguraian benar, Anda dapat men-debug ekspresi penguraian dan parameter output terkait dalam skenario debugging. Ikuti langkah-langkah berikut:

  • Di bagian bawah halaman PTS Scenario, klik Debug. Di kotak dialog Debug Scenario, klik nama skenario. Detail skenario ditampilkan di sisi kanan kotak dialog. Pilih API dari detail skenario dan klik Click to test the output parameter regular expression.

  • Di kotak dialog yang muncul, pilih format sumber, masukkan ekspresi reguler, tentukan nilai untuk parameter Kecocokan ke-N, masukkan nama untuk parameter output, dan kemudian klik Test Expression. Hasil kecocokan diperoleh berdasarkan detail respons, yang memprediksi apakah konten yang diekstrak sesuai dengan harapan.

  • Jika ingin menyetel ulang parameter output, klik Sync Output Parameter untuk menyinkronkan ekspresi reguler ke daftar parameter output API.

    Catatan

    Setelah debugging skenario selesai, kembali ke tab Scenario Settings jika skenario memiliki parameter output yang disinkronkan. Pada tab Output Parameter Definition dari API yang sesuai, tentukan nama untuk setiap parameter output yang disinkronkan.

Contoh: Konfigurasikan parameter output

Dalam bisnis manajemen keuangan, Anda ingin merekomendasikan layanan yang sesuai berdasarkan kemampuan konsumsi pelanggan. Dalam hal ini, Anda harus mengekstrak tingkat kemampuan konsumsi setiap pelanggan sebagai parameter output dan menggunakan parameter tersebut untuk merekomendasikan layanan.

Ikuti langkah-langkah berikut:

  1. Masuk ke Konsol PTS, pilih Performance Test > Create Scenario, dan klik PTS.

  2. Di halaman PTS Scenario, tambahkan API bernama Consumption Capability (including the output parameter) dan Product Recommendation dan masukkan URL yang sesuai.

  3. Dalam API bernama Consumption Capability (including the output parameter), informasi tentang kemampuan konsumsi diekstrak sebagai parameter output berdasarkan detail respons permintaan. Masukkan nama parameter output seperti output dan ekspresi penguraian seperti data.items[0].value.

  4. Di pojok kiri bawah halaman PTS Scenario, klik Parameters. Pada tab Custom Parameters panel yang muncul, lihat parameter output yang dibuat. Klik nama parameter output, seperti output, atau klik ikon 复制图标 yang sesuai dengan parameter output. Sistem akan menyalin isi parameter secara otomatis.

  5. Dalam body API bernama Product Recommendation, tentukan parameter output yang diekstrak. Di editor teks tab Body Definition, tempel isi parameter.image

    Anda juga dapat mengedit isi body, seperti menggabungkan string, parameter, atau fungsi.