Skip to content
Santekno.com | Level Up Your Engineering Skills
ID
📖 0%
04 Sep 2025 · 4 mnt baca ·Artikel 88 / 110
Go

88. Menggunakan `grpcurl` untuk Testing Manual

IH
Ihsan Arif
Penulis di Santekno · Backend Engineer

title: “88. Menggunakan grpcurl untuk Testing Manual” date: 2024-06-20T12:00:00Z tags: [grpc, testing, cli, productivity, tutorial] cover_image: https://miro.medium.com/v2/resize:fit:1400/1 *0UvK7Uv0LpD_gQE7IJzFNw.png

88. Menggunakan grpcurl untuk Testing Manual

Testing adalah bagian integral dalam pengembangan aplikasi, terutama ketika kita berbicara tentang protokol komunikasi seperti gRPC. Namun, seringkali testing pada service gRPC bisa menjadi mimpi buruk—setup terlalu rumit, Anda harus menulis banyak kode “client dummy”, atau bahkan tersandung dependency yang tidak jelas hanya untuk memastikan service berjalan seperti yang diinginkan. Di sinilah peran grpcurl sebagai game changer.

Pada artikel ini, saya ingin berbagi pengalaman dan praktik terbaik dalam menggunakan grpcurl untuk manual testing service gRPC, beserta contoh langsung, simulasi, dan bahkan sedikit diagram alur untuk memperjelas workflow yang sering saya gunakan dalam sehari-hari sebagai engineer.

Apa Itu grpcurl?

grpcurl adalah sebuah CLI tool open-source yang memungkinkan kita untuk berkomunikasi langsung dengan server gRPC. Fungsinya mirip seperti curl—hanya saja untuk gRPC. Dengan tool ini, kamu bisa inspect, call, dan debug endpoint gRPC tanpa harus menulis kode client khusus.

Kenapa Butuh grpcurl?

  • Tidak Perlu Client Code: Cukup modal terminal, kamu sudah bisa perform call.
  • Dinamis: Mendukung protokol reflection, tidak wajib punya file .proto.
  • Automasi: Bisa dikombinasikan dengan bash script atau CI pipeline.
  • Interaktif: Mudah untuk explore parameter dan response.

Instalasi Singkat

bash
1# Untuk Mac (Homebrew)
2brew install grpcurl
3
4# Untuk Linux
5sudo apt install protobuf-compiler
6GO111MODULE=on go get github.com/fullstorydev/grpcurl/cmd/grpcurl

Cek instalasi dengan:

bash
1grpcurl --version

Langkah 1: Mengenal Service

Sebelum testing, pastikan Anda tahu endpoint mana saja yang tersedia di server. Jika server mendukung reflection, jalankan perintah berikut:

bash
1grpcurl <host>:<port> list

Contoh output:

text
1helloworld.Greeter
2userprofile.UserService

Untuk mengetahui method dari service tertentu:

bash
1grpcurl <host>:<port> list userprofile.UserService

Output:

text
1userprofile.UserService.GetUser
2userprofile.UserService.UpdateUser
3userprofile.UserService.ListUsers

Langkah 2: Menampilkan Detail Method

Agar tahu input/output dari sebuah method, gunakan describe:

bash
1grpcurl <host>:<port> describe userprofile.UserService.GetUser

Output contoh:

text
1rpc GetUser (GetUserRequest) returns (User) {
2}

Langkah 3: Melakukan Call (Tanpa .proto)

Jika server support reflection—modal json, kamu sudah bisa panggil RPC.

bash
1grpcurl -d '{
2  "user_id": "u123"
3}' <host>:<port> userprofile.UserService.GetUser

Hasilnya:

json
1{
2  "user_id": "u123",
3  "name": "John",
4  "email": "john@mail.com"
5}

Jika Reflection Tidak Ada (Harus .proto)

Kadang, produk yang secure atau environment production sengaja menonaktifkan reflection. Tenang, grpcurl bisa pakai file .proto secara lokal:

bash
1grpcurl -import-path . -proto userprofile.proto \
2  -d '{"user_id": "u123"}' \
3  <host>:<port> userprofile.UserService.GetUser

Diagram Alur: Workflow Testing Manual

MERMAID
flowchart TD
    A[Mulai] --> B{GRPC Reflection Tersedia?}
    B -- Ya --> C[Langsung grpcurl endpoint]
    B -- Tidak --> D[Pakai .proto lokal]
    C --> E[Panggil method dengan data]
    D --> E
    E --> F[Lihat hasil]
    F --> G{Perlu Testing Lanjut?}
    G -- Ya --> E
    G -- Tidak --> H[Selesai]

Diagram di atas sangat mirip dengan kebiasaan saya saat debugging service gRPC baru untuk klien atau tim lain.

Contoh Simulasi: Workflow End-to-End

Asumsi: Ada service UserService dengan endpoint CreateUser.

1. Melihat Endpoint

bash
1grpcurl localhost:50051 list

2. Lihat Detail CreateUser

bash
1grpcurl localhost:50051 describe userprofile.UserService.CreateUser

3. Mulai Testing CreateUser

bash
1grpcurl -d '{
2  "name": "Alice",
3  "email": "alice@mail.com"
4}' localhost:50051 userprofile.UserService.CreateUser

Output:

json
1{
2  "user_id": "u124",
3  "name": "Alice",
4  "email": "alice@mail.com"
5}

4. Simulasi Error Case

Coba kirim request tanpa email:

bash
1grpcurl -d '{
2  "name": "Bob"
3}' localhost:50051 userprofile.UserService.CreateUser

Output:

text
1ERROR:
2  Code: InvalidArgument
3  Message: email is required

5. Table Perbandingan: grpcurl vs Menulis Client

FiturgrpcurlClient gRPC Sendiri
Mudah DigunakanSangat mudahPerlu setup, build
Tidak Butuh .protoJika reflect aktifWajib butuh
OtomasiBisa di-scriptPerlu coding
Response formatJSON (user-friendly)Struct/object (kode)
Inline TestingCLI, copy-pasteDebug code

Tips & Best Practice

  • Automasi testing: Masukkan grpcurl dalam bash script untuk regression/CI pipeline.
  • Environment variable: Simpan host/port di ENV agar lebih mudah.
  • Handle Auth/TLS: grpcurl mendukung autentikasi dan sertifikat, cek docs .
  • Documentation: Attach output deskripsi ke dokumentasi internal tim.
  • Testing Negative Case: Jangan lupa testing input invalid, edge case, ataupun error!

Kesimpulan

grpcurl sangat powerful dalam melibas masalah “How do I test this gRPC service?” tanpa harus terus-menerus menulis atau rebuild kode client dummy. Anda bisa mengeksplorasi API, mendebug, bahkan mengautomasi regression check hanya dengan modal terminal. Bagi engineer yang sering bermain di level integration dan system, grpcurl wajib masuk toolbelt.

Catatan: gRPC adalah masa depan API modern; tool yang tepat akan mempercepat Anda berinovasi.

Semoga ini membantu meningkatkan produktivitas manual testing service gRPC Anda. Silakan share pengalaman menggunakan tools CLI lain di kolom komentar! 🚀


Referensi:

Artikel Terkait

💬 Komentar