Menguji Tool dengan Aman Memakai Mock
Buka di CMSBegitu agent Anda memanggil tool (API Anda sendiri, MCP server, agent lain, atau plugin), pengujian menjadi lebih sulit: satu test run bisa memesan meja sungguhan, membaca data live yang berubah setiap hari, atau gagal karena sebuah layanan sedang down. Mock mengatasi hal itu. Di langkah ini Anda menulis jawaban terskrip untuk tool Anda, memasangnya ke conversation simulation, lalu menjalankannya, sehingga setiap run mendapatkan hasil tool yang sama dan dapat diprediksi tanpa menyentuh apa pun yang nyata.
Sebelum memulai
- Agent Anda memiliki setidaknya satu tool: Menghubungkan API Anda, Menghubungkan MCP Server, Bekerja dengan Agent Lain, atau plugin dari Menggunakan Plugin.
- Agent sudah di-publish. Simulasi berjalan terhadap versi yang sudah di-publish, dan editor mock hanya menawarkan tool dari versi tersebut. Lihat Preview dan Publish Perubahan.
- Anda memahami dasar conversation simulation (step, expected response, criteria). Jika belum, baca dulu Otomasi Pengujian dan Merancang Skenario.
- Item Mocks muncul di bawah Simulation pada sidebar agent. Jika tidak terlihat, fitur Mocks belum diaktifkan di environment Anda.
Mengapa memakai mock
Selama simulasi, setiap pemanggilan tool melewati sebuah gerbang yang menentukan apa yang terjadi padanya. Tanpa mock, setiap jenis tool punya perilaku default yang tetap:
| Tool | Default dalam simulasi (tanpa mock) |
|---|---|
| Custom API, MCP server, agent lain, dan peer A2A | Blocked: tidak ada pemanggilan, dan agent diberi tahu bahwa tool tidak tersedia di run ini. |
| Plugin yang membaca data (misalnya Dynamic Table atau Public Documents) | Live: pemanggilan sungguhan dijalankan dan mengembalikan data sungguhan. |
| Plugin dan tool bawaan yang menulis data (form, reminder, escalation) | Simulated: tidak ada pemanggilan sungguhan; agent menerima jawaban "sukses" yang kosong. |
| Web search dan web scraping | Live, dan tidak bisa di-mock. |
Jadi tanpa mock, skenario yang bergantung pada API booking Anda tidak akan pernah lolos, dan skenario yang membaca tabel live bisa lolos hari ini tetapi gagal besok. Mock memberi tool sebuah jawaban terskrip sebagai gantinya. Dengan begitu Anda dapat:
- Menguji tanpa menyentuh sistem atau data sungguhan. Tidak ada booking sungguhan, tidak ada data pelanggan sungguhan, tidak ada pemanggilan ke API berbayar.
- Mendapatkan hasil yang sama di setiap run, sehingga run yang gagal berarti agent-nya yang berubah, bukan datanya.
- Menguji jalur yang sulit dengan sengaja: hasil kosong, "not found", error 500, timeout, item yang habis. Kondisi seperti ini sulit dipicu dengan layanan sungguhan.
Istilah penting
| Istilah | Arti |
|---|---|
| Mock set | Kumpulan jawaban terskrip bernama untuk satu atau beberapa tool. Set Library dibagikan dan dapat dipakai ulang oleh conversation simulation mana pun milik agent. |
| Tool mock | Bagian dari mock set untuk satu tool. |
| Case | Satu jawaban terskrip untuk sebuah tool, dipakai ketika argumen pemanggilan cocok dengan kondisi case tersebut. Satu tool bisa memiliki hingga 50 case, diperiksa dari atas ke bawah. |
| Condition | Aturan pada satu argumen pemanggilan, misalnya query contains latte. Semua condition dalam satu case harus terpenuhi. |
| Otherwise | Jawaban tool ketika tidak ada case yang cocok: respons default, atau "keep looking" ke mock set berikutnya. |
Langkah 1: Membuat mock set
- Di CMS, buka Simulation → Mocks pada sidebar agent. Halamannya berjudul Tool Mocks.
- Klik New Mock Set.
- Isi Name (wajib, maksimal 120 karakter), misalnya "Menu: Iced Caramel Latte sold out", dan Description (opsional).

Chip Library di samping judul berarti set ini dibagikan: Anda dapat memasangnya ke conversation simulation mana pun milik agent ini.
Langkah 2: Menambahkan tool yang ingin di-mock
- Di bawah Tools in this set, klik Add tool.
- Cari tool-nya lalu klik. Daftar ini menampilkan tool dari agent yang sudah di-publish, dikelompokkan menurut sumbernya (Custom API, MCP, Plugins, Built-in), beserta apa yang akan dilakukan tool tersebut jika tidak di-mock, misalnya Simulated success.

Kartu tool yang dipilih menampilkan deskripsinya dan Inputs-nya (argumen yang diisi AI saat memanggil tool). Anda dapat menambahkan beberapa tool ke satu set; pilih tool di daftar sebelah kiri untuk mengedit case-nya.
Jika suatu saat tool dihapus dari agent yang sudah di-publish, set akan menampilkan Tool not found in the published agent. Gunakan Re-bind to… untuk memindahkan case-nya ke tool lain.
Langkah 3: Menambahkan case dengan condition
- Klik Add case. Beri label agar mudah dikenali nanti, misalnya "Latte is sold out".
- Di bawah When all of these match, klik Add condition, pilih argumennya, pilih perbandingannya, lalu ketik nilainya.
- Tambahkan condition lain bila perlu. Case hanya menjawab jika setiap condition terpenuhi. Argumen yang tidak Anda cantumkan boleh bernilai apa saja.

Perbandingan yang bisa dipilih bergantung pada tipe argumen:
| Tipe argumen | Perbandingan |
|---|---|
| Teks (juga list, object, dan tipe yang tidak dikenal) | is, is not, contains, starts with, ends with, matches pattern, is one of, is empty, is not empty |
| Angka | =, ≠, <, ≤, >, ≥, is between (inklusif) |
| Ya/tidak | is true, is false |
| Tipe apa pun | is present, is missing |
Tips:
- Perbandingan teks mengabaikan huruf besar dan kecil, kecuali Anda mengaktifkan Aa (match case) pada condition tersebut.
- is one of menerima daftar yang dipisahkan koma; is between menerima nilai minimum dan maksimum.
- matches pattern memakai regular expression.
- Case tanpa condition cocok dengan semua pemanggilan. Letakkan di urutan terakhir, karena case diperiksa dari atas ke bawah dan case "tangkap semua" akan menutupi case di bawahnya.
- Untuk input yang tidak biasa, buka Advanced — Match raw arguments dan tempelkan potongan JSON yang harus terkandung dalam argumen pemanggilan. Ini diperiksa sebagai tambahan dari condition.
Langkah 4: Menulis respons
Di bawah Respond with, tulis apa yang dikembalikan tool untuk case ini. Editornya menyesuaikan dengan tool:
- Form menampilkan formulir yang sesuai dengan output tool (misalnya baris dan kolom untuk query tabel); View as JSON menampilkan body mentahnya. Anda juga bisa beralih antara JSON dan Text.
- Success dan Error membuka template siap pakai, seperti list kosong, "Not found (404)", "Unauthorized (401)", "Rate limited (429)", "Service down or timed out" untuk Custom API, atau "Query fails" dan "No rows found" untuk query tabel.
- Untuk Custom API, pilih HTTP Status (default 200 OK). Kode error di rentang 5xx sampai ke agent sebagai hasil kosong, sama seperti API sungguhan yang gagal.
- Untuk tool MCP, pilih Content atau MCP error. Untuk agent lain, tulis teks balasannya.
- Suggest meminta AI membuat draf respons untuk case tersebut. Format merapikan JSON.
- Fetch a sample (untuk tool yang hanya membaca data) memanggil tool sungguhan satu kali agar Anda bisa menyalin bentuk datanya. Use a real response hanya tersedia untuk Custom API yang memakai GET; untuk tool lain tombol ini terkunci karena memanggilnya bisa membuat data sungguhan.
Body respons bisa berukuran hingga 64 KB.
Langkah 5: Menentukan nasib pemanggilan lainnya
Di bawah daftar case, kotak Otherwise (every other call) menentukan jawaban tool ketika tidak ada case yang cocok. Buka Advanced untuk memilih:
- Respond with a default: pemanggilan mendapat respons yang Anda tulis di kotak ini (di sini: "No rows found").
- Keep looking: pemanggilan berlanjut ke mock set berikutnya, dan jika tidak ada yang menjawab, ke perilaku default tool sesuai tabel di Mengapa memakai mock. Di daftar tool, tool seperti ini ditandai "Keeps looking".

Klik Save. Set tersebut kini muncul di halaman Tool Mocks beserta tool-nya, jumlah case, dan berapa conversation yang memakainya.

Langkah 6: Memasang mock set ke conversation simulation
- Buka Simulation → Scenarios, lalu buka (atau buat) sebuah conversation simulation. Lihat Merancang Skenario untuk menulis step dan criteria.
- Di kartu Tool mocks, klik Add mock set:
- From library… memasang set bersama, seperti yang baru saja Anda buat.
- Create new membuat set Private yang hanya dimiliki conversation ini.
- Klik Save pada conversation.

Hal-hal yang perlu diketahui:
- Set yang dipasang di sini dipakai oleh setiap step. Seret barisnya untuk mengubah urutan: set pertama yang menjawab sebuah pemanggilan yang dipakai.
- Setiap step juga punya baris Tool mocks (n) sendiri dengan tombol Add step mock set. Set milik step diperiksa sebelum set milik conversation, sehingga Anda bisa mengubah jawaban satu tool hanya untuk satu step (misalnya "pencarian pertama tidak menemukan apa pun, pencarian kedua menemukan item-nya").
- Date & time the agent sees: aktifkan switch untuk menetapkan tanggal, jam, dan zona waktu untuk simulasi ini. Gunakan ketika argumen tool bergantung pada tanggal ("besok jam 7"), agar condition tetap cocok di setiap run.
- Di menu ⋮ pada baris, Make a private copy (pada set library) memberi conversation ini salinannya sendiri yang bisa Anda ubah tanpa memengaruhi conversation lain, dan Save to library (pada set private) membagikannya ke simulasi lain milik agent.
- Saat Anda mengklik Run dan run akan memanggil tool yang diblokir, konfirmasinya mencantumkan tool tersebut dengan tautan Mock it, yang membuka editor mock untuk tool itu.
Periksa hasilnya
- Klik Run pada conversation lalu konfirmasi. Setelah run selesai, buka dari tab Results (lihat Menjalankan dan Memantau).
- Buka conversation-nya. Mocks used in this run membuka panel berisi mock set persis yang dipakai run tersebut, dibekukan pada saat run, serta jam simulasi jika Anda mengaturnya.

- Buka sebuah step lalu buka Tool calls. Setiap pemanggilan menampilkan chip hasil dan asal jawabannya:

| Hasil | Apa yang terjadi |
|---|---|
| Mocked | Ada case yang cocok. Baris di bawahnya menyebutkan case dan mock set-nya, beserta status code. Chip kedua menunjukkan apakah set berasal dari Step atau Conversation. |
| Default | Tidak ada case yang cocok, dan default Otherwise milik tool yang menjawab. |
| Simulated | Tidak ada mock yang menjawab; dipakai simulated success bawaan tool. |
| Live | Tool sungguhan dijalankan. Baris ini diberi peringatan bahwa isinya mungkin data sungguhan. |
| Blocked | Tidak ada pemanggilan. Gunakan Mock this call untuk menambahkan mock untuknya. |
| Internal | Tool internal yang selalu berjalan. |
Buka sebuah pemanggilan untuk melihat Arguments dan Response lengkapnya. Jika tool memiliki Response Prompt, baris tersebut mencatat bahwa prompt itu diterapkan di atas respons mock, sama seperti di production. Pada pemanggilan Mocked atau Live, Save as case mengubah pemanggilan itu menjadi case baru (di set private untuk step ini, untuk seluruh conversation, atau di set yang sudah ada), yang merupakan cara tercepat membangun mock dari perilaku sungguhan.
Pada demo Brew di atas, pengguna bertanya "Can I order an iced caramel latte?", agent mencari di menu dengan query: "iced caramel latte", case "Latte is sold out" menjawab, dan agent membalas bahwa minuman tersebut tidak tersedia. Setiap run mendapat jawaban yang sama, apa pun isi menu live-nya.
Batasan dan praktik yang baik
- Mock hanya berlaku untuk conversation simulation. Preview, agent yang sudah di-publish, dan channel sungguhan selalu memanggil tool sungguhan.
- Satu mock set menampung hingga 50 tool, setiap tool hingga 50 case, setiap case hingga 20 condition.
- Web search dan web scraping tidak bisa di-mock; keduanya berjalan live dalam simulasi.
- Mock mengikuti agent yang sudah di-publish: publish setelah menambah atau mengganti nama tool, lalu perbarui mock set Anda.
- Buat satu tujuan per mock set ("happy path", "API down", "item habis") dan kombinasikan beberapa set per skenario, alih-alih satu set raksasa.
- Selalu uji setidaknya satu jalur error (template Error) agar Anda tahu bagaimana agent menjawab ketika sebuah layanan gagal.
Untuk daftar lengkap field di layar-layar ini, lihat halaman Help Mocks, Scenarios, dan Results.
Langkah berikutnya
- Berikutnya dalam alur: Mengingat Setiap Pengguna, langkah pertama Tahap 4 · Lanjutan.
- Menjalankan dan Memantau: jalankan skenario secara rutin dan pantau statusnya.
- Menganalisis dan Memperbaiki: ubah criteria yang gagal menjadi perbaikan.
- Langkah sebelumnya: Berbicara dengan Suara.