Pengujian adalah salah satu aspek penting dalam pengembangan RESTful API untuk memastikan setiap endpoint berfungsi sesuai harapan. Salah satu alat yang populer digunakan untuk pengujian API adalah Postman, yang menawarkan antarmuka intuitif serta fitur otomatisasi yang memudahkan pengujian berulang. Dalam artikel ini, kita akan membahas cara membuat pengujian untuk RESTful API menggunakan Postman dengan pendekatan Test Driven Development (TDD). Metode ini memungkinkan kita menulis tes terlebih dahulu sebelum mengimplementasikan kode, sehingga memastikan setiap fitur API bekerja dengan baik sejak awal. Dengan memahami langkah-langkah ini, diharapkan dapat meningkatkan kualitas API sekaligus menghemat waktu dalam proses debugging.
Daftar Isi
Apa itu TDD?
Mengutip dari browserstack.com, Test Driven Development (TDD) adalah praktik pengembangan perangkat lunak yang berfokus pada pembuatan unit pengujian sebelum mengerjakan kode yang sebenarnya. Merupakan pendekatan berulang yang menggabungkan pemrograman, pembuatan test, dan refactoring.
Berdasarkan pada pengertian di atas, maka pembuatan kode atau proses ngoding akan disetir oleh tes yang sudah dibuat untuk memastikan bahwa hasil sesuai dengan yang diharapkan pada skenario pengujian.
Membuat Pengujian untuk RESTful API di Postman
Sebelum melangkah ke tahapan pembuatan skenario dan script pengujian, kita perlu menyiapkan dulu aplikasi Postman tentunya. Aplikasi tersebut dapat teman-teman unduh secara gratis di https://www.postman.com/downloads/.
1. Kenapa Menggunakan Postman?
Mungkin, terlintas dalam pikiran teman-teman kenapa saya menggunakan Postman daripada menggunakan framework seperti PHPUnit atau Jasmine. Alasannya pertama itu sederhana, karena memiliki tampilan pengguna yang interaktif, tinggal klik-klik-klik selesai! Alasan kedua, pengujian hanya berfokus pada hasil yang diharapkan seperti apakah response memiliki format status kode HTTP yang sesuai, dalam bentuk JSON, dan sebagainya, jadi tidak menguji sampai ke struktur kode. Alasan ketiga, aplikasi Postman telah menyediakan fitur Collection Runner untuk menjalankah semua test sekaligus dan dapat dilakukan secara berulang, Test Scripts yang ditulis dalam bahasa JavaScript, dan fitur Environments untuk menyimpan nilai ke dalam variabel.
2. Membuat Skenario Pengujian
Contoh pengujian yang akan saya buat adalah pengujian untuk autentikasi pengguna atau login yang menggunakan JWT. Ada beberapa skenario utama yang terpikirkan oleh saya, yaitu saat pengguna login dengan email dan password yang benar dan saat pengguna login dengan email atau password yang salah.
Sebelum lanjut, siapkan terlebih dahulu variabel baseURL
yang digunakan untuk menyimpan alamat API yang berjalan dan accessToken
untuk menyimpan nilai akses token yang didapat dari respons API. Silahkan buat pada menu Environments di aplikasi Postman.
Skenario Login dengan Email dan Password yang Benar
Klien akan mengirimkan permintaan dengan method POST ke endpoint /authentications
dengan mengirimkan payload dalam body yang berisi email dan password yang benar dengan tipe data string.
Kemudian, tentukanlah spesifikasi pengujian untuk menentukan hasil seperti apa yang diharapkan dari skenario ini. Kurang lebih seperti berikut:
- Respons harus memiliki status kode HTTP bernilai 201.
- Header respons harus memiliki Content-Type bernilai application/json.
- Body respons harus berjenis object dan memiliki properti status dan data.
- Properti data pada respons body harus memiliki access_token dan nilainya tidak kosong.
Skenario Login dengan Email atau Password yang Salah
Skenario yang salah juga perlulah dibuat untuk memastikan bahwa klien tetap menerima respons yang berisi data untuk diolah menjadi informasi yang berguna saat terjadi kesalahan, sehingga pengguna akhir dapat memahami apa yang terjadi.
Berikut adalah spesifikasi pengujian untuk respons yang diharapkan saat data yang dikirim salah:
- Respons harus memiliki status kode HTTP bernilai 400.
- Header respons harus memiliki Content-Type bernilai application/json.
- Body respons harus berjenis object dan memiliki properti status dan message.
- Properti message pada respons body harus bertipe string dan tidak kosong.
3. Membuat Script Pengujian
Setelah skenarion beserta spesifikasi pengujiannya dibuat, sekarang saatnya mengimplementasikannya ke dalam script atau kode. Penulisan script pengujian pada aplikasi Postman dapat dilakukan pada tab menu Scripts, kemudian akan terdapat dua pilihan lagi, pre-request untuk jenis pengujian yang dilakukan sebelum permintaan dikirimkan, dan post-response adalah pengujian saat API memberikan respons. Pada contoh ini saya membuat pengujian untuk post-response, karena memastikan hasil sesuai dengan yang diharapkan.
Script pengujian yang digunakan dalam Postman ditulis menggunakan bahasa JavaScript ES6, tapi tentu saja kita tidak perlu menyusun logikanya dari awal, untungnya Postman telah menyediakan banyak fungsi yang dapat digunakan dengan mudah. Apabila kamu tertarik untuk mempelajari script pengujian di Postman silahkan kunjungi https://learning.postman.com/docs/tests-and-scripts/write-scripts/intro-to-scripts/.
Script Pengujian Login dengan Email dan Password yang Benar
Berikut adalah script pengujian untuk menguji saat login berhasil dilakukan yang dibuat berdasarkan spesifikasi pengujiannya.
pm.test('Respons harus memiliki status kode HTTP 201', () => {
pm.response.to.have.status(201);
});
pm.test('Header respons harus memiliki Content-Type bernilai application/json', () => {
pm.expect(pm.response.headers.get('Content-Type')).to.equals('application/json');
});
pm.test('Body respons harus berjenis object dan memiliki properti status dan data', () => {
const response = pm.response.json();
pm.expect(response).to.be.an('object');
pm.expect(response).to.have.property('status');
pm.expect(response).to.have.property('data');
});
pm.test('Properti data pada respons body harus memiliki access_token dan nilainya tidak kosong', () => {
const { data } = pm.response.json();
pm.expect(data).to.have.property('access_token');
pm.expect(data.access_token).to.not.equals('');
// menyimpan ke variabel accessToken di Environments
pm.environment.set('accessToken', data.access_token);
});
Script Pengujian Login dengan Email atau Password yang Salah
Berikut adalah script untuk pengujian saat terdapat data yang salah:
pm.test('Respons harus memiliki status kode HTTP 400', () => {
pm.response.to.have.status(400);
});
pm.test('Header respons harus memiliki Content-Type bernilai application/json', () => {
pm.expect(pm.response.headers.get('Content-Type')).to.equals('application/json');
});
pm.test('Body respons harus berjenis object dan memiliki properti status dan message', () => {
const response = pm.response.json();
pm.expect(response).to.be.an('object');
pm.expect(response).to.have.property('status');
pm.expect(response).to.have.property('message');
});
pm.test('Properti message pada respons body harus bertipe string dan tidak kosong', () => {
const response = pm.response.json();
pm.expect(response.message).to.not.equals('');
});
4. Menjalankan Pengujian
Setelah penyusunan skenario dan pembuatan script pengujian berhasil dilakukan, langkah terakhir tentu saja menjalankan pengujian. Pada tahap ini silahkan ngoding untuk membuat API untuk autentikasi dengan menggunakan JWT atau jika ingin sama seperti saya, maka ikuti tutorial yang telah saya sediakan untuk membuat autentikasi menggunakan JWT di Laravel yang diterapkan untuk RESTful API.
Ingat, program yang dibuat harus sesuai dengan spesifikasi pengujian, jangan sampai mengubah skenario tes agar sesuai dengan hasil program, kan prinsip dasar dari TDD adalah pengkodean disetir oleh pengujian. Jadi, jika hasil tesnya tidak sesuai maka perbaikilah kodingannya. Kecuali kalau terdapat kesalahan dalam penulisan syntax atau logika dalam script pengujiannya.
Jalankan pengujian dengan menggunakan opsi Run Collection untuk menjalankan semua jenis permintaan yang ada pada koleksi atau Run Folder jika untuk folder tertentu saja yang pada koleksi.
Berikut adalah hasil tes milik saya yang menggunakan skenario dan script di atas, apabila teman-teman menggunakan proyek API yang sama seperti saya, seharusnya akan ada 1 pengujian yang gagal karena respons status kode HTTP tidak sesuai dengan spesifikasi yang ditentukan. Silahkan perbaiki kode programnya dan jalankan ulang hingga semua tes terpenuhi.
Kesimpulan
Kesimpulannya, pengujian RESTful API menggunakan Postman dengan pendekatan TDD adalah langkah penting untuk memastikan kualitas dan keandalan API yang dikembangkan. Dengan menulis skenario dan script pengujian terlebih dahulu, kita dapat memverifikasi setiap fitur API sesuai spesifikasi sebelum implementasi kode. Postman mempermudah proses ini melalui antarmuka intuitif dan fitur seperti Collection Runner serta dukungan untuk penulisan script pengujian dalam bahasa JavaScript. Menggunakan TDD tidak hanya meningkatkan akurasi pengujian, tetapi juga membantu dalam proses debugging dan memastikan API siap digunakan sesuai standar yang ditentukan.
Terima kasih telah membaca sampai akhir, pantau terus artikel pemrograman di kodefiksi.com, salam pemula dan happy coding!