API Testing

 Apa itu Pengujian API ?

    Pengujian API adalah jenis pengujian perangkat lunak yang memvalidasi Application Programming Interfaces (API). Tujuan Pengujian API adalah untuk memeriksa fungsionalitas, keandalan, kinerja, dan keamanan antarmuka pemrograman. Dalam Pengujian API, alih-alih menggunakan input dan output pengguna standar seperti keyboard, kita menggunakan perangkat lunak untuk mengirim panggilan ke API, mendapatkan output, dan mencatat respon dari sistem. Tes API sangat berbeda dari Tes GUI dan tidak akan berkonsentrasi pada tampilan dan nuansa aplikasi. API testing berkonsentrasi pada lapisan logika bisnis dari arsitektur perangkat lunak.

Mengapa kita membutuhkan Pengujian API ?

  • Bahasa independen

    Data dipertukarkan melalui format XML dan JSON, sehingga bahasa apa pun dapat digunakan untuk otomatisasi pengujian. XML dan JSON biasanya merupakan data terstruktur, membuat verifikasi menjadi cepat dan stabil. Ada juga library bawaan untuk mendukung perbandingan data menggunakan format data ini.

  • GUI independen

    Pengujian API dapat dilakukan di aplikasi sebelum pengujian GUI. Pengujian awal berarti umpan balik awal dan produktivitas tim yang lebih baik. Fungsionalitas inti aplikasi dapat diuji untuk mengekspos kesalahan kecil dan untuk mengevaluasi kekuatan build.

  • Cakupan tes yang ditingkatkan

    Sebagian besar API/layanan web memiliki spesifikasi, memungkinkan Anda membuat pengujian otomatis dengan cakupan tinggi termasuk pengujian fungsional dan pengujian non-fungsional.

  • Rilis lebih cepat

    Adalah umum bahwa menjalankan pengujian API menghemat hingga delapan jam dibandingkan dengan pengujian UI, memungkinkan tim pengembangan perangkat lunak untuk merilis produk lebih cepat.

Dimana Pengujian API dilakukan?

    Ada tiga lapisan terpisah dalam aplikasi biasa: lapisan presentasi (atau antarmuka pengguna), lapisan bisnis, dan lapisan basis data untuk memodelkan dan memanipulasi data.

    Pengujian API dilakukan pada lapisan paling kritis: bisnis, di mana pemrosesan logika bisnis dilakukan dan semua transaksi antara antarmuka pengguna dan lapisan basis data terjadi.

  • Pengujian API berfokus pada analisis logika bisnis serta keamanan aplikasi dan respons data. Pengujian API umumnya dilakukan dengan membuat permintaan ke satu atau beberapa titik akhir API dan membandingkan respons dengan hasil yang diharapkan.
  • Pengujian  API  sering  kali  otomatis  dan   digunakan   oleh   DevOps, Quality  Assurance dan Development Teams untuk praktek pengujian berkelanjutan.

Jenis Output dari Pengujian API

Output dari pengujian API bisa berupa

  • Semua jenis data
  • Status, seperti Lulus (Pass) atau Gagal (Fail)
  • Panggil fungsi API lain

Cara mendekati Pengujian API

    Proses pengujian API harus dimulai dengan cakupan program yang terdefinisi dengan jelas serta pemahaman penuh tentang cara kerja API. Beberapa pertanyaan yang harus dipertimbangkan penguji meliputi:

  • Titik akhir apa yang tersedia untuk pengujian?
  • Kode respons apa yang diharapkan untuk permintaan yang berhasil?
  • Kode respons apa yang diharapkan untuk permintaan yang gagal?
  • Pesan kesalahan mana yang diharapkan muncul di badan permintaan yang gagal?

    Setelah faktor-faktor seperti ini dipahami, penguji dapat mulai menerapkan berbagai teknik pengujian. Test Cases juga harus ditulis untuk API. Test Cases ini menentukan kondisi atau variabel di mana penguji dapat menentukan apakah sistem tertentu bekerja dengan benar dan merespons dengan tepat. Setelah Test Cases ditentukan, penguji dapat melakukannya dan membandingkan hasil yang diharapkan dengan hasil sebenarnya. Tes harus menganalisis tanggapan yang mencakup:

  • Waktu balasan,
  • Kualitas data,
  • Konfirmasi otorisasi,
  • Kode status HTTP dan
  • Kode kesalahan.

    Pengujian API dapat menganalisis beberapa titik akhir, seperti layanan web, database, atau antarmuka pengguna web. Penguji harus memperhatikan kegagalan atau input yang tidak terduga. Waktu respons harus berada dalam batas yang disepakati yang dapat diterima, dan API harus diamankan dari potensi serangan.

    Pengujian juga harus dibuat untuk memastikan pengguna tidak dapat memengaruhi aplikasi dengan cara yang tidak terduga, bahwa API dapat menangani beban pengguna yang diharapkan, dan bahwa API dapat bekerja di beberapa browser dan perangkat. Pengujian juga harus menganalisis hasil pengujian nonfungsional, termasuk kinerja dan keamanan.

Jenis Pengujian API

  • UI Testing

    Pengujian antarmuka pengguna untuk API dan bagian integral lainnya. Pengujian UI lebih berfokus pada antarmuka yang terkait dengan API daripada pengujian API itu sendiri.

    Meskipun pengujian UI bukan pengujian API khusus dalam hal basis kode, teknik ini masih memberikan gambaran umum tentang kesehatan, kegunaan, dan efisiensi bagian depan dan belakang aplikasi.

  • Validation Testing

    Pengujian validasi terjadi di antara langkah-langkah terakhir dan memainkan peran penting dalam proses pengembangan. Ini memverifikasi aspek produk, perilaku, dan efisiensi. Dengan kata lain, pengujian validasi dapat dilihat sebagai jaminan pengembangan yang benar.

  • Functional Testing

    Termasuk menguji fungsi tertentu dalam basis kode. Fitur-fitur ini adalah representasi dari skenario khusus untuk memastikan fungsi API ditangani dengan baik dalam parameter yang direncanakan.

  • Security Testing

    Praktik ini memastikan implementasi API aman dari ancaman eksternal. Pengujian keamanan juga mencakup langkah-langkah tambahan seperti validasi metodologi enkripsi, dan desain kontrol akses API. Ini juga mencakup manajemen hak pengguna dan validasi otorisasi.

  • Load Testing

    Pengujian beban umumnya terjadi setelah unit tertentu atau seluruh basis kode telah selesai. Teknik ini memeriksa apakah solusi teoritis bekerja seperti yang direncanakan. Pengujian beban memantau kinerja aplikasi pada kondisi normal dan puncak.

  • Runtime and Error Detection

    Jenis pengujian ini terkait dengan pengoperasian API yang sebenarnya, khususnya dengan hasil universal dari penggunaan basis kode API. Teknik ini berfokus pada salah satu aspek di bawah ini: pemantauan, kesalahan eksekusi, kebocoran sumber daya, atau deteksi kesalahan.

  • Penetration Testing

    Pengujian penetrasi dianggap sebagai pengujian kedua dalam proses audit. Pada tipe ini, pengguna dengan pengetahuan API yang terbatas akan mencoba menilai vektor ancaman dari perspektif luar, yaitu tentang fungsi, sumber daya, proses, atau tujuan ke seluruh API dan komponennya.

  • Fuzz Testing

    Pengujian Fuzz adalah langkah lain dalam proses audit keamanan. Dalam pengujian fuzz, sejumlah besar data acak (disebut sebagai "noise" atau "fuzz") akan dimasukkan ke dalam sistem untuk mendeteksi crash paksa atau perilaku negatif. Teknik ini menguji batas API untuk mempersiapkan "skenario terburuk".

Sumber :

Komentar

Postingan populer dari blog ini

Software Testing Life Cycle

API Testing using Postman

Test Scenario dan Test Cases