All Products
Search
Document Center

Performance Testing:Parameter output

Last Updated:Jun 21, 2026

Dalam skenario uji stres aktual, Anda dapat mengekstrak parameter output dari respons suatu permintaan dan menggunakan informasi tersebut sebagai input untuk permintaan berikutnya. Anda dapat mendefinisikan beberapa parameter output dalam satu API. Topik ini menjelaskan cara mengekstrak parameter output.

Konfigurasikan parameter output

imageTabel berikut menjelaskan elemen-elemen dalam parameter output.

Element

Description

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: Mengurai badan respons dalam format JSON.

  • Body : TEXT: Mengurai badan respons sebagai teks biasa.

  • Header : K/V: Mengurai header respons sebagai pasangan kunci-nilai.

    Catatan

    Jika Anda memilih Header : K/V, ekspresi penguraian adalah kunci dari header yang diinginkan.

  • Cookie : K/V: Mengurai cookie sebagai pasangan kunci-nilai.

  • HTTP Status Code: Mengekstrak kode status dari respons.

Parsing Expression

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

Nth match

Parameter ini hanya berlaku ketika Source diatur ke Body : TEXT. Jika ekspresi penguraian menemukan beberapa kecocokan, gunakan parameter ini untuk memilih salah satu. Pengindeksan dimulai dari 0. Angka negatif, seperti -n, memilih kecocokan ke-n dari akhir. Nilainya harus berada dalam rentang [-99, 99]. Untuk memilih kecocokan acak, masukkan random.

Metode penguraian Body : JSON

Tipe sumber Body : JSON mendukung respons dengan header Content-Type berupa application/json dan text/json.

PTS mendukung sintaks JSONPath versi baru maupun lama. Untuk menyoroti perbedaan antara ekspresi JSONPath versi baru dan lama, bagian berikut menyajikan struktur contoh JSONPath serta sintaks dan deskripsi ekspresi JSONPath untuk kedua versi tersebut.

Kami menyarankan agar Anda menggunakan sintaks JSONPath versi baru.

Ekspresi JSONPath (versi baru)

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

Struktur contoh JSONPath

{
    "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

Description

$

Objek root. Misalnya, jika Anda menentukan ekspresi $.menu.header, nilai yang dikembalikan adalah SVG Viewer.

[num]

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

[num0,num1,num2...]

Pengambilan beberapa elemen dalam array. Variabel num menentukan angka. Dalam kasus 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 indeks 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 indeks 1 adalah {"id":1,"label":"Open New"} dan elemen yang ditentukan oleh indeks 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. Ke-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 meliputi 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 yang ID-nya 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 meliputi 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. Kedua 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. Ke-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 juga 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 juga didukung. Misalnya, jika Anda menentukan ekspresi $.menu.items[?(@.id in (1, 2))], array yang terdiri dari dua elemen yang ID-nya 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 yang ID-nya 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 juga didukung. Misalnya, jika Anda menentukan ekspresi :$.menu.items[?(@.id between 0 and 3)], array yang terdiri dari empat elemen yang ID-nya berada dalam rentang 0 hingga 3 dikembalikan dan elemen pertama adalah {"id":0}.

length() atau size()

Pengambilan jumlah elemen dalam array. Misalnya, jika Anda menentukan ekspresi $.menu.items.size() atau $.menu.items.length(), nilai 22 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 dari 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

Makna semantik dari ekspresi $.store.book[0].title dan $['store']['book'][0]['title'] adalah sama.

Ekspresi JSONPath (versi lama)

Kode contoh berikut memberikan 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

Ekspresi penguraian versi lama

Ekspresi penguraian versi baru (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()]

Body : Metode Penguraian TEKS

Tipe sumber Body : TEXT mendukung format teks apa pun dan menggunakan ekspresi reguler untuk mengekstrak data. Jika ekspresi reguler menghasilkan beberapa kecocokan, Anda dapat menentukan kecocokan mana yang akan digunakan berdasarkan indeksnya. Indeks default adalah 0, yang memilih kecocokan pertama.

Kode contoh berikut menunjukkan respons API:

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

Nilai yang diinginkan

Parsing Expression

Nth match

Nilai yang namanya id.

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

0

Nilai yang namanya 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:

  • Pemindaian dimulai dari awal badan respons. Nilai pertama yang cocok dengan ekspresi digunakan, dan pemindaian berhenti. Oleh karena itu, pastikan ekspresi penguraian Anda cukup spesifik untuk mencocokkan hanya nilai yang diinginkan, kecuali jika salah satu dari beberapa kecocokan dapat diterima.

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

  • Saat menggunakan ekspresi reguler untuk mengekstrak informasi dari respons JSON, Anda tidak perlu menambahkan spasi setelah tanda titik dua antara kunci dan nilai dalam pasangan kunci-nilai. Anda dapat menambahkan spasi setelah tanda titik dua antara kunci dan nilai di setiap pasangan kunci-nilai untuk mengoptimalkan 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 bidang 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 Status Code

Anda dapat menggunakan metode penguraian Status Code untuk mengekstrak kode status respons permintaan. Dalam kebanyakan kasus, metode ini digunakan untuk titik pemeriksaan atau lompatan kondisional, karena halaman informasi yang berbeda dikembalikan untuk kode status yang berbeda.

Parameter output node JDBC

Untuk mengekstrak parameter output dari hasil kueri SQL, pilih sumber Body : JSON. Hasilnya disusun sebagai objek JSON berikut:

{
    "data": [
        
         {
             "Column 1": "value",
             "Column 2": "value"
           },
         
           {
              "Column 1": "value",
              "Column 2": "value"
           }
           ...
  ]
}

Sebagai contoh, tabel berikut menunjukkan hasil kueri SQL. Asumsikan Anda ingin mengurai nilai name1 dalam kolom name pada baris pertama sebagai parameter output.

id

name

1

name1

2

name2

Gunakan ekspresi penguraian berikut:

$.data[0].name

Debug parameter output

Jika Anda tidak yakin apakah ekspresi penguraian sudah benar, Anda dapat melakukan debug terhadap ekspresi penguraian dan parameter output terkait dalam debugging skenario. Lakukan langkah-langkah berikut:

  • Pada halaman PTS Scenario, klik Debug di bagian bawah. Pada kotak dialog Debug Scenario yang muncul, klik nama skenario tersebut. Di panel detail di sebelah kanan, pilih API dan klik Click to test the regular expression for the output parameter.

  • Pada kotak dialog yang muncul, pilih tipe sumber, masukkan ekspresi penguraian, tentukan nth match, dan masukkan nama parameter output. Klik Test Expression. Periksa hasil kecocokan terhadap detail respons untuk memverifikasi bahwa konten yang diekstrak sudah benar.

  • Untuk menyimpan konfigurasi, klik Sync Output Parameter untuk menambahkan ekspresi ini ke daftar parameter output API tersebut.

    Catatan

    Setelah debugging skenario selesai, jika Anda telah menyinkronkan parameter output apa pun, kembali ke tab Scenario settings pada uji stres. Pada tab Output Parameter Definition untuk API tersebut, Anda harus menetapkan nama untuk parameter output yang telah 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.

Lakukan langkah-langkah berikut:

  1. Masuk ke PTS console, pilih Performance Test > Create Scenario, lalu klik PTS.

  2. Pada halaman PTS Scenario, tambahkan API untuk mengambil daya belanja dan merekomendasikan produk. Misalnya, beri nama Spending Power (with output parameter) dan Product Recommendation, lalu masukkan URL masing-masing.

  3. Untuk API Spending Power (with output parameter), konfigurasikan parameter output untuk mengekstrak informasi daya belanja dari respons. Masukkan nama parameter output (misalnya, output) dan ekspresi penguraian (misalnya, data.items[0].value).

  4. Di pojok kiri bawah halaman PTS Scenario, klik Parameter list. Pada tab Custom parameters, Anda dapat melihat parameter output yang telah dibuat. Klik nama parameter (misalnya, output) atau ikon copy 复制图标 untuk menyalin referensi parameter ke clipboard Anda.

  5. Dalam konfigurasi API Product Recommendation, buka tab Body Definition. Tempel referensi parameter yang telah disalin ke dalam body.image

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