REST API (Representational State Transfer Application Programming Interface) adalah tulang punggung aplikasi web dan mobile modern. Setiap kali Anda menyegarkan feed media sosial, memeriksa cuaca di ponsel, atau mengirimkan formulir di situs web, ada kemungkinan besar REST API bekerja di belakang layar. Memahami cara menguji API ini adalah keterampilan penting untuk pengembang, insinyur QA, dan bahkan manajer produk yang ingin memahami sistem yang mereka kerjakan.
Panduan ini akan membawa Anda dari nol menjadi penguji API yang percaya diri. Kami akan membahas apa itu REST API, bagaimana metode HTTP bekerja, apa arti kode status, cara menyusun permintaan, dan yang paling penting, cara benar-benar menguji API secara efektif. Di akhir, Anda akan memiliki pengetahuan untuk menguji REST API apa pun yang Anda temui.
Apa Itu REST API?
REST adalah gaya arsitektur untuk merancang aplikasi jaringan. Ini mengandalkan protokol komunikasi stateless โ hampir selalu HTTP โ dan menggunakan operasi standar untuk memanipulasi sumber daya. Dalam REST API, segalanya adalah sumber daya: pengguna, produk, pesanan, artikel. Setiap sumber daya diidentifikasi oleh URL (disebut endpoint), dan Anda berinteraksi dengan sumber daya ini menggunakan metode HTTP standar.
Misalnya, jika Anda memiliki aplikasi e-commerce, API Anda mungkin memiliki endpoint seperti /api/users, /api/products, dan /api/orders. Setiap endpoint mewakili kumpulan sumber daya, dan Anda dapat melakukan operasi pada mereka dengan mengirim permintaan HTTP dengan metode yang sesuai.
Prinsip utama REST termasuk statelessness (setiap permintaan berisi semua informasi yang diperlukan untuk memprosesnya), antarmuka seragam (pola URL dan metode HTTP yang konsisten), dan arsitektur berbasis sumber daya (kata benda dalam URL, kata kerja dalam metode HTTP). Memahami prinsip-prinsip ini membantu Anda merancang API yang lebih baik dan mengujinya lebih efektif.
Penjelasan Metode HTTP
Metode HTTP (juga disebut kata kerja) mendefinisikan tindakan yang ingin Anda lakukan pada sumber daya. Ada lima metode utama yang digunakan dalam REST API, dan memahami masing-masing adalah fundamental untuk pengujian API.
GET โ Ambil Data
Metode GET mengambil data dari server. Ini adalah operasi baca-saja dan tidak boleh mengubah data di server. Ketika Anda mengunjungi halaman web, browser Anda mengirim permintaan GET untuk mengambil HTML. Demikian pula, ketika aplikasi menampilkan daftar pengguna, aplikasi mengirim permintaan GET ke /api/users.
GET /api/users HTTP/1.1
Host: example.com
Accept: application/json
Permintaan GET dapat menyertakan parameter kueri untuk filtering dan sorting. Misalnya, GET /api/users?role=admin&sort=name mengambil hanya pengguna admin yang diurutkan berdasarkan nama. Karena permintaan GET bersifat idempoten (memanggilnya beberapa kali menghasilkan hasil yang sama), mereka aman untuk dicoba ulang.
POST โ Buat Data
Metode POST membuat sumber daya baru. Ketika Anda mengirimkan formulir pendaftaran, browser Anda mengirim permintaan POST dengan data formulir di body permintaan. Server memproses data ini, membuat sumber daya baru, dan biasanya mengembalikan sumber daya yang dibuat bersama dengan kode status 201 Created.
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "Jane Doe",
"email": "jane@example.com",
"role": "developer"
}
Permintaan POST tidak idempoten โ mengirim permintaan POST yang sama dua kali mungkin membuat dua sumber daya. Ini penting untuk diingat saat pengujian, karena permintaan POST berulang dapat menyebabkan data duplikat di lingkungan pengujian Anda.
PUT โ Perbarui Data (Penggantian Penuh)
Metode PUT memperbarui sumber daya yang ada dengan menggantinya sepenuhnya. Anda mengirim representasi yang diperbarui lengkap dari sumber daya, dan server mengganti data yang ada dengan apa yang Anda berikan. PUT idempoten โ mengirim permintaan PUT yang sama beberapa kali menghasilkan hasil yang sama.
PUT /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "Jane Smith",
"email": "jane.smith@example.com",
"role": "senior developer"
}
PATCH โ Perbarui Data (Pembaruan Parsial)
Metode PATCH memperbarui sumber daya yang ada secara parsial. Tidak seperti PUT, yang menggantikan seluruh sumber daya, PATCH hanya memodifikasi field yang Anda tentukan. Ini lebih efisien ketika Anda hanya perlu mengubah satu atau dua field.
PATCH /api/users/123 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"role": "senior developer"
}
DELETE โ Hapus Data
Metode DELETE menghapus sumber daya dari server. Ini idempoten โ menghapus sumber daya yang sudah dihapus harus mengembalikan respons yang sama (biasanya 404 Not Found atau 204 No Content).
DELETE /api/users/123 HTTP/1.1
Host: example.com
Memahami Kode Status HTTP
Kode status adalah angka tiga digit yang menunjukkan hasil permintaan HTTP. Mereka dikelompokkan menjadi lima kategori, dan memahaminya sangat penting untuk menafsirkan respons API dengan benar.
- 1xx (Informasi): Jarang terlihat dalam pengujian API. Ini menunjukkan bahwa permintaan diterima dan proses sedang berlanjut.
- 2xx (Sukses): Permintaan berhasil diterima, dipahami, dan diproses. Kode umum termasuk 200 OK, 201 Created, dan 204 No Content.
- 3xx (Pengalihan): Klien perlu mengambil tindakan lebih lanjut. 301 Moved Permanently dan 302 Found adalah kode pengalihan umum.
- 4xx (Kesalahan Klien): Permintaan berisi sintaks buruk atau tidak dapat dipenuhi. Kode umum termasuk 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, dan 422 Unprocessable Entity.
- 5xx (Kesalahan Server): Server gagal memenuhi permintaan yang valid. Kode umum termasuk 500 Internal Server Error, 502 Bad Gateway, dan 503 Service Unavailable.
Saat menguji API, perhatikan kode status dengan cermat. Respons 200 tidak selalu berarti API berfungsi dengan benar โ Anda perlu memverifikasi bahwa body respons berisi data yang diharapkan. Sebaliknya, kesalahan 4xx mungkin merupakan perilaku yang diharapkan jika Anda menguji validasi input.
Header Permintaan
Header HTTP memberikan informasi tambahan tentang permintaan atau respons. Mereka adalah pasangan kunci-nilai yang dikirim sebelum body permintaan. Beberapa header penting untuk pengujian API.
- Content-Type: Menentukan tipe media dari body permintaan. Untuk REST API, ini hampir selalu application/json.
- Accept: Memberi tahu server format respons apa yang diharapkan klien. Gunakan application/json untuk respons JSON.
- Authorization: Berisi kredensial untuk mengautentikasi permintaan. Skema umum termasuk token Bearer dan autentikasi Basic.
- Cache-Control: Mengarahkan mekanisme caching. Berguna untuk menguji perilaku caching.
- User-Agent: Mengidentifikasi klien yang membuat permintaan. Beberapa API mengembalikan respons berbeda berdasarkan header ini.
Saat pengujian, selalu setel header Content-Type yang benar. Lupa menyetel Content-Type: application/json saat mengirim body JSON adalah salah satu kesalahan paling umum dalam pengujian API, dan sering kali menghasilkan respons 400 atau 415.
Cara Menguji API: Pendekatan Langkah demi Langkah
Langkah 1: Pahami Dokumentasi API
Sebelum mengirim permintaan apa pun, baca dokumentasi API. Dokumentasi yang baik akan menjelaskan endpoint yang tersedia, parameter yang diperlukan, metode autentikasi, format permintaan dan respons yang diharapkan, dan contoh penggunaan.
Langkah 2: Siapkan Autentikasi
Sebagian besar API memerlukan autentikasi. Ini bisa sesederhana kunci API dalam string kueri, atau serumit OAuth 2.0 dengan token refresh. Konfigurasikan autentikasi Anda sebelum menguji endpoint yang dilindungi.
Langkah 3: Uji Skenario Happy Path
Mulailah dengan menguji perilaku yang diharapkan. Kirim permintaan valid dengan parameter yang benar dan verifikasi bahwa respons cocok dengan dokumentasi. Periksa kode status, struktur body respons, dan header respons.
Langkah 4: Uji Skenario Kesalahan
Setelah mengkonfirmasi happy path, uji kondisi kesalahan. Kirim permintaan dengan field yang hilang, tipe data tidak valid, nilai di luar jangkauan, dan JSON yang salah format. Verifikasi bahwa API mengembalikan kode status dan pesan kesalahan yang sesuai.
Langkah 5: Uji Kasus Edge
Kasus edge adalah kondisi batas yang sering mengungkap bug. Uji dengan string kosong, string yang sangat panjang, karakter khusus, nilai null, angka negatif, dan nilai maksimum yang diizinkan. Juga uji dengan data yang valid secara sintaksis tetapi mungkin tidak valid secara logis.
Skenario Pengujian API Umum
Menguji Operasi CRUD
CRUD (Create, Read, Update, Delete) adalah pola paling umum dalam REST API. Pengujian CRUD lengkap melibatkan: membuat sumber daya dengan POST, membacanya kembali dengan GET, memperbaruinya dengan PUT atau PATCH, dan menghapusnya dengan DELETE.
Menguji Autentikasi dan Otorisasi
Verifikasi bahwa endpoint yang dilindungi mengembalikan 401 ketika tidak ada autentikasi yang disediakan. Uji bahwa pengguna hanya dapat mengakses sumber daya yang mereka otorisasi โ pengguna biasa tidak boleh dapat mengakses endpoint admin.
Menguji Pagination dan Filtering
Ketika endpoint mengembalikan daftar sumber daya, uji parameter pagination (page, limit, offset). Verifikasi bahwa respons menyertakan metadata seperti jumlah total dan total halaman. Uji parameter filtering dan sorting.
Alat untuk Pengujian API
Ada banyak alat yang tersedia untuk pengujian API, mulai dari aplikasi desktop berfitur lengkap hingga alat berbasis browser ringan. Postman adalah opsi paling terkenal, menawarkan serangkaian fitur komprehensif. Insomnia adalah klien desktop populer lainnya dengan antarmuka bersih dan dukungan baik untuk GraphQL. cURL adalah alat command-line serbaguna untuk permintaan HTTP โ tersedia di hampir setiap sistem.
Untuk pengujian cepat tanpa instalasi, Penguji API DevBox adalah alternatif gratis yang sangat baik. Ini berjalan sepenuhnya di browser Anda, mendukung semua metode HTTP, header kustom, body permintaan, dan menyediakan respons terperinci dengan waktu respons.
Praktik Terbaik untuk Pengujian API
- Gunakan lingkungan pengujian yang konsisten: Uji terhadap server pengujian atau staging khusus, bukan produksi. Ini memungkinkan Anda menguji operasi destruktif seperti DELETE dengan aman.
- Otomatiskan pengujian berulang: Jika Anda mengirim permintaan yang sama berulang kali, buat test suite. Banyak alat mendukung permintaan tersimpan dan koleksi pengujian.
- Uji dengan data realistis: Gunakan data yang mencerminkan pola penggunaan dunia nyata. Kasus edge dengan data tidak realistis mungkin lulus pengujian tetapi gagal di produksi.
- Verifikasi waktu respons: Performa API penting. Jika permintaan GET sederhana membutuhkan 5 detik, kemungkinan ada masalah performa yang perlu diselidiki.
- Periksa header keamanan: Verifikasi bahwa API mengembalikan header keamanan yang sesuai seperti header CORS, header rate limiting, dan kebijakan keamanan konten.
- Dokumentasikan temuan Anda: Simpan catatan tentang bug, perilaku tak terduga, dan penyimpangan dari dokumentasi. Ini membantu saat berkomunikasi dengan tim pengembangan API.
Kesimpulan
Menguji REST API adalah keterampilan yang meningkat dengan latihan. Mulailah dengan permintaan GET sederhana dan secara bertahap tingkatkan ke skenario kompleks yang melibatkan autentikasi, unggahan file, dan penanganan kesalahan. Semakin banyak Anda berlatih, semakin intuitif prosesnya menjadi.
Siap untuk mulai menguji? Coba Penguji API DevBox gratis untuk mengirim permintaan pertama Anda sekarang. Tidak perlu instalasi โ cukup buka browser Anda dan mulai menjelajahi.