Panduan Pengujian (Testing) — BAB 11
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah mengikuti halaman ini, kamu diharapkan dapat:
- Melakukan pengujian fungsional secara manual (manual testing) pada aplikasi SIAKAD.
- Menguji skenario batas (edge cases) seperti validasi nilai 150 atau NIS duplikat.
- Menguji kegagalan jaringan Fetch API saat koneksi internet dinonaktifkan.
Pendahuluan
Section titled “Pendahuluan”Sebuah program yang selesai ditulis belum tentu bebas dari bug. Sebagai software engineer, kita harus melakukan pengujian (testing) secara disiplin untuk memastikan seluruh fitur berjalan sesuai dengan dokumen requirements.
Penjelasan
Section titled “Penjelasan”Pengujian di aplikasi konsol dilakukan dengan mengetikkan opsi menu di terminal secara terencana, lalu memeriksa apakah keluaran datanya sudah tepat. Kita harus menguji skenario sukses (normal flow) dan skenario gagal/batas (exception flow) untuk memastikan keandalan program.
Analogi Kehidupan Sehari-hari: Uji Coba Kualitas Motor Baru di Pabrik
Section titled “Analogi Kehidupan Sehari-hari: Uji Coba Kualitas Motor Baru di Pabrik”Menguji aplikasi seperti tes kendali mutu (quality control) motor baru di pabrik:
Uji Kendali Mutu Motor:- Masukkan kunci kontak ──► Starter hidup? (Test 1)- Tarik tuas gas ──► Roda berputar lancar? (Test 2)- Tarik tuas rem mendadak ──► Motor berhenti aman? (Test 3)Jika motor langsung dilepas ke dealer tanpa tes rem, remnya bisa blong di jalan raya dan membahayakan nyawa pengendara. Pengujian manual menjamin aplikasimu “aman dikendarai” oleh pengguna.
Visual Illustration: Alur Eksekusi Pengujian
Section titled “Visual Illustration: Alur Eksekusi Pengujian”User input data ──► Sistem memproses ──► Bandingkan Output Aktual dengan Output HarapanLive Coding: Skenario Uji Coba Manual
Section titled “Live Coding: Skenario Uji Coba Manual”Jalankan aplikasi di terminal dengan perintah tsx src/main.ts, lalu lakukan langkah pengujian berikut:
- Uji Tampilan Laporan: Pilih Menu
1. Harus muncul 2 siswa dummy. - Uji Tambah Siswa: Pilih Menu
2. Masukkan Nama:"Citra", NIS:"1003", Kelas:"XI RPL 1". Harus muncul pesan sukses. - Uji Nilai Lebih dari 100: Pilih Menu
3, masukkan NIS"1001", Nilai"150". Harus muncul pesan:[Validasi]: Nilai 150 tidak valid!. - Uji Fetch Asynchronous: Pastikan internet aktif, pilih Menu
5, masukkan ID"1". Harus mencetak judul tugas"delectus aut autem".
Output
Section titled “Output”Hasil cetak visual yang diharapkan saat validasi batas nilai 150 terpicu:
---
UPDATE NILAI SISWA --- Masukkan NIS Siswa: 1001 Masukkan Nilai Baru (0-100): 150 [Validasi]: Nilai 150 tidak valid untuk Putra! [Service]: Berhasil memperbarui nilai Putra.Penjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”[Validasi]: Nilai 150 tidak...: Pesan ini keluar langsung dari chip pengaman setter di dalamSiswaClasskarena mendeteksi angka di atas 100.[Service]: Berhasil memperbarui...: Service tetap berjalan, namun karena nilai ditolak oleh objek, properti_nilaiRataRatadi dalam objek tetap bernilai aman (misal: 0 atau nilai lama), tidak berubah menjadi 150.
Common Mistakes
Section titled “Common Mistakes”- Menguji Hanya Skenario Sukses: Lupa menguji input-input aneh (seperti memasukkan huruf pada kolom nilai). Selalu uji apa yang terjadi jika pengguna salah mengetikkan input.
Ringkasan
Section titled “Ringkasan”- Pengujian manual memastikan program bekerja sesuai kebutuhan requirements.
- Skenario batas (seperti nilai di luar 0-100 atau data duplikat) wajib diuji coba secara sengaja.
- Penanganan kegagalan async (offline fetch) terbukti menjaga stabilitas aplikasi.
Latihan
Section titled “Latihan”- Jalankan seluruh skenario uji coba di atas pada komputer kamu.
- Catat hasilnya dan pastikan semua fitur berfungsi 100% tanpa error crash.