2.8.2 Studi Kasus: Validasi API login dan checkout di aplikasi e-commerce

Dalam dunia e-commerce, pengguna tidak hanya sekedar menjelajahi katalog produk, tetapi juga melakukan interaksi krusial seperti login ke akun mereka, menambahkan barang ke keranjang belanja, hingga menyelesaikan transaksi pembelian (checkout). Meskipun terlihat sederhana dari sisi frontend, seluruh alur ini sangat bergantung pada API yang bekerja di belakang layar.

Untuk studi kasus ini, kita akan menggunakan DummyJSON, sebuah web demo

 
  Text Box: Catatan: DummyJSON tidak menyediakan endpoint pembayaran atau order finalisasi. Checkout dalam konteks ini hanya sampai tahap menambahkan produk ke cart.


e-commerce yang menyediakan API publik untuk tujuan pembelajaran dan pengujian. Fokus pengujian akan dimulai dari login, pengambilan data produk, hingga simulasi proses checkout dengan menambahkan produk ke cart.

 

Login API

Login merupakan pintu masuk utama dalam proses otentikasi pengguna. Di DummyJSON, endpoint login akan mengembalikan JSON Web Token (JWT) yang kemudian digunakan sebagai otorisasi untuk endpoint-endpoint lain yang bersifat pribadi.

Pengujian login API bertujuan untuk memastikan bahwa:

      Hanya kredensial yang valid yang bisa mendapatkan akses.

      Token autentikasi dikembalikan hanya pada login yang berhasil.

      Sistem memberikan pesan error yang informatif namun aman.

Token yang diterima harus disimpan dan digunakan kembali dalam header Authorization untuk request selanjutnya, seperti menambahkan produk ke cart.

Checkout API (Cart Simulation)

Pada web demo DummyJSON, proses checkout disimulasikan dengan menambahkan produk ke cart menggunakan endpoint POST /carts/add. Meskipun tidak ada endpoint untuk pembayaran atau pembuatan order final, pengujian terhadap proses cart tetap mencerminkan sebagian besar skenario validasi penting.

Proses pengujian mencakup:

      Validasi bahwa produk yang ditambahkan benar-benar tersedia.

      Pengiriman struktur payload yang sesuai (misalnya: userId, products).

      Validasi bahwa pengguna sudah login (menggunakan JWT di header).

      Penanganan error seperti ketika user ID tidak valid, produk tidak valid, dsb.

Keterkaitan antara Login dan Checkout

Login dan checkout tidak bisa diuji secara terpisah. Pengguna yang belum login tidak bisa mengakses endpoint checkout (cart). Begitu pula dengan pengguna yang tidak terdaftar, maupun menambahkan produk yang tidak ada di dalam database.

API Login – Aspek Teknis dan Fungsional

Tujuan pengujian login API:

      Autentikasi hanya berhasil dengan username & password yang benar.

      Token disimpan untuk request selanjutnya.

      Validasi response untuk format dan status code yang sesuai.

Validasi Response Login:

      200 OK → login berhasil, token dikembalikan.

      401 Unauthorized → kredensial salah.

      400 Bad Request → format payload tidak valid.

⬛ API Checkout (Cart) – Validasi dan Simulasi

Validasi pada Cart:

      Produk tersedia dan jumlah valid.

      Token dikirim dalam header Authorization.

      Response menyertakan cartId, products, dan total.

Positive vs Negative Testing

Contoh Positive Test Cases:

      Login dengan username/password valid → dapat token.

      Tambah produk ke cart → berhasil.

Contoh Negative Test Cases:

      Login dengan password salah → 401 Unauthorized.

      Tambah produk yang pengguna yang tidak terdaftar → 404 Not Found.

⬛ Studi Kasus

Kita akan menggunakan DummyJSON https://dummyjson.com/docs untuk melakukan simulasi API testing pada alur e-commerce, yang terdiri dari:

      Login

      Mengambil daftar produk

      Menambahkan ke keranjang (cart)

Tujuan Pembelajaran

  1. Menyusun skenario API testing (positif & negatif)
  2. Memahami alur penggunaan token otentikasi
  3. Menggunakan token otomatis di request selanjutnya (Postman)
  4. Menyusun test case berdasarkan skenario yang dibuat

Skenario Pengujian API DummyJSON

A. Skenario Positif (Positive Test Cases)

No

Nama Skenario

Langkah / Endpoint

Expected Result

1

Login dengan kredensial valid

POST /auth/login

Status 200, token dikembalikan

2

Ambil semua produk

GET /products

Status 200, daftar produk muncul

3

Tambahkan item ke cart

POST /carts/add

Status 200, cart dikembalikan

4

Ambil cart user (opsional)

GET /carts/user/1

Status 200, data cart ditampilkan

 

B. Skenario Negatif (Negative Test Cases)

No

Nama Skenario

Langkah / Endpoint

Expected Result

1

Login dengan password salah

POST /auth/login

Status 400 Bad Request

2

Tambah produk dengan user id yang tidak valid

POST /carts/add

Status 404 Not Found

 

Langkah-Langkah di Postman

Untuk memudahkan dalam mengatur test case, kita bisa membuat collection terlebih dahulu.

Membuat Collection

      Klik menu Collections, + Create New Collection

      Beri nama misalnya: API dummyJSON

Buat Environment

  1. Klik “No Environment” → Create Environments
  2. Tambahkan environment bernama dummyJSON-env
  3. Tambahkan variable: base_url
  4. Tambahkan initial value: https://dummyjson.com
  5. Klik tombol “Save”

1. Buat Request: Login

Add request → Simpan request dengan nama: Login User

Request: POST {{base_url}}/user/login

Body (raw JSON):

{
  "username": "emilys",
  "password": "emilyspass"
}

Pilih environment: dummyJSON-env

Hasil:

      Status: 200 OK

      accessToken akan digunakan di header setiap request.

Perlu diperhatikan bahwa token atau accessToken memiliki masa berlaku tertentu. Oleh karena itu, apabila token sudah kadaluarsa, QA perlu mengirim ulang request ke endpoint login API untuk memperoleh token yang baru.

Karena token ini akan digunakan pada request-request selanjutnya, QA harus menambahkan token tersebut ke dalam header setiap permintaan. Salah satu tantangan yang sering dihadapi adalah kebutuhan untuk memperbarui token secara berkala, yang dapat menjadi merepotkan terutama saat menangani banyak request.

Untuk mengatasi hal ini, salah satu solusi yang dapat diterapkan adalah membuat nilai Authorization menjadi dinamis, sehingga token akan diperbarui secara otomatis setiap kali request dijalankan, tanpa perlu memperbarui token secara manual.

Langkah yang dapat dilakukan adalah menambahkan skrip pada tab Scripts di Postman untuk menyimpan nilai token ke dalam Environment Variable, yang kemudian dapat digunakan kembali secara otomatis di request berikutnya.

Berikut langkah-langkahnya:

  1. Klik Environment → Pilih environment: dummyJSON-env

   Tambahkan variable: token

      Kosongkan Initial value

   Klik Save

  1. Kembali ke Login request, tambahkan script di Tab “Scripts”

let response = pm.response.json();
pm.environment.set("token", response.accessToken);

  1. Kirim request Login kembali

Hasil: Token disimpan ke environment, bisa digunakan dengan {{token}} di header berikutnya.

Untuk mengecek bahwa token berhasil tersimpan, klik Environment → dummyJSON-env. Jika Current value tidak kosong, maka token berhasil tersimpan dan token akan diperbarui secara otomatis setiap kali request dijalankan.

2. Mendapatkan Produk

Add request → Simpan request dengan nama: Get Product

Request: GET {{base_url}}/products

Header:

Authorization: Bearer {{token}}

Pilih environment: dummyJSON-env

Hasil:

      Status: 200 OK

      Body mengandung array produk

3. Tambahkan Produk ke Cart

Add request → Simpan request dengan nama: Add Product to Cart

Request: POST {{base_url}}/carts/add

Header:

Authorization: Bearer {{token}}

Body:

{
  "userId": 1,
  "products": [
    { "id": 1, "quantity": 2 },
    { "id": 2, "quantity": 1 }
  ]
}

Pilih environment: dummyJSON-env

Hasil:

      Status: 201 Created

      Ada properti total, products, dan id

Negative Test Cases

Untuk menguji negative test cases, kita juga perlu membuat request terlebih dahulu.

1.  Login dengan password yang salah

Kita bisa menambahkan request baru atau bisa duplikat dari test case yang sudah kita buat sebelumnya. Supaya lebih cepat, maka kita akan duplicate request dari Login User.

Klik pada Login User → Klik opsi → Duplicate

Simpan request dengan nama: Login User with invalid password

Ubah password pada request body:

Body (raw JSON):

{
  "username": "emilys",
  "password": "12345"
}

Pilih environment: dummyJSON-env

Hasil: Status: 400 Bad Request dan response menunjukan bahwa akun yang digunakan invalid (dalam case ini adalah password salah).

 

2.  Tambahkan Produk ke Cart dengan user ID yang tidak valid

Klik pada Add Product to Cart → Klik opsi → Duplicate

Simpan request dengan nama:  Add Product to Cart with invalid user ID

Request: POST {{base_url}}/carts/add

Header:

Authorization: Bearer {{token}}

Body:

{
  "userId": 1000,
  "products": [
    { "id": 1, "quantity": 2 },
    { "id": 2, "quantity": 1 }
  ]
}

Pilih environment: dummyJSON-env

Expected:

      Status: 404 Not Found, dengan response menunjukkan bahwa user dengan ID “1000” tidak ditemukan

Last modified: Thursday, 4 September 2025, 10:30 AM