Evaluasi: Tahap 3 · Hard

Ringkasan latihan

Beberapa soal belum dikerjakan. Kamu tetap bisa membaca panduan, tetapi sebaiknya kerjakan dulu agar evaluasi lebih bermakna.

Angka di atas menunjukkan aktivitas dan penilaian dirimu, bukan nilai penguasaan materi.

Soal 1: Uji multi-skenario sistem penarikan uang di ATM

Belum dikerjakan

Deskripsi soal

Sebuah bank merancang sistem mesin ATM dengan aturan penarikan uang tunai sebagai berikut:

- Saldo rekening nasabah tidak boleh bersisa kurang dari batas minimal Rp50.000.

- Pecahan uang yang tersedia di mesin hanya Rp50.000 dan Rp100.000.

- Batas maksimal penarikan harian per kartu adalah Rp5.000.000.

- Mesin ATM hanya mengeluarkan uang jika fisik lembaran uang di dalam brankas mesin mencukupi.

Tugas analisis di kertas:

1. Buatlah tabel matriks pengujian yang mencakup minimal 5 skenario uji berbeda (misal: penarikan normal, penarikan saldo pas-pasan, penarikan melebihi batas harian, penarikan nominal pecahan tidak valid, dan brankas mesin kosong/kurang).

2. Untuk setiap skenario, tuliskan: Nilai Input, Kondisi Awal, Hasil yang Diharapkan (Sukses/Gagal), dan Alasan Logisnya.

3. Identifikasi urutan pengecekan kondisi pada algoritma agar tidak terjadi kesalahan pemotongan saldo saat uang fisik tidak keluar.

Tujuan latihan

Melatih merancang test matrix komprehensif yang menguji kombinasi berbagai batasan dan mencegah transaksi inkonsisten.

Panduan jawaban / contoh solusi

Matriks Skenario Pengujian Minimal 5 Kasus:

1. Kasus Normal (Happy Path): Saldo Rp1.000.000, tarik Rp200.000, limit harian terpakai Rp0, brankas ada. Hasil: SUKSES, saldo sisa Rp800.000, uang keluar.

2. Kasus Batas Saldo Minimal: Saldo Rp240.000, tarik Rp200.000. Hasil: GAGAL, saldo sisa akan menjadi Rp40.000 (< batas minimum Rp50.000).

3. Kasus Pecahan Tidak Valid: Tarik Rp75.000. Hasil: GAGAL di awal, nominal bukan kelipatan pecahan yang didukung (50.000/100.000).

4. Kasus Limit Harian Terlampaui: Tarik Rp1.000.000, akumulasi penarikan hari ini sudah Rp4.500.000. Hasil: GAGAL, total Rp5.500.000 melebihi limit harian Rp5.000.000.

5. Kasus Uang Fisik Kurang: Saldo cukup Rp5.000.000, tarik Rp1.000.000, tetapi lembaran di mesin hanya tersisa Rp400.000. Hasil: GAGAL, transaksi dibatalkan tanpa memotong saldo rekening.

Urutan validasi yang wajib:

Validasi kelipatan pecahan -> Validasi limit harian -> Validasi saldo rekening sisa >= 50.000 -> Validasi ketersediaan fisik uang di dispenser -> Eksekusi pengeluaran fisik uang -> Debet saldo rekening nasabah.

Poin penting yang seharusnya ada

Kriteria evaluasi

Checklist evaluasi mandiri

Status evaluasi: Belum diperiksa

Soal 2: Menemukan kegagalan pemesanan kursi tiket bioskop serentak

Belum dikerjakan

Deskripsi soal

Sebuah aplikasi pemesanan tiket bioskop online memiliki alur sistem saat ini:

1. Pengguna membuka denah studio dan memilih kursi yang berwarna hijau (status: "Tersedia").

2. Pengguna mengisi data diri dan menekan tombol "Lanjut ke Pembayaran".

3. Pengguna diberi waktu 10 menit untuk menyelesaikan transfer di aplikasi perbankan.

4. Setelah notifikasi pembayaran berhasil diterima server, status kursi di database diubah menjadi "Terjual".

Gejala masalah: Pada penayangan perdana film laris, terjadi ratusan keluhan dari penonton. Banyak penonton yang sudah membayar sukses ternyata mendapati kursi yang mereka bayar telah diberikan kepada penonton lain (double booking / bentrok tiket).

Tuliskan di kertas: (1) pada titik mana letak kegagalan algoritma tersebut, (2) bagaimana dua orang bisa membayar kursi yang sama secara bersamaan, (3) rancangan perbaikan alur dengan mekanisme penguncian sementara (temporary seat holding) dan pembatalan otomatis.

Tujuan latihan

Menganalisis kegagalan logika konkurensi (pemesanan serentak tanpa proteksi locking) dan merancang mekanisme reservasi sementara.

Panduan jawaban / contoh solusi

Titik kegagalan algoritma:

- Kegagalan terjadi karena status kursi dibiarkan tetap "Tersedia" selama rentang waktu 10 menit pembayaran.

- Jika Pengguna A dan Pengguna B sama-sama memilih Kursi C-12, keduanya bisa masuk ke halaman pembayaran. Siapa pun yang menyelesaikan pembayaran lebih dulu (atau jika keduanya membayar hampir bersamaan), status baru diubah, sehingga terjadi double booking.

Rancangan perbaikan alur yang tepat:

1. Saat kursi dipilih dan pengguna klik bayar: lakukan penguncian atomik (atomic lock).

2. Periksa apakah status kursi saat ini benar-benar "Tersedia".

3. Jika ya, ubah status menjadi "Dicadangkan" (Reserved) dan catat waktu kunci (misal batas kedaluwarsa 10 menit). Pengguna lain tidak bisa memilih kursi ini.

4. Jika pembayaran sukses dalam 10 menit: ubah status kursi dari "Dicadangkan" menjadi "Terjual".

5. Jika batas waktu 10 menit habis tanpa konfirmasi pembayaran: lepaskan kunci, kembalikan status kursi menjadi "Tersedia" agar bisa dipesan orang lain.

Poin penting yang seharusnya ada

Kriteria evaluasi

Checklist evaluasi mandiri

Status evaluasi: Belum diperiksa

Soal 3: Menyelesaikan konflik prioritas alokasi tempat tidur rumah sakit

Belum dikerjakan

Deskripsi soal

Sebuah rumah sakit tipe B menghadapi kondisi keterbatasan tempat tidur rawat inap.

Aturan alokasi yang ada:

- Pasien operasi elektif (terjadwal) sudah memesan kamar sejak 2 hari sebelumnya dan akan tiba dalam 2 jam.

- Pasien Instalasi Gawat Darurat (IGD) yang mengalami serangan jantung kritis tiba mendadak dan membutuhkan perawatan intensif dalam hitungan menit untuk menyelamatkan nyawa.

- Pasien penyakit infeksi menular memerlukan ruang isolasi khusus bertekanan negatif.

Kasus darurat: Satu-satunya kamar kosong yang tersisa adalah kamar yang sudah disiapkan untuk pasien operasi elektif. Di saat yang sama, seorang pasien IGD kritis tiba dan membutuhkan kamar tersebut segera.

Tuliskan di kertas: (1) analisis konflik kepentingan antara hak reservasi pasien terjadwal versus keselamatan pasien gawat darurat, (2) skenario kegagalan jika salah satu aturan diterapkan secara kaku, (3) rancangan algoritma triase alokasi yang etis, aman, dan meminimalkan dampak buruk bagi kedua pihak.

Tujuan latihan

Melatih menyelesaikan konflik prioritas multitarget dengan menyusun hierarki keputusan berbasis mitigasi risiko kematian dan keselamatan.

Panduan jawaban / contoh solusi

Analisis konflik prioritas:

- Pasien terjadwal memiliki hak kontraktual reservasi. Jika kamar diambil, operasinya berisiko tertunda dan timbul ketidakpuasan pasien.

- Namun, pasien IGD kritis menghadapi risiko kematian langsung (ancaman nyawa dalam hitungan menit). Berdasarkan etika kedokteran dan hukum, penyelamatan nyawa (life-saving) berada di atas reservasi elektif.

Skenario kegagalan jika kaku:

- Kaku pada reservasi: Pasien IGD meninggal saat menunggu kamar kosong, RS melanggar kewajiban penanganan darurat.

- Kaku membatalkan pasien elektif tanpa solusi: Pasien elektif telantar tanpa kepastian jadwal pengganti.

Rancangan algoritma triase alokasi:

1. Evaluasi tingkat kegawatan pasien IGD: jika kategori merah (kritis), prioritaskan penempatan darurat di kamar yang tersedia.

2. Segera gunakan kamar untuk stabilisasi pasien kritis.

3. Secara paralel, sistem mengaktifkan protokol kontingensi untuk pasien terjadwal: cari kamar alternatif yang sedang dalam proses kepulangan (discharge), tawarkan upgrade kelas kamar tanpa biaya tambahan, atau koordinasikan penjadwalan ulang bersama dokter bedah sebelum pasien tiba.

Poin penting yang seharusnya ada

Kriteria evaluasi

Checklist evaluasi mandiri

Status evaluasi: Belum diperiksa

Soal 4: Validasi defensif sistem pengajuan pinjaman kredit mikro

Belum dikerjakan

Deskripsi soal

Sebuah formulir online pinjaman mikro menerima 3 input dari pemohon:

- penghasilan_bulanan

- jumlah_pinjaman

- tenor_bulan (jangka waktu cicilan)

Algoritma sederhana yang dipakai saat ini:

1. cicilan_per_bulan = jumlah_pinjaman / tenor_bulan

2. Jika cicilan_per_bulan <= penghasilan_bulanan * 0.30:

Status = "Disetujui"

3. Jika tidak: Status = "Ditolak"

Masalah: Sistem berulang kali crash dan menghasilkan keputusan aneh saat diuji dengan data pengguna yang tidak biasa.

Tuliskan di kertas: (1) minimal 5 jenis input anomali/tidak valid yang dapat merusak algoritma di atas (misal: angka negatif, tenor 0, nilai huruf, angka raksasa), (2) apa akibat yang terjadi pada masing-masing anomali jika algoritma tetap berjalan, (3) susun algoritma validasi defensif lengkap yang menolak input tidak valid sebelum rumus cicilan dihitung.

Tujuan latihan

Melatih kemampuan berpikir defensif terhadap berbagai anomali masukan dan menerapkan pola validasi fail-fast.

Panduan jawaban / contoh solusi

Daftar 5 Jenis Anomali Input dan Akibatnya:

1. tenor_bulan = 0: Mengakibatkan error Division by Zero pada baris 1 (crash fatal).

2. tenor_bulan atau penghasilan bernilai negatif (misal -12): Cicilan menjadi negatif, sehingga kondisi `<= penghasilan * 0.3` bisa salah disetujui.

3. Nilai berupa teks/kosong (string kosong / bukan angka): Memicu TypeError saat operasi aritmetika.

4. Tenor berbentuk bilangan desimal (misal 2.5 bulan): Menghasilkan jangka waktu angsuran yang tidak realistis.

5. Jumlah pinjaman melebihi batas batas wajar (misal 100 triliun): Menyebabkan integer overflow atau pembobolan plafon kredit.

Algoritma Validasi Defensif:

1. Periksa format: pastikan ketiga input adalah bilangan numerik.

2. Periksa batas nilai:

- Pastikan penghasilan_bulanan >= 1.000.000.

- Pastikan jumlah_pinjaman >= 500.000 dan <= 20.000.000 (batas plafon mikro).

- Pastikan tenor_bulan adalah bilangan bulat antara 1 sampai 36.

3. Jika ada syarat langkah 1 atau 2 yang tidak terpenuhi: tampilkan pesan kesalahan spesifik dan tolak permohonan tanpa menghitung cicilan.

4. Jika lolos seluruh validasi: hitung cicilan_per_bulan = jumlah_pinjaman / tenor_bulan.

5. Jika cicilan_per_bulan <= penghasilan_bulanan * 0.30: Status = "Disetujui", jika tidak: "Ditolak".

Poin penting yang seharusnya ada

Kriteria evaluasi

Checklist evaluasi mandiri

Status evaluasi: Belum diperiksa

Soal 5: Optimasi rute kurir multi-paket dengan batas muatan dan waktu

Belum dikerjakan

Deskripsi soal

Seorang kurir ekspres membawa sepeda motor dengan ketentuan:

- Kapasitas maksimal boks motor: 20 kg.

- Waktu kerja sif: maksimal 4 jam (240 menit).

- Tersedia 5 paket yang siap diantar ke pelanggan dengan data:

* Paket A: berat 4 kg, durasi antar 30 menit, denda telat Rp50.000

* Paket B: berat 12 kg, durasi antar 90 menit, denda telat Rp20.000

* Paket C: berat 6 kg, durasi antar 45 menit, denda telat Rp80.000

* Paket D: berat 8 kg, durasi antar 60 menit, denda telat Rp70.000

* Paket E: berat 5 kg, durasi antar 40 menit, denda telat Rp60.000

Usulan awal pengawas: "Antar selalu paket dengan durasi tercepat/jarak terdekat terlebih dahulu."

Tuliskan di kertas: (1) evaluasi mengapa strategi usulan pengawas gagal memaksimalkan efisiensi dan dapat menimbulkan total denda besar, (2) uji kombinasi paket yang memenuhi batasan muatan (<= 20 kg) dan waktu (<= 240 menit), (3) rancang urutan pengantaran paket yang paling tepat untuk meminimalkan denda.

Tujuan latihan

Menganalisis kelemahan algoritma greedy sederhana terhadap masalah optimasi multi-kendala dan merancang solusi evaluatif.

Panduan jawaban / contoh solusi

Kelemahan Strategi Durasi Tercepat Murni:

- Strategi hanya melihat durasi tanpa mempertimbangkan denda keterlambatan dan kapasitas beban. Paket dengan durasi sedikit lebih lama tetapi denda sangat besar bisa terabaikan, menyebabkan total denda membengkak.

Evaluasi Kombinasi Muatan (Batas <= 20 kg dan Waktu <= 240 menit):

- Total seluruh 5 paket: 4 + 12 + 6 + 8 + 5 = 35 kg (tidak mungkin dibawa sekaligus).

- Opsi paket yang dipilih harus bernilai denda terbesar dan memenuhi berat <= 20 kg serta waktu <= 240 menit.

- Pilihan Paket C (6kg, 45m, 80rb) + D (8kg, 60m, 70rb) + E (5kg, 40m, 60rb): Total berat = 19 kg (aman <= 20 kg). Total waktu = 145 menit (aman <= 240 menit). Total denda yang terselamatkan = Rp210.000.

- Menambahkan Paket A (4kg): berat jadi 23 kg (kelebihan muatan).

Rancangan Urutan Pengantaran:

1. Bawa Paket C, D, dan E dalam satu perjalanan awal.

2. Urutan antar dari yang dendanya paling tinggi / paling kritis: C (45 menit) -> D (60 menit) -> E (40 menit).

3. Sisa paket (A dan B) dijadwalkan pada perjalanan sif berikutnya atau didelegasikan ke kurir lain.

Poin penting yang seharusnya ada

Kriteria evaluasi

Checklist evaluasi mandiri

Status evaluasi: Belum diperiksa

‹ Kembali ke level Kembali ke tahap