Thursday, 3 July 2025
QA

Perbedaan Test Case dan Test Scenario dalam Testing API

Dalam pengujian perangkat lunak, terutama API, terdapat dua istilah penting yang sering digunakan: Test Case dan Test Scenario. Meskipun keduanya berkaitan, terdapat perbedaan mendasar dalam penggunaannya. Pada kesempatan ini akan membahas perbedaan tersebut agar lebih mudah memahami serta memberikan contoh penerapannya dalam pengujian API login.

Perbedaan Test Case dan Test Scenario

AspekTest CaseTest Scenario
DefinisiDokumen yang berisi langkah-langkah detail untuk menguji fitur atau fungsionalitas tertentu.Deskripsi umum tentang skenario pengujian tanpa langkah detail.
Tingkat DetailSangat detail, mencakup input, langkah-langkah eksekusi, hasil yang diharapkan, dan kondisi awal.Lebih abstrak, hanya menjelaskan skenario tanpa langkah spesifik.
TujuanMemastikan setiap aspek fitur diuji secara sistematis.Memberikan gambaran besar tentang apa yang perlu diuji.
Digunakan untukPengujian manual dan otomatisasi, membantu QA dalam menguji secara sistematis.Perencanaan pengujian, brainstorming kasus uji, dan memahami cakupan pengujian.

Contoh Perbedaan dalam API Login

Test Scenario API Login

  1. Pengguna dapat login dengan kredensial yang valid.
  2. Sistem harus menolak login dengan kredensial salah.
  3. Sistem harus menolak login jika akun belum diverifikasi.

Test Case API Login

Test Case 1: Login dengan kredensial valid

  • Precondition: User sudah terdaftar.
  • Langkah: Kirim request POST ke /api/login dengan email dan password valid.
  • Expected Result: Response 200 OK, token dikembalikan.

Test Case 2: Login dengan password salah

  • Precondition: User sudah terdaftar.
  • Langkah: Kirim request POST ke /api/login dengan email benar tapi password salah.
  • Expected Result: Response 401 Unauthorized, pesan error “Invalid credentials”.

Setelah kita melihat contoh diatas jadi dapat disimpulkan Test Case adalah dokumen terperinci yang berisi langkah-langkah pengujian, data uji, kondisi awal, dan hasil yang diharapkan untuk menguji suatu fungsionalitas secara spesifik. sedangkan Test Scenario adalah gambaran umum tentang skenario pengujian tanpa langkah detail, yang digunakan untuk memahami cakupan pengujian dan perencanaan pengujian lebih lanjut.

Dalam Real Project Biasanya Lead QA / Senior QA akan membuatkan Sekenario Utama berdasarkar requirement yang ada, dan tester akan membuat Test Case berdasarkan testing yang dia lakukan dan akan memberi masukan jika ada sekenario yang kurang atau tidak bisa dilakukan testing. Setelah selesai testing QA Lead akan mereview hasil testing.


Jenis-Jenis Test Case dalam API Login

1. Functional Testing

Pengujian yang memastikan API bekerja sesuai dengan fungsionalitas yang diharapkan.

Contoh Test Case Functional Testing

TC IDTest CasePreconditionTest StepsExpected Result
TC001Login dengan kredensial validAPI harus aktif dan database memiliki user terdaftar1. Kirim request POST ke /api/login dengan payload: { “email”: “valid@example.com”, “password”: “ValidPassword123” }Response status 200 OK, token dikembalikan
TC002Login dengan email yang tidak terdaftarAPI harus aktif1. Kirim request POST ke /api/login dengan payload: { “email”: “notregistered@example.com”, “password”: “ValidPassword123” }Response status 401 Unauthorized, pesan error “User not found”
TC003Login dengan password salahUser dengan email yang digunakan harus ada di database1. Kirim request POST ke /api/login dengan payload: { “email”: “valid@example.com”, “password”: “WrongPassword” }Response status 401 Unauthorized, pesan error “Invalid credentials”
TC004Login dengan email kosongAPI harus aktif1. Kirim request POST ke /api/login dengan payload: { “email”: “”, “password”: “ValidPassword123” }Response status 400 Bad Request, pesan error “Email is required”
TC005Login dengan password kosongAPI harus aktif1. Kirim request POST ke /api/login dengan payload: { “email”: “valid@example.com”, “password”: “” }Response status 400 Bad Request, pesan error “Password is required”
TC006Login dengan format email tidak validAPI harus aktif1. Kirim request POST ke /api/login dengan payload: { “email”: “invalid-email”, “password”: “ValidPassword123” }Response status 400 Bad Request, pesan error “Invalid email format”
TC007Login dengan payload kosongAPI harus aktif1. Kirim request POST ke /api/login tanpa body atau {}Response status 400 Bad Request, pesan error “Email and password are required”
TC008Login dengan metode HTTP selain POSTAPI harus aktif1. Kirim request GET ke /api/loginResponse status 405 Method Not Allowed
TC009Login dengan akun yang sudah diblokirPastikan user di database memiliki status “blocked”1. Kirim request POST ke /api/login dengan akun yang diblokirResponse status 403 Forbidden, pesan error “User is blocked”
TC010Login dengan akun yang belum diverifikasiPastikan user di database memiliki status “unverified”1. Kirim request POST ke /api/login dengan akun yang belum diverifikasiResponse status 403 Forbidden, pesan error “User not verified”

2. Integration Testing

Pengujian yang berfokus pada bagaimana API login berinteraksi dengan komponen lain, seperti database, middleware, autentikasi, dan layanan eksternal.

Contoh Test Case Integration Testing

TC IDTest ScenarioPreconditionTest StepsExpected Result
TC001Integrasi dengan Database – User validDatabase memiliki user dengan email dan password yang valid1. Kirim request POST ke /api/login dengan kredensial valid
2. Verifikasi response dari API
Response status 200 OK, token dikembalikan, user ditemukan di database
TC002Integrasi dengan Database – User tidak ditemukanDatabase tidak memiliki user dengan email yang diberikan1. Kirim request POST ke /api/login dengan email yang tidak terdaftarResponse status 401 Unauthorized, pesan error “User not found”
TC003Integrasi dengan Database – Password salahDatabase memiliki user dengan email yang diberikan, tapi password salah1. Kirim request POST ke /api/login dengan password yang salahResponse status 401 Unauthorized, pesan error “Invalid credentials”
TC004Integrasi dengan Middleware – Validasi InputAPI memiliki middleware untuk validasi request1. Kirim request POST ke /api/login dengan request body kosong
2. Kirim request dengan email dalam format salah
Response status 400 Bad Request, pesan error sesuai validasi middleware
TC005Integrasi dengan Authentication Service – Token GenerationAPI harus menghasilkan token JWT saat login sukses1. Kirim request POST ke /api/login dengan kredensial valid
2. Periksa apakah token JWT dikembalikan
Token JWT dikembalikan dalam response
TC006Integrasi dengan Authentication Service – Token ExpiryAPI mengembalikan token dengan waktu kedaluwarsa yang benar1. Login untuk mendapatkan token 2. Verifikasi expiry time di token (misal 1 jam)Token memiliki expiry time yang benar (misal exp: <timestamp>)
TC007Integrasi dengan Redis (Session Store) – Menyimpan Session AktifJika API menggunakan Redis untuk menyimpan sesi1. Login dengan kredensial valid
2. Periksa apakah sesi disimpan di Redis
Redis menyimpan session user dengan token aktif
TC008Integrasi dengan External Logging ServiceAPI mencatat percobaan login ke sistem logging eksternal (misal ELK, Datadog)1. Login dengan berbagai skenario (sukses, gagal, blokir)
2. Periksa log di sistem logging
Log tercatat dengan benar (email, status login, timestamp)
TC009Integrasi dengan Rate LimitingAPI membatasi jumlah login per menit (misal 5x per menit)1. Kirim lebih dari 5 request login dalam 1 menitResponse status 429 Too Many Requests, pesan error “Rate limit exceeded”
TC010Integrasi dengan Email Service – Kirim Notifikasi LoginJika API mengirim notifikasi login ke user1. Login dengan kredensial valid
2. Periksa apakah email notifikasi dikirim
Email notifikasi login terkirim ke u

3. End-to-End (E2E) Testing

Pengujian menyeluruh dari awal hingga akhir untuk memastikan seluruh proses login bekerja dengan baik.

Contoh Test Case End-to-End Testing

TC IDTest ScenarioPreconditionTest StepsExpected Result
TC001Login sukses dengan kredensial validUser terdaftar di database1. Akses halaman login (jika ada UI) atau kirim request POST ke /api/login dengan kredensial valid
2. Verifikasi response API
3. Pastikan user diarahkan ke halaman dashboard (UI) atau mendapatkan token JWT (API)
Login berhasil, response 200 OK, token dikembalikan, user diarahkan ke dashboard
TC002Login gagal dengan email tidak terdaftarAPI dan database aktif1. Masukkan email yang tidak terdaftar
2. Kirim request login
Response 401 Unauthorized, pesan error “User not found”
TC003Login gagal dengan password salahUser terdaftar di database1. Masukkan email valid tetapi password salah
2. Kirim request login
Response 401 Unauthorized, pesan error “Invalid credentials”
TC004Login gagal dengan input kosongAPI aktif1. Kirim request login dengan {} atau input kosongResponse 400 Bad Request, pesan error “Email and password are required”
TC005Login dengan akun yang belum diverifikasiUser ada di database tetapi belum verifikasi email1. Masukkan email dan password valid untuk akun yang belum diverifikasi
2. Kirim request login
Response 403 Forbidden, pesan error “User not verified”
TC006Login dengan akun yang diblokirUser di database memiliki status blocked1. Masukkan email dan password valid untuk akun yang diblokir
2. Kirim request login
Response 403 Forbidden, pesan error “User is blocked”
TC007Login berhasil lalu akses halaman dashboardUser terdaftar, UI tersedia1. Login dengan kredensial valid
2. Gunakan token JWT untuk mengakses /api/dashboard
Dashboard bisa diakses, response 200 OK
TC008Login dengan metode HTTP selain POSTAPI aktif1. Kirim request GET atau PUT ke /api/loginResponse 405 Method Not Allowed
TC009Login dengan terlalu banyak percobaan gagal (Brute Force Protection)API memiliki rate limiting1. Coba login lebih dari 5 kali dengan password salah dalam 1 menitResponse 429 Too Many Requests, pesan error “Rate limit exceeded”
TC010Login sukses lalu logoutUser login dan mendapatkan token JWT1. Login dengan kredensial valid
2. Kirim request POST ke /api/logout dengan token
3. Coba akses endpoint /api/dashboard
Response logout sukses, dashboard tidak bisa diakses (response 401 Unauthorized)
TC011Login sukses lalu coba akses dengan token kedaluwarsaJWT memiliki expiry time1. Login dan dapatkan token
2. Tunggu hingga token kedaluwarsa 3. Gunakan token untuk akses API yang membutuhkan autentikasi
Response 401 Unauthorized, pesan error “Token expired”
TC012Login sukses dan periksa audit logSistem logging (misal ELK, Datadog) aktif1. Login dengan kredensial valid
2. Cek log sistem
Log mencatat informasi login (email, timestamp, IP, status)
TC013Login dengan autentikasi dua faktor (2FA)User mengaktifkan 2FA1. Masukkan email dan password valid
2. Masukkan kode OTP yang dikirim ke email atau aplikasi autentikasi
Response sukses setelah OTP benar, 200 OK, token dikembalikan

Dari ketiga jenis pengujian di atas, terdapat beberapa test case yang selalu ada dalam setiap pengujian API login:

TC IDTest Scenario
TC001Login sukses dengan kredensial valid
TC002Login dengan email yang tidak terdaftar
TC003Login dengan password salah
TC004Login dengan input kosong
TC008Login dengan metode HTTP selain POST

Mengapa test case ini selalu ada?
Karena test case tersebut menguji fungsionalitas dasar API login, sehingga harus diuji dalam Functional, Integration, dan E2E Testing.

Kesimpulan

  • Test Scenario memberikan gambaran besar tentang pengujian yang harus dilakukan, sedangkan Test Case memberikan langkah detail untuk menjalankan pengujian tersebut.
  • Functional Testing fokus pada validasi fungsi API login, Integration Testing memastikan API berinteraksi dengan baik dengan sistem lain, dan End-to-End Testing menguji seluruh alur kerja dari awal hingga akhir.
  • Beberapa test case selalu ada, seperti login sukses, kredensial salah, dan validasi input, karena ini adalah skenario dasar API login.

Dengan memahami perbedaan ini, QA Engineer dapat lebih efektif dalam merancang pengujian API untuk memastikan sistem yang dibuat sesuai requirement / sesuai kebutuhan sehingga dapat meminimalisir terjadinya bug. oke sampai disini dulu pembahasannya. semoga bermanfaat.

Fredy Siswanto

Fredy Siswanto

About Author

Leave a Reply

Your email address will not be published. Required fields are marked *

You may also like