Cara pengujian RESTful web services (API test)

Fachrul Ch
Ngetest Bareng Fachrul
3 min readOct 11, 2017

Apa itu RESTful?

REST API atau biasa disebut RESTful web services sebenarnya adalah aplikasi yang memiliki arsitektur metode komunikasi dengan menggunakan HTTP verbs untuk untuk melihat, mengubah, menghapus data yang ada di server. kata REST sebenarnya adalah singkatan REpresentational State Transfer, setiap URL dari web service mewakili dari data (resource).

Dimana tujuannya adalah untuk membuat sistem dengan bahasa dan platform agnostic, memiliki performa yang baik, lebih sederhana daripada SOAP, cepat dan mudah untuk di kembangkan.

URL Design

Karena RESTful API ini menggunakan protokol HTTP, maka penamaan endpoint (struktur URL) yang konsisten akan menghasilkan API yang mudah dimengerti. Contoh penamaan endpoint yang baik adalah:

http://contoh.com/mahasiswa
http://contoh.com/mahasiswa/111222
http://contoh.com/kampus/fakultas/ilmukomputerHTTP Verbs

HTTP verbs yang biasa digunakan (namun tidak sebatas ini) untuk meminta data di server diantaranya:

Biasanya ketika kita meminta data ke server, perlu disematkan identitas (kredensial) client dan autentifikasi untuk bisa mengirimkan permintaan yang valid.

Response

Pada umumnya data yang diberikan oleh server berupa JSON object, kadang kala disediakan pula opsi untuk format XML seperti SOAP web service. terlepas dari bentuk data yang diberikan oleh server yang beragam, ada kesamaan Response status code yang sudah menjadi standar umum (kalau berbeda jauh, misal 204 dengan 404 tertukar kita bisa saja mengangkat ini sebagai issue), diantaranya:

Selengkapnya bisa dilihat di https://developer.mozilla.org/id/docs/Web/HTTP/Status dan jika kita lihat list error code disitu, bisa jadi kita buat skenario khusus untuk mendapatkan error 414 URI Too Long atau 413 Payload Too Large misalnya

Tools

Untuk pengujian web service ini, kita bisa menggunakan banyak tools, tapi yang populer adalah postman dan soap ui (di post berikutnya kita akan pelajari cara penggunaannya :)

Apa yang harus di test dari web service?

Untuk pengujian nya biasanya kita menjawab pertanyaan sebagai berikut

Keamanan web service:

  • apakah API sudah menggunakan HTTPS/TLS, bisakah diakses dengan HTTP biasa?
  • apakah API memiliki mekanisme autorisasi (seperti Oauth/username-password) untuk semua end point?
  • seberapa lama akses token dari autorisasi ini bertahan? (auto expired token/cookies)
  • apakah token yang sudah expired masi bisa digunakan?
  • method apa sajakah yang diijinkan oleh API? (get/post/put)
  • apa yang terjadi jika endpoint tersebut diakses dengan http method yang salah (keliru atau custom)?
  • apakah bisa diakses dengan beda domain? (disable CORS header jika tidak support)

User input:

  • apakah server membersihan data yang di input oleh user? (masukan karakter salah/panjang/salah tipe file)
  • apakah server menolak data sampah/ilegal karakter (contoh format email salah)?
  • apa yang terjadi jika content type header yang salah atau tidak diijinkan? (response seharusnya 406 unacceptable atau 415 Unsupported Media Type)

Response:

  • apakah server memberikan response code yang sesuai standar?
    apakah content-type selalu ada disetiap response dari server? (harus selalu ada)
  • apakah response sudah sesuai dengan json schema?
  • apakah response tersebut memiliki (atau tidak) keyword tertentu?
  • apakah ada kata tertentu di posisi khusus (xpath/xquery match)?
  • sesuai ekspektasi kah kecepatan response dari server?

Error handling:

  • jika terjadi error apakah server memberikan response yang informatif
  • informasi yang diterima tersebut harusnya tidak terlalu teknikal
  • apakah yang terjadi jika mengakses endpoint dengan http method(verb) yang salah?

Oke pertanyaan di atas adalah generik untuk setiap endpoint, bisa sesuai atau tidak untuk endpoint tertentu. namun terkadang web service juga memerlukan integrasi test dengan endpoint lain nya, misalkan kita telah melakukan POST data baru, kita harus melihat apakah data tersimpan dengan benar dengan cara GET request di list data atau GET detail data, begitu pula ketika kita telah melakukan PUT ataupun DELETE, pastikan response sudah sesuai.

--

--