Materi 5
Materi 5
Postman
Postman merupakan tools yang sangat cocok untuk menguji sebuah API karena memiliki
fungsi yang relatif lengkap sebagai API caller dalam melakukan HTTP Request. Bahkan
untuk pengembangan API yang sudah kompleks, pengujian Postman dapat diintegrasikan
ke dalam alur CI/CD.
Postman merupakan tools yang sangat powerful dan mudah untuk digunakan. Ia memiliki
graphical user interface (GUI) sehingga dapat digunakan dan dipahami oleh kalangan
pemula sekalipun. Sebab, kita tak lagi berhadapan dengan kode yang rumit hanya
untuk membuat HTTP request seperti cURL.
Postman tersedia secara gratis dan dapat berjalan pada sistem operasi Windows,
Linux, maupun macOS.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------
Memasang Postman
Sebelum menguji notes API yang sudah kita buat menggunakan Postman, tentu kita
perlu memasang Postman pada komputer kita terlebih dahulu. Silakan ikuti instruksi
di bawah ini, sesuai dengan sistem operasi yang Anda gunakan yah.
Catatan:
Agar dapat mengikuti materi dengan baik, kami sarankan Anda untuk mengunduh Postman
versi 9 stabil. Tutorial dan link unduh di bawah ini kami sudah sesuaikan dengan
versi tersebut.
Untuk memasang Postman pada komputer Anda, silakan kunjungi halaman unduh Postman
dan tunggu hingga proses unduh selesai.
Setelah selesai, buka berkas instalasi Postman untuk memulai proses instalasi.
Tunggu hingga proses instalasi selesai. Kemudian aplikasi Postman akan terbuka
dengan sendirinya.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Sebelum menggunakannya, Anda ditawari untuk membuat akun Postman. Pendaftaran ini
bersifat opsional, Anda bisa mendaftar ataupun melewatinya dengan klik Skip and go
to the app.
Selamat datang di Postman! Untuk membuat HTTP Request baru, Anda bisa klik tombol
“+” (New Tab).
Di halaman inilah kita akan melakukan panggilan ke API. Sebelum itu, mari kita
breakdown beberapa komponen yang penting untuk Anda ketahui saat ini.
Komponen UI Postman
Di bagian atas aplikasi Postman, Anda bisa melihat komponen seperti gambar di atas.
Komponen ini merupakan tab dari halaman request. Seperti browser, ketika Anda
hendak membuka halaman browser baru, Anda bisa membuka tab baru. Begitu juga dengan
Postman, bila Anda ingin membuat request baru, Anda bisa membuka tab baru.
Di sini kita menentukan method dan path dari request yang akan dilakukan. Tombol
Send yang tampak, digunakan untuk mengirim permintaan pada path dan method yang
sudah ditentukan.
Postman mendukung seluruh method yang ada di HTTP. Secara mudah Anda bisa mengubah
method yang digunakan dengan menekan opsi dropdown yang tersedia.
Komponen ini digunakan untuk menyisipkan data dalam bentuk params URL,
authorization, Headers, Body, dan lainnya. Anda dapat secara mudah menyisipkan data
pada request melalui komponen ini.
Ketika Anda mengirimkan request, response body akan tampak di sini. Response dari
server akan ditampilkan secara terformat sesuai dengan Content-Type yang diberikan
server. Jika responsnya HTML, ia akan di render layaknya pada browser. Jika JSON,
ia akan diformat dengan struktur JSON.
Sebenarnya masih banyak komponen lain yang tidak kita bahas. Postman memiliki
fungsionalitas yang cukup kompleks untuk sebuah API caller. Agar Anda tidak pusing
memikirkan kompleksnya Postman, kita tidak akan menggunakan fitur yang rumit dulu,
melainkan mari fokus saja ke fungsi utama sebagai API caller.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Jangan dulu tekan tombol Send ya. Kita perlu memberikan data catatan yang dikirim
melalui body request.
Lalu pilih opsi raw, kemudian ganti format text menjadi JSON, dan tuliskan struktur
JSON berikut:
{
"title": "Catatan A",
"tags": ["Android", "Web"],
"body": "Isi dari catatan A"
}
Sehingga halaman tampak seperti ini.
Sekarang silakan klik tombol Send. Anda akan melihat respons dari server.
Pastikan ketika melakukan permintaan server lokal Anda dalam keadaan berjalan yah.
Bila terhenti, silakan jalankan kembali dengan perintah npm run start-dev pada
Terminal proyek.
Secara default Postman akan memformat respons agar lebih mudah membacanya. Anda
bisa melihat respons asli yang belum terformat dengan memilih tab Raw.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Kita tidak perlu melampirkan data apa pun pada permintaan kali ini. Jadi Anda bisa
langsung klik tombol Send.
Tada! Anda bisa melihat responnya. Karena kita baru menambahkan satu buat catatan
saja, jadi baru ada satu yang muncul.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Kita tidak perlu melampirkan data apa pun pada permintaan kali ini. Jadi yuk, kirim
permintaan dengan klik tombol Send. Anda akan mendapatkan respons catatan sesuai
dengan id yang Anda minta.
Anda juga bisa menguji untuk kasus yang menghasilkan respons gagal. Contohnya
dengan melakukan permintaan dengan id yang tidak valid.
Kirim permintaannya, lalu pastikan respons gagal yang didapat sesuai dengan
ekspektasi Anda.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Mengubah Catatan
Berikutnya kita coba untuk mengubah catatan yang sudah disimpan melalui Postman.
Seperti biasa, silakan buka halaman request baru.
Untuk mengubah catatan, kita perlu melampirkan data catatan terbaru pada body
request. Jadi yuk lampirkan struktur JSON berikut pada Body Request.
{
"title": "Catatan A Revisi",
"tags": ["Android", "Web"],
"body": "Isi dari catatan A revisi"
}
Permintaan siap dikirim. Silakan klik Send untuk mengirim dan lihat respons yang
didapat.
Catatan berhasil diubah! Untuk memastikan data catatan berubah, silakan lakukan
permintaan pada tab permintaan sebelumnya (mendapatkan catatan secara spesifik) dan
pastikan id catatan yang diminta sesuai.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Menghapus Catatan
Terakhir, kita coba hapus catatan melalui Postman. Yuk kita buka kembali halaman
permintaan baru.
Untuk menghapus catatan, kita tidak memerlukan data apa pun yang dilampirkan di
body request. So it's all set! Silakan kirim permintaan dengan klik tombol Send.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Materi kali ini, kita akan mencoba menguji API secara otomatis. Namun sebelum itu,
sebaiknya Anda mengenal dulu fitur Collection dan Environment yang ada di Postman
karena keduanya akan digunakan dalam pengujian.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Postman Collection
Postman collection merupakan tempat menyimpan kumpulan request. Kita bisa
menganggap collection adalah sebuah folder yang menyimpan berkas, namun berkas itu
adalah request.
Setiap request yang Anda kirim di Postman sebenarnya akan tampak pada tab History
di sidebar.
Dalam penggunaan yang ringan, memilih dan menggunakan kembali request melalui
History merupakan pengalaman yang cukup nyaman. Namun bila Anda banyak melakukan
request, history request akan menumpuk tidak karuan. Dengan begitu, Anda akan
membutuhkan waktu yang lama untuk memilah dan memilih request yang ingin digunakan
kembali.
Dengan adanya collection, request bisa Anda kelompokkan sehingga lebih mudah untuk
diakses. Berikut adalah contoh collection Notes API Test.
Melalui collection, Anda bisa menjalankan seluruh request yang ada di dalamnya
sekaligus dengan urutan yang dapat Anda sesuaikan.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Postman Environment
Environment merupakan kumpulan dari variabel yang dapat digunakan pada request di
Postman. Ketika melakukan pengujian otomatis, terkadang kita perlu menyimpan nilai
pada sebuah variabel. Contohnya ketika melakukan request menambahkan catatan, kita
akan mendapatkan id catatan tersebut dari server. Id tersebut perlu disimpan pada
variabel agar dapat digunakan oleh request selanjutnya.
Variabel tak hanya digunakan untuk kasus tersebut saja, melainkan dapat juga untuk
menyimpan nilai token, auth-key, atau nilai lainnya yang dipakai selama proses uji.
{{noteId}}
Notasi tersebut dapat digunakan di request URL, parameters, headers, dan body data.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Collection baru akan terbentuk dengan nama “New Collection''. Silakan ubah nama
dengan cara klik kanan -> Rename.
Great! Jangan dulu tambahkan request yah, kita buat environment dulu dan
menggunakannya pada collection.
Ubah nama “New Environment” dengan “Notes API Test”, lalu tambahkan variabel baru
bernama noteId. Biarkan initial value dan current value tetap kosong.
Nice! Collection dan environment selesai kita siapkan. Selanjutnya mulai buat
request dan mengujinya di dalam collection.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Silakan buka tab Collections. Klik Add a request untuk menambahkan request.
Isi request URL dengan nilai localhost:5000/notes dan gunakan method POST.
Lalu, tambahkan data catatan yang akan ditambahkan pada Body. Silakan klik tab
Body, pilih opsi raw, kemudian ganti format text menjadi JSON, dan tuliskan
struktur JSON berikut:
{
"title": "Catatan A",
"tags": ["Android", "Web"],
"body": "Isi dari catatan A"
}
Eits! Jangan kirim request dulu ya. Kita akan tuliskan skenario testing untuk
request ini terlebih dahulu. Silakan pilih tab Tests..
Postman memiliki global object pm. Untuk membuat testing, gunakan method pm.test().
Method tersebut menerima dua parameter, yang pertama nama test dan yang kedua
adalah spec function. Method test() mirip seperti method it() pada Jest (Anda sudah
mempelajarinya di kelas Belajar Dasar Pemrograman JavaScript).
Buat testing baru dengan nama ‘response status code should have 201 values’.
});
Bila nanti respons status tidak memiliki nilai 201, maka tesnya akan gagal. Satu
testing telah dituliskan.
Buat test dengan nama ‘response Content-Type header should have application/json
value’.
});
Kemudian uji nilai Content-Type pada response header dengan nilai application/json.
});
Kemudian dapatkan nilai response body dalam bentuk JSON dengan cara:
Done!
Lanjut. Silakan buat testing baru bernama ‘response body should have the correct
property and value.’
pm.test('response body should have the correct property and value', () => {
});
Dapatkan response body dalam bentuk JSON dan uji kesesuaian properti serta nilai
atau tipe datanya.
Done!
Lanjut ke kriteria terakhir. Kita akan memastikan bahwa nilai data yang dibawa oleh
respons memiliki noteId dan nilainya tidaklah kosong.
Buat test baru dengan nama ‘response body data should have noteId property and not
equal to empty’.
pm.test('response body data should have noteId property and not equal to empty', ()
=> {
});
Di dalamnya, dapatkan nilai objek data dari response yang sudah diubah dengan
bentuk JSON.
pm.test('response body data should have noteId property and not equal to empty', ()
=> {
const responseJson = pm.response.json();
const { data } = responseJson;
});
Kemudian uji data bahwa ia harus memiliki properti noteId dan nilainya tidak
kosong.
pm.test('response body data should have noteId property and not equal to empty', ()
=> {
const responseJson = pm.response.json();
const { data } = responseJson;
pm.expect(data).to.ownProperty('noteId');
pm.expect(data.noteId).to.not.equals('');
});
Seperti yang kita ketahui, ketika permintaan menambahkan catatan baru, respons akan
mengembalikan noteId dari catatan baru tersebut. Simpanlah nilainya pada
environment variabel noteId agar nilainya dapat digunakan pada skenario pengujian
selanjutnya.
Untuk menyimpan nilai pada variabel environment, kita bisa gunakan method
pm.environment.set(). Method tersebut menerima dua parameter, yakni nama variabel
dan nilai yang akan ditetapkan padanya.
pm.test('response body data should have noteId property and not equal to empty', ()
=> {
const responseJson = pm.response.json();
const { data } = responseJson;
pm.expect(data).to.ownProperty('noteId');
pm.expect(data.noteId).to.not.equals('');
pm.environment.set('noteId', data.noteId);
});
Wah! Ada satu pengujian yang gagal. Pesan eror mengatakan bahwa nilai Content-Type
bukanlah “application/json” (expectation) namun “application/json; charset=utf-8”
(actual).
Nilai actual sebenarnya adalah nilai yang kita ekspektasikan, namun karena kita
salah menetapkan nilai ekspektasi, maka pengujian gagal. Dengan begitu, Anda jadi
tahu kan bahwa pengujian otomatis ini sangat ketat, ia tidak akan mentoleransi bila
terjadi perbedaan sedikit pun antara nilai ekspektasi dan actual.
Untuk memperbaiki pengujian tersebut, kita perlu mengubah nilai ekspektasi menjadi
“application/json; charset=utf-8”.
Woa! Sekarang seluruh hasil pengujian berhasil. Dengan begitu respons server dapat
dipastikan sesuai dengan yang Anda inginkan atau ekspektasikan.
Pastikan juga variabel noteId pada environment sudah terisi nilainya yah. Karena
variabel ini akan kita gunakan pada skenario testing selanjutnya.
Sebelum melanjutkan ke skenario berikutnya, jangan lupa untuk simpan request ini
dengan cara klik tombol Save.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Klik kanan pada Notes API Test collection dan pilih Add Request.
Isi request URL dengan localhost:5000/notes dan biarkan method tetap GET.
Kita tidak perlu melampirkan data apa pun pada request ini. Jadi, mari langsung
tuliskan kode pengujian pada tab Test.
Yuk mulai tuliskan testing pertama untuk menguji apakah response code bernilai 200.
Buat testing baru dengan nama “response status code should have 200 value”.
});
Done!
Lanjut, buat testing baru dengan nama ‘response Content-Type header should have
application/json value’.
});
Done!
Lanjut, buat testing baru dengan nama ‘response body should an object’.
});
Di dalamnya kita uji body respons haruslah sebuah object.
Pertama, kita dapatkan dulu nilai body respons dalam bentuk JSON.
Done!
Lanjut. Silakan buat testing baru bernama ‘response body should have the correct
property and value’.
pm.test('response body should have the correct property and value', () => {
});
Di dalamnya, uji nilai response body yang merupakan object bahwa ia harus memiliki
properti dan nilai yang sesuai. Untuk melakukannya, tulis kode berikut:
pm.test('response body should have the correct property and value', () => {
const responseJson = pm.response.json();
pm.expect(responseJson).to.have.ownProperty('status');
pm.expect(responseJson.status).to.equals('success');
pm.expect(responseJson).to.have.ownProperty('data');
pm.expect(responseJson.data).to.be.an('object');
});
Done!
Lanjut ke pengujian terakhir, kita akan uji objek data yang ada di dalam response
body. Objek data harus memiliki array notes yang setidaknya memiliki 1 item note di
dalamnya.
Buat test dengan nama ‘response body data should have a notes array and contain at
least 1 item’.
pm.test('response body data should have a notes array and contain at least 1 item',
() => {
});
Di dalamnya, dapatkan objek data dari response body dalam bentuk JSON.
pm.test('response body data should have a notes array and contain at least 1 item',
() => {
const responseJson = pm.response.json();
const { data } = responseJson;
});
Kemudian uji nilai objek data bahwa ia harus memiliki properti notes yang merupakan
array dan minimal memiliki 1 item di dalamnya.
pm.test('response body data should have a notes array and contain at least 1 item',
() => {
const responseJson = pm.response.json();
const { data } = responseJson;
pm.expect(data).to.have.ownProperty('notes');
pm.expect(data.notes).to.be.an('array');
pm.expect(data.notes).lengthOf.at.least(1);
});
Sekarang kita kirim permintaan dengan klik tombol Send dan lihat hasil
pengujiannya.
Simpan request ini dengan klik tombol Save dan kita lanjutkan ke skenario
berikutnya.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Seperti yang sudah Anda ketahui, {{noteId}} merupakan nilai yang diambil dari
environment variabel. Di mana variabel tersebut terisi nilainya ketika kita
melakukan permintaan memasukkan catatan baru.
Sekarang yuk kita mulai tuliskan saja pengujian pada tab Tests.
Seperti biasa, pertama kita buat test untuk menguji status code dari respons dengan
nama “response status code should have 200 value”.
});
Uji status code dengan nilai 200.
Done!
Lanjut, buat testing baru dengan nama ‘response Content-Type header should have
application/json value’.
});
Seperti biasa, di dalamnya kita uji response header Content-Type dengan nilai
“application/json; charset=utf-8”.
Lanjut buat tes baru dengan nama “response body should be an object”.
});
Done!
Lanjut kita uji objek response body-nya, ia harus memiliki properti yang sesuai.
Buat test baru dengan nama “response body should have the correct property and
value”.
pm.test('response body should have the correct property and value', () => {
});
pm.test('response body should have the correct property and value', () => {
const responseJson = pm.response.json();
});
Lalu uji responseJson, ia harus memiliki properti status dengan nilai success dan
data yang merupakan object.
pm.test('response body should have the correct property and value', () => {
const responseJson = pm.response.json();
pm.expect(responseJson).to.have.ownProperty('status');
pm.expect(responseJson.status).to.equals('success');
pm.expect(responseJson).to.have.ownProperty('data');
pm.expect(responseJson.data).to.be.an('object');
});
Done!
Lanjut uji object data dari response body bahwa ia harus memiliki properti note
yang merupakan sebuah objek.
Buat test baru dengan nama “'response body data should contain note object”.
});
Uji objek data bahwa ia harus memiliki properti note yang merupakan sebuah objek.
pm.expect(data).to.have.ownProperty('note');
pm.expect(data.note).to.be.an('object');
});
Done!
Lanjut ke pengujian terakhir. Kita akan uji objek note, ia harus memiliki properti
id, title, body, dan tags. Properti-properti tersebut harus memiliki nilai yang
sesuai dengan nilai yang dimasukan pada skenario pertama.
Buat test baru dengan nama “note object should contain correct value for id, title,
body, and tags property”.
pm.test('note object should contain correct value for id, title, body, and tags
property', () => {
});
pm.test('note object should contain correct value for id, title, body, and tags
property', () => {
const responseJson = pm.response.json();
const { data: { note } } = responseJson;
});
Sebelum menguji properti dan nilai di dalam objek note, tentukan dulu nilai
ekspektasi dari id, title, body, dan tags. Nilai id bisa Anda dapatkan dari
variabel environment melalui method pm.environment.get(‘noteId’), sedangkan yang
lain Anda bisa lihat nilainya pada request Adding Notes yang dikirimkan melalui
body.
pm.test('note object should contain correct value for id, title, body, and tags
property', () => {
const responseJson = pm.response.json();
const { data: { note } } = responseJson;
Setelah menentukan nilai ekspektasi, barulah kita uji objek note bahwa ia harus
memiliki properti dan nilai yang sesuai dengan nilai ekspektasi.
pm.test('note object should contain correct value for id, title, body, and tags
property', () => {
const responseJson = pm.response.json();
const { data: { note } } = responseJson;
const expectedId = pm.environment.get('noteId');
const expectedTitle = 'Catatan A';
const expectedTags = ['Android', 'Web'];
const expectedBody = 'Isi dari catatan A';
pm.expect(note).to.have.ownProperty('id');
pm.expect(note.id).to.equals(expectedId);
pm.expect(note).to.have.ownProperty('title');
pm.expect(note.title).to.equals(expectedTitle);
pm.expect(note).to.have.ownProperty('tags');
pm.expect(note.tags).to.equals(expectedTags);
pm.expect(note).to.have.ownProperty('body');
pm.expect(note.body).to.equals(expectedBody);
});
Done!
Yuk kita kirim permintaan. Silakan klik tombol Send, kemudian lihat hasil
pengujiannya.
Apa yang salah ya? Bila dilihat sih nilai expected dan actual sudah sama persis.
Lalu apa yang menyebabkan ia eror?
Ketahuilah bahwa untuk menguji nilai array dan objek, kita tidak bisa menggunakan
method equals() seperti yang biasa kita gunakan. Itu karena array dan objek tidak
bisa disamakan secara identik walaupun ia memiliki item atau properti dan nilai
yang sama persis. Anda bisa membuktikan ini dengan menjalankan kode berikut pada
node REPL:
["Harry", "Potter"] === ["Harry", "Potter"]
// -> false
Caranya adalah dengan melakukan deep equals. Deep equals paling sederhana dapat
dilakukan menggunakan bantuan JSON.stringify. Lebih jelasnya, kedua objek atau
array yang akan diuji diubah menjadi JSON string, kemudian kedua JSON string
tersebutlah yang akan diuji nilainya.
Cukup mudah ‘kan? Bahkan, akan lebih mudah lagi untuk melakukan deep equal pada
pengujian di Postman karena kita tidak perlu repot mengubah nilai ekspektasi dan
actual ke JSON string. Cukup ganti penggunaan method equals() ke eql().
pm.test('note object should contain correct value for id, title, body, and tags
property', () => {
const responseJson = pm.response.json();
const { data: { note } } = responseJson;
pm.expect(note).to.have.ownProperty('id');
pm.expect(note.id).to.equals(expectedId);
pm.expect(note).to.have.ownProperty('title');
pm.expect(note.title).to.equals(expectedTitle);
pm.expect(note).to.have.ownProperty('tags');
pm.expect(note.tags).to.eql(expectedTags);
pm.expect(note).to.have.ownProperty('body');
pm.expect(note.body).to.equals(expectedBody);
});
Voila! Sekarang seluruh pengujian berhasil dijalankan. Jangan lupa simpan request
kali ini dengan menekan tombol Save sebelum melanjutkan ke skenario selanjutnya.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Pada request URL, isikan nilai localhost:5000/notes/{{noteId}} dan ubah method yang
digunakan menjadi PUT.
Sebelum menuliskan tes, sisipkan dulu data catatan terbaru pada body request.
Silakan pilih tab Body, kemudian pilih raw, dan ubah tipenya menjadi JSON.
{
"title": "Catatan A Revised",
"tags": ["Android", "Web"],
"body": "Isi dari Catatan A Revised"
}
Data sudah siap! Lanjut pilih tab Tests untuk mulai menuliskan pengujian.
Seperti biasa, pengujian pertama kita uji status code dari respons. Silakan buat
test dengan nama “response status code should have 200 value”.
});
Done!
Lanjut kita uji nilai Content-Type yang ada pada response. Silakan buat test baru
dengan nama “‘response Content-Type header should have application/json value”.
});
Seperti biasa, di dalamnya kita uji response header Content-Type dengan nilai
“application/json; charset=utf-8”.
Done!
Selanjutnya kita uji body response bahwa ia harus merupakan sebuah objek. Silakan
buat test baru dengan nama “‘response body should be an object”.
});
Done!
Lanjut, uji nilai objek body response-nya. Buat test baru dengan nama “‘response
body should have correct properti and value”.
});
Kemudian uji responseJson, ia harus memiliki properti dan nilai yang sesuai.
pm.expect(responseJson).to.have.ownProperty('status');
pm.expect(responseJson.status).to.equals('success');
pm.expect(responseJson).to.have.ownProperty('message');
pm.expect(responseJson.message).to.equals('Catatan berhasil diperbarui');
});
Done!
Karena kita sudah menguji dan memastikan bahwa permintaan tersebut berjalan dengan
baik melalui skenario ke-3, sekarang kita bisa percaya diri dalam menggunakannya
untuk memastikan data catatan pada skenario ini benar-benar telah diperbaharui.
Yuk buat test baru dengan nama “when request the updated note”.
});
Anda bisa lihat kode request di atas, method sendRequest() menerima dua parameter,
yakni request URL dan fungsi response callback. Response callback akan terpanggil
ketika permintaan sudah ditanggapi oleh response ataupun mengalami eror.
Eror dapat terjadi karena berbagai hal, salah satunya tidak adanya internet. Ketika
eror, parameter error yang berada di response callback akan terisi nilainya. Namun
bila permintaan berhasil dilakukan dan mendapatkan response dari server, maka
parameter response-lah yang terisi nilainya.
Pola ini disebut dengan error first, di mana callback function mendahulukan
parameter error dibandingkan dengan ketika operasi berhasil dijalankan. Node.js
banyak menerapkan pola ini pada sebuah fungsi callback.
Yuk kita lanjutkan. Di dalam fungsi callback, kita buat test baru dengan nama “then
the updated note should contain the latest data” untuk menguji nilai dari body
response. Namun ingat, lakukan hal tersebut bila nilai error tidak terisi saja.
});
}
});
});
Selanjutnya di dalam test tersebut, kita dapatkan nilai objek note pada data
melalui response body dalam bentuk JSON.
Sebelum menguji properti dan nilai dari objek note, tentukan nilai ekspektasi dari
title, tags, dan body. Bila Anda lupa, Anda bisa lihat pada body request Update
Note.
Nice! Sekarang kita uji nilai dari properti title, tags, dan body yang dimiliki
objek note dengan nilai ekspektasi.
pm.expect(note.title).to.equals(expectedTitle);
pm.expect(note.tags).to.eql(expectedTags);
pm.expect(note.body).to.equals(expectedBody);
});
}
});
});
Skenario 4 selesai! Yuk kita coba kirim permintaan dengan klik tombol Send.
Simpan request dengan menekan tombol Save dan ayo kita lanjutkan ke skenario
terakhir.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Kita tidak perlu melampirkan data apa pun pada body request. Jadi langsung saja
menuju tab Tests untuk mulai menuliskan pengujian.
Tak bosan-bosan, pertama kita buat pengujian untuk menguji status code dengan nilai
200. Silakan buat test dengan nama “response status code should have 200 value”.
});
Done!
Lanjut buat tes dengan nama “‘response Content-Type header should have
application/json value”.
});
Seperti biasa, di dalamnya kita uji response header Content-Type dengan nilai
“application/json; charset=utf-8”.
Selanjutnya kita uji body response bahwa ia haruslah objek. Silakan buat test baru
dengan nama “‘response body should be an object”.
pm.test('response body should be an object', () => {
});
Done!
Lanjut uji nilai objek body response-nya. Buat test baru dengan nama “‘response
body should have correct properti and value”.
});
Kemudian, uji responseJson bahwa ia harus memiliki properti dan nilai yang sesuai.
pm.expect(responseJson).to.have.ownProperty('status');
pm.expect(responseJson.status).to.equals('success');
pm.expect(responseJson).to.have.ownProperty('message');
pm.expect(responseJson.message).to.equals('Catatan berhasil dihapus');
});
Done!
Terakhir, kita akan melakukan hal yang sama seperti skenario sebelumnya. Untuk
memastikan catatan benar-benar dihapus oleh server, kita akan melakukan permintaan
kepada catatan tersebut. Server harus mengembalikan response dengan status code 404
dan objek body yang relevan dengan status tersebut.
Yuk kita buat test baru dengan nama “when request the deleted note”.
});
Di dalam fungsi callback response, bila parameter error tidak memiliki nilai,
silakan buat test dengan nama “the deleted note should be not found”.
Di dalam test tersebut, uji status code response dengan nilai 404.
Anda bisa uji juga nilai body pada response. Pastikan ia memiliki properti dan
nilai yang relevan dengan status code-nya.
Done!
Skenario pengujian terakhir selesai kita tuliskan! Silakan kirim permintaan dengan
klik tombol Send. Lihat hasil pengujiannya.
Anda bisa lihat hasil permintaan serta pengujiannya seketika. Praktis bukan?
Catatan
Mulai dari Maret 2023, pengguna gratis Postman versi 10.x.x memiliki batasan dalam
menjalankan Postman Collection melalui UI sebanyak 25 kali dalam sebulan. Jika Anda
sudah mencapai batasan tersebut, tetapi masih perlu menjalankan collection,
terdapat dua solusi yang bisa Anda ambil.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
----------------
Dengan Newman, kita bisa menjalankan Postman Collection tanpa perlu berinteraksi
dengan aplikasi Postman. Namun, sebelum kita bisa menggunakan Newman, kita perlu
mengekspor Postman Collection dan Postman Environment menjadi sebuah berkas JSON.
Ikuti langkah-langkah berikut untuk mengekspor Postman Collection dan Postman
Environment.
Pertama, buka aplikasi Postman dan pilih Collection bernama “Notes API Test” hingga
tampak tampilan seperti gambar di bawah ini.
Aplikasi akan menampilkan Pop-up Export Collection. Pilih opsi Collection v2.1
sebagai format berkas JSON dan klik tombol Export untuk memulai proses ekspor.
Agar mudah dalam menjalankan pengujiannya kelak, kami sarankan untuk simpan berkas
hasil ekspor di folder proyek notes-app-back-end dan sesuaikan nama berkasnya
menjadi notes-api-test.postman_collection.json.
Proses ekspor Postman Collection selesai! Selanjutnya kita perlu mengekspor juga
Postman Environment.
Kembali lagi ke aplikasi Postman dan pilih environment Notes API Test.
Newman merupakan aplikasi dalam bentuk binary yang dijalankan via CLI. Untuk
menggunakan Newman, kita perlu mengunduh dan memasang binary tersebut. Berutunglah
karena binary Newman dapat diunduh dan dipasang dengan mudah dengan menggunakan
JavaScript Package Manager, seperti npm dan yarn.
Untuk memasang Newman menggunakan npm, pasanglah package newman secara global
dengan perintah.
Oke. Selanjutnya kita akan menjalankan berkas Postman Collection dengan menggunakan
Newman. Agar mudah dalam menjalankannya, Anda bisa manfaatkan Terminal yang ada di
VSCode karena berkas Postman Collection dan Postman Environment ada di dalam folder
proyek notes-app-back-end.
Sebelum menjalankan Postman Collection, pastikan web server sedang berjalan. Jika
tidak, jalankan dulu dengan perintah berikut ini.
Setelah web server dipastikan berjalan, selanjutnya kita bisa jalankan Postman
Collection dengan Newman melalui perintah di bawah ini.
Catatan: Anda bisa membuka Terminal lebih dari satu pada VSCode dengan menekan
tombol + pada bilah Terminal.