Anda memiliki endpoint GraphQL dan perlu memastikan endpoint tersebut benar-benar bekerja: kueri user mengembalikan bidang yang dipakai aplikasi, mutasi createOrder menyimpan pesanan, dan bentuk respons tetap konsisten saat variabel berubah. Alat REST yang berfokus pada URL dan HTTP method sering terasa kurang nyaman untuk GraphQL karena semua operasi biasanya dikirim ke satu endpoint melalui body POST. Anda memerlukan klien yang memahami sintaks kueri, dapat membaca skema, memberi saran bidang, dan memvalidasi respons JSON.
Apidog mendukung GraphQL sebagai tipe permintaan khusus, bersama HTTP, gRPC, WebSocket, SSE, dan SOAP. Dalam panduan ini, Anda akan membuat permintaan GraphQL dari nol: menulis kueri, mengambil skema untuk pelengkapan kode, memakai variabel, menjalankan mutasi, menambahkan assertion, lalu menyimpannya sebagai skenario pengujian. Contohnya menggunakan API e-commerce untuk mengambil pengguna dan pesanan, kemudian membuat pesanan baru. Untuk konsep dasar GraphQL, gunakan dokumentasi resmi GraphQL. Untuk memilih pendekatan API yang tepat, lihat perbandingan REST vs GraphQL.
Apa yang diuji dan mengapa GraphQL berbeda
REST biasanya memiliki banyak endpoint dengan struktur respons tetap. GraphQL biasanya menggunakan satu endpoint, tetapi pemanggil menentukan sendiri bidang yang ingin diambil.
Contoh REST:
GET /users/42
Padanan GraphQL:
query {
user(id: 42) {
id
name
}
}
Dua perbedaan penting saat menguji GraphQL:
- Operasi dikirim sebagai dokumen kueri di body request, bukan sebagai variasi URL.
-
HTTP 200 tidak selalu berarti operasi berhasil. GraphQL dapat mengembalikan
200 OKmeskipun terjadi kesalahan validasi atau kesalahan bisnis. Kesalahan tersebut biasanya muncul dalam arrayerrors.
Contoh respons yang gagal secara logika, tetapi tetap menggunakan HTTP 200:
{
"errors": [
{
"message": "User tidak ditemukan"
}
],
"data": {
"user": null
}
}
Karena itu, assertion GraphQL harus memeriksa body respons, bukan hanya status HTTP.
Buat permintaan GraphQL di Apidog
Mulai dengan mengunduh Apidog atau membukanya melalui browser. Buat atau buka proyek agar permintaan dapat disimpan dan digunakan ulang.
Langkah 1: buat request GraphQL
- Klik tombol
+. - Pilih
New Request. - Atur method menjadi
POST. - Masukkan URL endpoint GraphQL Anda.
Contoh:
https://api.yourstore.com/graphql
- Buka tab
Body. - Pilih tipe body
GraphQL.
Apidog akan menampilkan editor GraphQL dengan area Query. Jika endpoint memerlukan autentikasi, buka bagian Authorization dan tambahkan token, misalnya Bearer token.
Authorization: Bearer <your-token>
GraphQL tetap berjalan melalui HTTP, sehingga konfigurasi autentikasinya sama seperti request HTTP lain.
Langkah 2: tulis kueri pertama
Di tab Run, masukkan kueri untuk mengambil pengguna beserta pesanan mereka:
query GetUserWithOrders {
user(id: "usr_1024") {
id
name
email
orders {
id
total
status
createdAt
}
}
}
Kueri ini meminta:
- data pengguna;
- daftar pesanan terkait;
- detail setiap pesanan, termasuk status dan waktu pembuatan.
Nama bidang harus sesuai dengan skema server. Jika skema menggunakan emailAddress, bukan email, kueri akan gagal. Untuk menghindari menebak nama bidang, ambil skema endpoint pada langkah berikutnya.
Langkah 3: ambil skema untuk pelengkapan kode
Klik Fetch Schema pada editor GraphQL. Apidog akan menjalankan introspeksi terhadap endpoint dan mengambil informasi tipe, query, mutation, serta bidang yang tersedia.
Setelah skema berhasil diambil, editor dapat memberi saran bidang dan tipe saat Anda menulis kueri.
Gunakan alur berikut:
- Pastikan URL endpoint sudah benar.
- Konfigurasikan autentikasi bila diperlukan.
- Klik
Fetch Schema. - Mulai tulis kueri dan pilih bidang dari saran editor.
- Jalankan ulang
Fetch Schemasetelah ada perubahan skema.
Perlu diingat:
- Pelengkapan kode tidak aktif otomatis; Anda harus memilih
Fetch Schema. - Jika introspeksi dinonaktifkan di server produksi, skema tidak dapat diambil.
- Dalam kasus tersebut, gunakan dokumentasi internal atau skema GraphQL yang disediakan tim backend.
Langkah 4: jalankan dan baca respons
Klik Send. Respons yang berhasil dapat terlihat seperti ini:
{
"data": {
"user": {
"id": "usr_1024",
"name": "Dana Whitfield",
"email": "dana@example.com",
"orders": [
{
"id": "ord_5001",
"total": 89.9,
"status": "SHIPPED",
"createdAt": "2026-07-01T09:14:00Z"
},
{
"id": "ord_5002",
"total": 12.5,
"status": "PENDING",
"createdAt": "2026-07-12T16:03:00Z"
}
]
}
}
}
Perhatikan struktur respons:
- hasil operasi berada di bawah
data; - kesalahan GraphQL berada di bawah
errors; - assertion nilai harus menggunakan jalur seperti
$.data.user.orders, bukan$.user.orders.
Meneruskan variabel agar request dapat digunakan ulang
Jangan meng-hardcode nilai seperti "usr_1024" jika request akan dipakai ulang. Gunakan variabel GraphQL agar Anda dapat menjalankan kueri yang sama untuk pengguna, environment, atau data pengujian yang berbeda.
Referensi sintaksnya tersedia di dokumentasi GraphQL tentang variables.
Ubah kueri menjadi:
query GetUserWithOrders($userId: ID!) {
user(id: $userId) {
id
name
orders {
id
total
status
}
}
}
Kemudian masukkan nilai variabel sebagai JSON:
{
"userId": "usr_1024"
}
Dengan pola ini, Anda hanya perlu mengubah nilai di object variables tanpa mengedit dokumen kueri.
Untuk environment yang berbeda, gunakan kombinasi variabel GraphQL dan environment variables Apidog. Misalnya:
{
"userId": "{{test_user_id}}"
}
Dengan demikian, request yang sama dapat dijalankan terhadap staging dan produksi dengan konfigurasi environment yang berbeda.
Tulis mutasi untuk membuat pesanan
Mutasi digunakan untuk mengubah data. Di Apidog, mutasi ditulis pada editor Query yang sama; cukup gunakan keyword mutation.
Contoh mutasi untuk membuat pesanan:
mutation CreateOrder($input: CreateOrderInput!) {
createOrder(input: $input) {
id
total
status
createdAt
}
}
Masukkan payload melalui variables:
{
"input": {
"userId": "usr_1024",
"items": [
{
"sku": "TSHIRT-BLK-M",
"quantity": 2
},
{
"sku": "MUG-CERAMIC",
"quantity": 1
}
],
"currency": "USD"
}
}
Klik Send. Respons yang berhasil dapat berbentuk seperti ini:
{
"data": {
"createOrder": {
"id": "ord_5003",
"total": 42.3,
"status": "PENDING",
"createdAt": "2026-07-15T10:22:11Z"
}
}
}
Karena mutasi menulis data, jalankan mutasi pada environment testing atau staging, bukan produksi.
Pola pengujian end-to-end yang praktis:
- Jalankan query pengguna.
- Jalankan mutasi
CreateOrder. - Simpan
idpesanan dari respons mutasi. - Jalankan kembali query pengguna.
- Pastikan pesanan baru muncul pada daftar
orders.
Tegaskan respons, jangan periksa JSON secara manual
Saat eksplorasi, memeriksa JSON secara manual masih cukup. Namun, pengujian regresi memerlukan assertion yang dapat menentukan lulus atau gagal secara otomatis.
Apidog memungkinkan Anda menambahkan assertion ke request, seperti yang dijelaskan pada panduan penegasan API.
Untuk request GraphQL, tambahkan minimal tiga pemeriksaan berikut:
Status HTTP adalah
200
Ini memastikan transport HTTP berhasil.Field
errorstidak ada
Ini adalah pemeriksaan utama GraphQL. Status200tetap dapat berisi kegagalan operasi.Nilai di bawah
datasesuai harapan
Gunakan JSONPath untuk memvalidasi struktur dan isi respons.
Contoh assertion yang berguna:
Status code equals 200
$.errors does not exist
$.data.createOrder.status equals PENDING
$.data.user.orders length is greater than 0
Kombinasi tersebut menangkap masalah yang tidak terlihat jika hanya memeriksa status HTTP, seperti:
- bidang GraphQL tidak valid;
- user tidak ditemukan;
- respons mengandung
errors; - mutasi berhasil dipanggil tetapi mengembalikan status pesanan yang tidak sesuai;
- struktur respons berubah setelah pembaruan skema.
Simpan alur ke dalam skenario pengujian
Satu request dengan assertion cocok untuk smoke test. Untuk pengujian alur bisnis, rangkai beberapa request menjadi skenario.
Contoh skenario:
- Query pengguna.
- Buat pesanan melalui mutasi.
- Ekstrak
idpesanan dari respons mutasi. - Query ulang pengguna atau pesanan.
- Pastikan pesanan yang dibuat benar-benar tersimpan.
Skenario pengujian Apidog dapat menjalankan langkah-langkkah tersebut secara berurutan, meneruskan data antar-step, dan menjalankan seluruh alur dengan satu aksi. Lihat panduan cara menulis skenario pengujian dengan Apidog.
Implementasikan skenario dengan langkah berikut:
- Buat test scenario baru.
- Tambahkan query
GetUserWithOrders. - Tambahkan mutasi
CreateOrder. - Ekstrak nilai berikut dari respons mutasi:
$.data.createOrder.id
- Simpan hasil ekstraksi sebagai variabel skenario.
- Gunakan variabel tersebut pada query verifikasi.
- Tambahkan assertion pada setiap langkah.
Dengan pendekatan ini, Anda memiliki tes regresi yang dapat digunakan kembali saat skema, resolver, atau logika bisnis berubah.
Untuk membandingkan GraphQL dengan protokol lain, lihat REST vs GraphQL vs gRPC dan ringkasan alat pengujian dan mocking GraphQL. Jika stack Anda juga menggunakan SOAP, pola request dan assertion yang sama dapat diterapkan melalui panduan cara menguji API SOAP di Apidog.
Otomatiskan alur kerja dengan Apidog CLI
Setelah skenario berada dalam proyek, Anda dapat menjalankan skenario pengujian yang tersimpan dari terminal atau CI runner menggunakan Apidog CLI.
Instal CLI dan login:
npm install -g apidog-cli
apidog login --with-token <your-token>
Kemudian jalankan skenario berdasarkan ID dan environment:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t <scenario_id> -e <env_id> -r cli
Parameter yang digunakan:
-
-t: ID skenario pengujian; -
-e: ID environment; -
-r: reporter, misalnyacli,html, ataujunit.
Untuk memakai lebih dari satu reporter:
apidog run --access-token $APIDOG_ACCESS_TOKEN -t <scenario_id> -e <env_id> -r html,cli
CLI menjalankan skenario dan test suite yang disimpan di proyek cloud, lalu melaporkan hasil lulus atau gagal. Ini membuatnya sesuai untuk integrasi build dan pipeline.
Namun, dokumentasi CLI mengonfirmasi eksekusi skenario HTTP dan tidak secara eksplisit menyatakan apakah skenario dengan langkah GraphQL dapat berjalan tanpa kepala. Gunakan CLI untuk regresi HTTP dan sinkronisasi spesifikasi melalui perintah import untuk OpenAPI, HAR, Postman, dan format lainnya. Untuk pekerjaan query, mutation, dan assertion GraphQL, gunakan aplikasi Apidog.
Baca panduan instalasi Apidog CLI untuk setup token dan Apidog CLI dalam pipeline GitHub Actions untuk integrasi CI.
FAQ
Apakah saya memerlukan paket berbayar untuk menguji GraphQL di Apidog?
Dokumen request GraphQL tidak membatasi fitur ini pada paket tertentu dan tidak membedakan dukungan cloud maupun self-hosted. Anda dapat mulai dari paket gratis tanpa kartu kredit. Lihat Apidog untuk detail paket terbaru.
Mengapa request GraphQL mengembalikan 200 tetapi tetap gagal?
Itu adalah perilaku normal GraphQL. Transport HTTP berhasil sehingga server mengembalikan status 200, tetapi operasi dapat gagal karena validasi atau kesalahan bisnis. Selalu assert bahwa errors tidak ada, selain memeriksa status HTTP. Lihat panduan penegasan API.
Bagaimana cara mendapatkan saran bidang saat menulis kueri?
Klik Fetch Schema di editor GraphQL. Apidog akan mengintrospeksi endpoint dan mengaktifkan pelengkapan kode untuk bidang dan tipe yang valid. Jalankan kembali pengambilan skema setelah skema API berubah.
Di mana tab khusus untuk mutation?
Tidak ada tab terpisah. Tulis mutasi pada kotak Query yang sama menggunakan keyword mutation, lalu kirim payload melalui variables dan klik Send.
Bagaimana cara mengganti nilai tanpa menulis ulang kueri?
Gunakan variabel GraphQL. Deklarasikan variabel dengan prefiks $ pada signature operasi, lalu masukkan nilainya sebagai object JSON. Sintaks ini mengikuti spesifikasi variables GraphQL dan dapat dipadukan dengan environment variables Apidog.
Kesimpulan
Pengujian GraphQL yang efektif bergantung pada beberapa kebiasaan:
- tulis operasi pada editor
Query; - ambil skema agar editor dapat memberi saran bidang valid;
- gunakan variables untuk data yang berubah;
- periksa
errors, bukan hanya status HTTP; - tambahkan assertion pada nilai di bawah
data; - rangkai query dan mutation ke dalam skenario pengujian.
Mulai dengan mengunduh Apidog, buat alur query pengguna dan pembuatan pesanan, lalu simpan sebagai tes regresi yang dapat dijalankan kembali setiap kali skema berubah.
Top comments (0)