0% menganggap dokumen ini bermanfaat (0 suara)
21 tayangan27 halaman

Panduan Lengkap Pengujian API REST

Dokumen ini membahas tentang pengujian API, termasuk konsep dasar REST API, metode HTTP, dan status kode penting yang perlu diuji. Selain itu, dijelaskan juga tentang jenis-jenis pengujian API, strategi pengujian, serta alat dan framework yang digunakan dalam pengujian API. Pengujian API merupakan bagian penting dari strategi kualitas perangkat lunak yang lebih besar, dengan fokus pada pengujian fungsional dan integrasi.

Diunggah oleh

Ghetsa Ramadhani
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
21 tayangan27 halaman

Panduan Lengkap Pengujian API REST

Dokumen ini membahas tentang pengujian API, termasuk konsep dasar REST API, metode HTTP, dan status kode penting yang perlu diuji. Selain itu, dijelaskan juga tentang jenis-jenis pengujian API, strategi pengujian, serta alat dan framework yang digunakan dalam pengujian API. Pengujian API merupakan bagian penting dari strategi kualitas perangkat lunak yang lebih besar, dengan fokus pada pengujian fungsional dan integrasi.

Diunggah oleh

Ghetsa Ramadhani
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

API Testing

Semester Ganjil 2025/2026


Jurusan Teknologi Informasi
Politeknik Negeri Malang

[Link] Penjaminan Mutu Perangkat Lunak 1


Apa Itu REST API?
• API (Application Programming Interface): Kontrak yang memungkinkan
berbagai komponen perangkat lunak berkomunikasi satu sama lain.
• REST (Representational State Transfer): Gaya arsitektur untuk membangun
layanan web yang menggunakan protokol HTTP dan berinteraksi
dengan sumber daya (resources).
• Klien & Server: Klien (misalnya, aplikasi mobile) mengirim permintaan
(request); server (backend) mengirim tanggapan (response).
• Endpoint: URL unik untuk mengakses fungsi tertentu, contoh: GET
/v1/users/123.
• Resource (Sumber Daya): Entitas yang diekspos oleh API,
misalnya user atau product.
• Representasi: Format data dari sebuah resource, umumnya dalam
bentuk JSON (JavaScript Object Notation).

[Link] 2
Request & Response HTTP
• Method: Aksi yang ingin dilakukan (GET, POST, PUT, PATCH, DELETE).
• URL (Uniform Resource Locator): Alamat endpoint,
mis. [Link]
• Query Parameter: Filter atau parameter tambahan pada URL,
missal: ?limit=10&sort=title.
• Header: Metadata tambahan untuk permintaan/respons, mis. Accept:
application/json.
• Body (Payload): Data utama yang dikirim dalam permintaan atau
diterima dalam response.
• Status Code: Kode numerik yang menandakan hasil dari permintaan
(2xx untuk sukses, 4xx untuk kesalahan klien, 5xx untuk kesalahan
server).

[Link] 3
Metode HTTP & Idempotensi
• GET: Membaca data. Bersifat aman (tidak mengubah data)
dan idempotent (permintaan berulang memberikan hasil yang sama).
• POST: Membuat data baru. Tidak idempotent secara default.
• PUT: Mengganti seluruh data pada sebuah resource.
Bersifat idempotent.
• PATCH: Memperbarui sebagian data pada sebuah resource. Tidak selalu
idempotent.
• DELETE: Menghapus data. Bersifat idempotent.
• Idempotensi: Sebuah operasi yang jika dieksekusi beberapa kali akan
selalu menghasilkan state akhir yang sama. Penting untuk diuji, terutama
pada PUT dan DELETE.
[Link] 4
Status Code Penting untuk Diuji
• 200 OK: Sukses untuk permintaan baca (GET) atau pembaruan (PUT/PATCH).
• 201 Created: Sukses membuat resource baru (POST). Respons harus menyertakan
header Location yang berisi URL resource baru.
• 204 No Content: Sukses, tetapi tidak ada body dalam respons (umumnya
untuk DELETE).
• 400 Bad Request: Permintaan tidak valid karena kesalahan input dari klien (misalnya,
format JSON salah).
• 401 Unauthorized: Data yang dikirimkan gagal diautorisasi dikarenakan tidak dikenal
atau kesalahan kata sandi.
• 403 Forbidden: Permintaan valid tetapi mengakses resource yang tidak diijinkan
• 404 Not Found: Resource yang diminta tidak ditemukan.
• 422 Unprocessable Content: Data yang dikirim valid secara format, tetapi melanggar
aturan bisnis (misalnya, email sudah terdaftar).

[Link] 5
Header HTTP yang Penting
• Content-Type: Menentukan format body dari permintaan yang
dikirim (mis. application/json).
• Accept: Memberi tahu server format respons yang diinginkan oleh
klien.
• Location: Ditemukan pada respons 201 Created, berisi URL dari
resource yang baru dibuat.
• Allow: Ditemukan pada respons 405 Method Not Allowed, berisi
daftar metode HTTP yang valid.
• ETag: "Sidik jari" dari sebuah versi resource, digunakan untuk
caching dan permintaan kondisional.

[Link] 6
Jenis-Jenis Pengujian API
• Fungsional (Happy Path): Menguji alur normal sesuai ekspektasi.
• Negatif: Menguji bagaimana API menangani input tidak valid atau kondisi
error. Harapannya adalah menerima kode status 4xx yang sesuai.
• Kasus Tepi (Edge Cases): Menguji batas-batas sistem, seperti string yang
sangat panjang, angka maksimum, atau list kosong.
• Validasi Skema: Memastikan struktur body respons sesuai dengan JSON
Schema yang didefinisikan.
• Uji Kontrak: Memastikan implementasi API sesuai dengan
spesifikasi OpenAPI.
• Uji Idempotensi: Mengirim permintaan PUT atau DELETE berulang kali
untuk memastikan state sistem tetap konsisten.
[Link] 7
Pengujian Berbasis Spesifikasi
(OpenAPI & JSON Schema)
• OpenAPI (dulu Swagger): Berkas (YAML/JSON) yang menjadi
"sumber kebenaran" untuk sebuah API. Mendeskripsikan endpoint,
parameter, respons, dan skema data.
• JSON Schema: Standar untuk mendefinisikan struktur dan validasi
data JSON.
• Manfaat: Pengujian dapat diotomatisasi untuk memastikan
implementasi API tidak menyimpang dari kontrak yang telah
disepakati.

[Link] 8
Fitur Umum API: Paginasi, Pengurutan,
dan Penyaringan
• Paginasi (Pagination): Memecah data dalam jumlah besar menjadi
"halaman-halaman" kecil
menggunakan limit & offset atau cursor.
• Pengurutan (Sorting): Mengurutkan hasil berdasarkan field
tertentu, missal: ?sort=createdAt,desc.
• Penyaringan (Filtering): Memfilter hasil berdasarkan kriteria,
missal: ?status=published.
• Skenario Uji: Pastikan limit dipatuhi, urutan data konsisten, dan
filter berfungsi dengan benar.

[Link] 9
Fitur Umum API: Caching
• Caching: Mekanisme untuk menyimpan respons sementara agar tidak
perlu memintanya berulang kali ke server.
• ETag: Header yang berisi ID unik untuk versi tertentu dari sebuah
resource.
• Permintaan Kondisional: Klien dapat mengirim permintaan GET dengan
header If-None-Match yang berisi ETag dari data yang sudah dimilikinya.
• 304 Not Modified: Jika data di server tidak berubah, server akan
merespons dengan status ini tanpa mengirim body, menghemat
bandwidth.
• Skenario Uji: Lakukan GET pertama (simpan ETag), lalu
lakukan GET kedua dengan header If-None-Match dan harapkan
respons 304.

[Link] 10
Contoh Pengujian (cURL)

[Link] 11
Contoh (Postman)

[Link] 12
Contoh (RestAssured)

[Link] 13
AAA & GWT
• Arrange-Act-Assert (AAA)
• Given-When-Then(GWT)
• Pola desain ini membantu membuat tes lebih mudah dibaca,
dipahami, dan dipelihara. Keduanya memiliki tujuan yang sama
tetapi menggunakan terminologi yang sedikit berbeda.

[Link] 14
Arrange/Given
• Arrange/Given: Persiapan
• Tujuan: Menyiapkan semua prasyarat dan input yang diperlukan
untuk tes.
• Contoh:
• Membuat data uji (misalnya, membuat pengguna baru melalui API).
• Mengatur mock untuk dependensi eksternal.
• Menyiapkan payload permintaan (request body).
• Menentukan header yang diperlukan.

[Link] 15
Act/When
• Act/When: Tindakan
• Tujuan: Mengeksekusi unit kode atau perilaku yang sedang diuji.
Dalam pengujian API, ini biasanya berarti mengirim permintaan
HTTP ke endpoint.
• Contoh:
• Mengirim permintaan POST /books.
• Melakukan panggilan GET /users/123.

[Link] 16
Assert/Then
• Assert/Then: Verifikasi
• Tujuan: Memverifikasi bahwa hasil dari tindakan sesuai dengan
harapan.
• Contoh:
• Memeriksa apakah kode status respons adalah 201 Created.
• Memvalidasi bahwa body respons berisi data yang benar.
• Memastikan header Location ada dan memiliki format yang benar.

[Link] 17
Tools atau Framework
• HTTP Client: Postman, Insomnia (GUI untuk mengirim permintaan HTTP
dan menulis tes sederhana).
• CLI Tools: cURL, httpie (Alat baris perintah untuk interaksi HTTP cepat).
• Test Framework: REST Assured (Java), Karate (DSL), Pytest (Python)
untuk menulis tes dalam kode.
• Test Runner: Newman (Menjalankan koleksi Postman dari CLI, cocok
untuk CI/CD).
• Mock Server: Prism, WireMock (Mensimulasikan API dependency untuk
pengujian yang terisolasi dan stabil).
• CI/CD (Continuous Integration/Continuous Deployment): Platform
seperti Jenkins, GitLab CI, atau GitHub Actions untuk menjalankan tes
secara otomatis.

[Link] 18
Strategi Pengujian API
• Pengujian API adalah bagian dari strategi kualitas yang lebih besar,
sering digambarkan dengan Piramida Pengujian.
• Uji Unit (Dasar Piramida): Menguji komponen/fungsi individual (misalnya,
validasi input, logika bisnis) secara terisolasi. Cepat dan murah.
• Uji Integrasi/API (Tengah Piramida): Menguji interaksi antar komponen,
termasuk API itu sendiri tanpa UI. Keseimbangan yang baik antara
kecepatan dan keandalan. Di sinilah sebagian besar pengujian REST API
berada.
• Uji End-to-End/UI (Puncak Piramida): Menguji seluruh alur aplikasi dari
perspektif pengguna melalui antarmuka grafis. Lambat, mahal, dan rapuh.
• Fokus pada bagian tengah piramida: Tulis banyak tes API untuk
mendapatkan umpan balik yang cepat dan andal.

[Link] 19
Manajemen Data Uji
• Kualitas data uji sangat menentukan kualitas pengujian API.
• Isolasi: Setiap tes harus independen. Satu tes tidak boleh bergantung pada data
yang dibuat oleh tes lain.
• Prasyarat: Buat data yang diperlukan di awal setiap tes (misalnya, melalui
API POST atau langsung ke database).
• Pembersihan: Hapus data yang dibuat setelah tes selesai untuk menjaga
lingkungan tetap bersih.
• Data Realistis: Gunakan data yang mencerminkan data produksi, tetapi hindari
penggunaan data sensitif. Gunakan data dummy atau anonim.
• Contoh: Sebelum menguji GET /users/{id},
pastikan user dengan id tersebut ada dengan membuatnya terlebih
dahulu melalui POST /users.

[Link] 20
Otomatisasi dalam Alur CI/CD
• Mengintegrasikan pengujian API ke dalam pipeline CI/CD adalah kunci untuk mendapatkan
umpan balik yang cepat dan konsisten.
• Langkah-langkah Umum dalam Pipeline:
• Trigger: Pipeline dipicu oleh git push atau merge request.
• Build & Lint: Kode aplikasi di-compile dan diperiksa kualitasnya.
• Unit Tests: Tes unit dijalankan.
• Deploy to Test Environment: Aplikasi di-deploy ke lingkungan pengujian yang terisolasi.
• API Tests: Skrip pengujian API (seperti koleksi Postman/Newman atau kode REST Assured)
dijalankan terhadap lingkungan tersebut.
• Gate: Jika tes API gagal, pipeline berhenti dan memberikan notifikasi. Build dianggap gagal.
• Deploy to Staging/Production: Jika semua tes berhasil, build dapat dilanjutkan ke tahap
berikutnya.

[Link] 21
Contoh: Newman
name: API Tests (Newman) - name: Set up [Link]
uses: actions/setup-node@v4
with:
on:
node-version: '18'
push:
branches: [ main ] - name: Install Newman
pull_request: run: npm install -g newman

branches: [ main ]
- name: Run Postman collection
run: newman run "My API
jobs: Collection.postman_collection.json" -e
"staging.postman_environment.json"
test:
runs-on: ubuntu-latest - name: Upload Newman reports
if: always()

steps: uses: actions/upload-artifact@v4


with:
- name: Check out code
name: newman-reports
uses: actions/checkout@v4 path: newman/

[Link] 22
Contoh: Maven
name: API Tests (Maven) - name: Set up JDK 17
uses: actions/setup-java@v4
on: with:
push: java-version: '17'
branches: [ main ] distribution: 'temurin'
pull_request:
branches: [ main ] - name: Run API Tests with Maven
run: mvn test
jobs:
test: - name: Upload test reports
runs-on: ubuntu-latest if: always()
uses: actions/upload-artifact@v4
steps: with:
- name: Check out code name: maven-test-reports
uses: actions/checkout@v4 path: target/surefire-reports/

[Link] 23
Pelaporan & Metrik
• Laporan Tes: Hasil dari eksekusi tes (berhasil/gagal) harus mudah
diakses.
• Metrik Kunci:
• Pass/Fail Rate: Persentase tes yang berhasil vs. gagal.
• Test Coverage: Persentase endpoint atau fungsionalitas yang dicakup oleh
tes. Ini bisa diukur secara manual atau dengan alat bantu.
• Durasi Eksekusi: Waktu yang dibutuhkan untuk menjalankan seluruh
rangkaian tes. Peningkatan durasi bisa menandakan masalah performa.
• Flaky Tests: Tes yang kadang berhasil dan kadang gagal tanpa perubahan
kode. Ini harus diidentifikasi dan diperbaiki.

[Link] 24
Glosarium
• API: Kontrak komunikasi antar perangkat lunak. • JSON Schema: Aturan untuk validasi struktur data JSON.
• Body: Payload data dalam permintaan/respons. • Method: Kata kerja HTTP (GET, POST, dll.).
• Caching: Menggunakan kembali respons yang • Mock Server: Server palsu untuk simulasi dependensi.
tersimpan untuk efisiensi. • Negosiasi Konten: Proses memilih format representasi
data.
• CI/CD: Sistem otomatis untuk menjalankan tes
dan deployment. • OpenAPI: Spesifikasi standar untuk mendeskripsikan REST
API.
• Endpoint: URL spesifik untuk satu operasi API. • Paginasi: Proses memecah data besar menjadi halaman-
• ETag: Pengenal unik untuk versi sebuah halaman kecil.
resource. • Representasi: Format dari sebuah resource (misalnya,
JSON).
• Header: Metadata pada permintaan/respons.
• Resource: Entitas yang diekspos oleh API (misalnya, user).
• HTTP: Protokol komunikasi yang digunakan oleh • REST: Gaya arsitektur API berbasis HTTP.
web.
• Status Code: Kode numerik yang menunjukkan hasil
• Idempotensi: Operasi yang diulang permintaan.
menghasilkan state akhir yang sama.

[Link] 25
Any Questions?

[Link] 26
Tugas
• Implementasikan API testing pada project anda secara berkelompok!

[Link] 27

Anda mungkin juga menyukai