π’ Pendahuluan
Dalam pengembangan perangkat lunak, membuat aplikasi sampai dapat dijalankan bukan berarti pekerjaan telah selesai. Sebuah sistem harus melalui proses pengujian untuk memastikan bahwa fungsi yang dibangun telah berjalan sesuai kebutuhan, menghasilkan keluaran yang benar, mampu menangani kesalahan pengguna, serta dapat digunakan dengan baik sebelum diterapkan pada lingkungan sebenarnya.
Testing atau pengujian perangkat lunak merupakan aktivitas sistematis untuk mengevaluasi perangkat lunak berdasarkan kebutuhan, spesifikasi, dan perilaku yang diharapkan. Dalam praktik pengembangan perangkat lunak, pengujian dapat dilakukan dengan berbagai pendekatan.
Tiga pendekatan yang sangat penting untuk dipahami oleh mahasiswa Informatika adalah:
- Black-Box Testing
- White-Box Testing
- Gray-Box Testing
Ketiga pendekatan tersebut memiliki karakteristik, tujuan, teknik, dan tingkat pengetahuan terhadap sistem yang berbeda.
Secara sederhana, perbedaannya dapat digambarkan sebagai berikut:

Black-box berfokus pada apa yang dilakukan sistem, white-box berfokus pada bagaimana sistem bekerja di dalam, sedangkan gray-box memanfaatkan sebagian pengetahuan internal sistem untuk membuat pengujian lebih terarah.
π’ 1. Tujuan Pembelajaran
Setelah mempelajari materi ini, mahasiswa diharapkan mampu:
- Menjelaskan pengertian software testing.
- Menjelaskan tujuan pengujian perangkat lunak.
- Menjelaskan perbedaan error, defect, bug, dan failure.
- Menjelaskan konsep black-box testing.
- Menerapkan teknik black-box testing.
- Menyusun test case.
- Melakukan equivalence partitioning.
- Melakukan boundary value analysis.
- Membuat decision table.
- Menjelaskan konsep white-box testing.
- Membuat flowchart program.
- Membuat control flow graph.
- Menghitung cyclomatic complexity.
- Menentukan independent path.
- Melakukan statement coverage dan branch coverage.
- Menjelaskan gray-box testing.
- Menggunakan informasi internal sebagian dalam pengujian.
- Membuat bug report.
- Melakukan retesting dan regression testing.
- Menentukan kesiapan sistem untuk diimplementasikan.
π’ 2. Apa Itu Software Testing?
Software testing adalah proses untuk mengevaluasi apakah perangkat lunak telah bekerja sesuai dengan kebutuhan dan spesifikasi yang telah ditentukan.
Pengujian dilakukan dengan memberikan input tertentu kepada sistem, menjalankan fungsi tertentu, kemudian membandingkan hasil aktual dengan hasil yang seharusnya.

Sebagai contoh, sebuah sistem akademik memiliki fitur untuk menghitung nilai mahasiswa.
Jika mahasiswa memperoleh:
- Tugas = 80
- UTS = 75
- UAS = 85
maka sistem harus menghasilkan nilai akhir sesuai rumus yang telah ditentukan.
Jika hasil sistem berbeda dengan hasil perhitungan yang seharusnya, maka perlu dilakukan investigasi.
π‘ 3. Mengapa Software Testing Penting?
Testing penting karena perangkat lunak dapat mengandung kesalahan meskipun program dapat dijalankan.
Contohnya:
- Form login dapat dibuka tetapi password salah tetap diterima.
- Form pendaftaran dapat menyimpan data kosong.
- Sistem penjualan menghasilkan total transaksi yang salah.
- Mahasiswa biasa dapat mengakses halaman administrator.
- Sistem menerima nilai ujian lebih dari 100.
- Data dapat dihapus tanpa konfirmasi.
- Sistem mengalami error ketika database tidak tersedia.
Oleh karena itu, testing bertujuan untuk meningkatkan kepercayaan terhadap kualitas sistem.
Contoh sederhana
Bayangkan seorang programmer membuat sistem pembayaran.
Program dapat melakukan:
Harga Γ Jumlah = Total
Tetapi programmer secara tidak sengaja menulis:
$total = $harga + $jumlah;
Program tetap dapat dijalankan.
Tidak muncul error PHP.
Namun hasilnya salah.
Misalnya:
Harga = Rp50.000
Jumlah = 3
Hasil seharusnya:
Rp150.000
Tetapi program menghasilkan:
Rp50.003
Kesalahan seperti ini belum tentu ditemukan jika sistem hanya diuji secara sederhana.
π’ 4. Error, Defect, Bug, dan Failure
Dalam software testing terdapat beberapa istilah penting.
| Istilah | Penjelasan |
|---|---|
| Error | Kesalahan manusia dalam memahami, merancang, atau menulis program |
| Defect | Kekurangan atau cacat yang terdapat pada perangkat lunak |
| Bug | Istilah umum untuk menyebut defect |
| Failure | Kondisi ketika sistem menghasilkan perilaku yang tidak sesuai ketika dijalankan |
| Test Case | Skenario yang digunakan untuk melakukan pengujian |
| Expected Result | Hasil yang seharusnya diperoleh |
| Actual Result | Hasil yang benar-benar diperoleh |
Contohnya:
Programmer salah menulis rumus.
Kesalahan tersebut merupakan error.
Kesalahan yang masuk ke dalam kode menjadi defect/bug.
Ketika program dijalankan dan menghasilkan nilai yang salah, kondisi tersebut menjadi failure.
π’ 5. Testing dalam Siklus Pengembangan Sistem

π’ 6. Jenis-Jenis Testing
Selain black-box, white-box, dan gray-box, mahasiswa juga perlu mengetahui beberapa jenis pengujian lainnya.
| Jenis Testing | Tujuan |
|---|---|
| Unit Testing | Menguji bagian kecil/fungsi program |
| Integration Testing | Menguji hubungan antar-modul |
| System Testing | Menguji sistem secara keseluruhan |
| Acceptance Testing | Memastikan sistem sesuai kebutuhan pengguna |
| Regression Testing | Memastikan perubahan tidak merusak fungsi lama |
| Performance Testing | Menguji performa sistem |
| Security Testing | Menguji keamanan |
| Usability Testing | Menguji kemudahan penggunaan |
Black-box, white-box, dan gray-box lebih tepat dipahami sebagai pendekatan/perspektif pengujian, bukan sekadar nama jenis pengujian.
π’ 7. Black-Box Testing
π Pengertian
Black-box testing adalah pendekatan pengujian yang berfokus pada fungsi dan perilaku sistem tanpa harus mengetahui struktur internal source code.
Tester melihat sistem dari luar.
Gambaran sederhananya:

Tester cukup mengetahui:
- apa input yang diberikan;
- apa fungsi yang dijalankan;
- apa hasil yang diharapkan;
- apa hasil aktual.
πΌοΈ Ilustrasi Black-Box Testing
5
π‘ 8. Contoh Black-Box Testing
Misalkan terdapat halaman login.
Requirement:
Pengguna dapat masuk ke sistem apabila username dan password benar.
Test case dapat dibuat sebagai berikut:
| No | Username | Password | Expected Result |
|---|---|---|---|
| 1 | admin | admin123 | Login berhasil |
| 2 | admin | salah | Login ditolak |
| 3 | salah | admin123 | Login ditolak |
| 4 | kosong | admin123 | Validasi |
| 5 | admin | kosong | Validasi |
| 6 | kosong | kosong | Validasi |
Tester tidak harus mengetahui bagaimana program melakukan query ke database.
Yang diperiksa adalah:
Input β Perilaku Sistem β Output
π’ 9. Teknik Black-Box Testing
Teknik yang penting dipahami mahasiswa antara lain:
- Equivalence Partitioning
- Boundary Value Analysis
- Decision Table Testing
- State Transition Testing
- Use Case Testing
- Error Guessing
Mari kita bahas satu per satu.
π‘ 10. Equivalence Partitioning
Equivalence Partitioning adalah teknik membagi data input menjadi beberapa kelompok yang memiliki karakteristik atau perilaku yang sama.
Misalnya sistem menerima nilai ujian:
0 sampai 100
Maka dapat dibagi menjadi:
| Kategori | Nilai |
|---|---|
| Invalid | < 0 |
| Valid | 0β100 |
| Invalid | > 100 |
Kita tidak harus menguji:
0, 1, 2, 3, 4, …, 100.
Cukup mengambil beberapa nilai sebagai perwakilan.
Contohnya:
| Input | Kategori | Expected |
|---|---|---|
| -1 | Invalid | Ditolak |
| 50 | Valid | Diterima |
| 101 | Invalid | Ditolak |
π‘ 11. Boundary Value Analysis
Boundary Value Analysis atau BVA berfokus pada nilai yang berada di sekitar batas.
Misalnya umur yang diperbolehkan:
17β60 tahun
Maka nilai penting adalah:
- 16
- 17
- 18
- 59
- 60
- 61
Diagram:

Test case:
| Input | Expected |
|---|---|
| 16 | Ditolak |
| 17 | Diterima |
| 18 | Diterima |
| 60 | Diterima |
| 61 | Ditolak |
Teknik ini sangat penting karena kesalahan pemrograman sering terjadi pada kondisi batas.
π‘ 12. Decision Table Testing
Decision table digunakan ketika output sistem dipengaruhi oleh kombinasi beberapa kondisi.
Contoh:
Sistem memberikan diskon apabila:
- pelanggan merupakan member;
- total pembelian minimal Rp500.000.
Tabel keputusan:
| Member | Total β₯ Rp500.000 | Diskon |
|---|---|---|
| Tidak | Tidak | Tidak |
| Tidak | Ya | Tidak |
| Ya | Tidak | Tidak |
| Ya | Ya | Ya |
Dengan tabel tersebut, tester dapat membuat test case berdasarkan kombinasi kondisi.
π‘ 13. State Transition Testing
State transition testing digunakan ketika sistem memiliki beberapa keadaan atau state.
Contoh status akun:

Contoh pengujian:
| Kondisi | State Awal | Aksi | State Akhir |
|---|---|---|---|
| 1 | Aktif | Login benar | Aktif |
| 2 | Aktif | Password salah | Aktif |
| 3 | Aktif | Salah berkali-kali | Terkunci |
| 4 | Terkunci | Login benar | Tetap terkunci |
| 5 | Terkunci | Reset | Aktif |
π’ 14. Praktikum Black-Box Testing
Kasus: Form Pendaftaran Mahasiswa
Buat aplikasi sederhana dengan ketentuan:
- Nama wajib diisi.
- Email wajib diisi.
- Umur minimal 17 tahun.
- Password minimal 8 karakter.
Test case
| No | Nama | Umur | Password | Expected | |
|---|---|---|---|---|---|
| 1 | Ahmad | ahmad@email.com | 20 | informatika | Valid |
| 2 | kosong | ahmad@email.com | 20 | informatika | Invalid |
| 3 | Ahmad | kosong | 20 | informatika | Invalid |
| 4 | Ahmad | ahmad@email.com | 16 | informatika | Invalid |
| 5 | Ahmad | ahmad@email.com | 20 | abc | Invalid |
Tugas
Mahasiswa harus:
- Membuat form.
- Menjalankan test case.
- Mengisi actual result.
- Membandingkan expected dan actual.
- Menentukan PASS atau FAIL.
- Mengambil screenshot.
- Membuat kesimpulan.
π’ 15. White-Box Testing
π Pengertian
White-box testing merupakan pendekatan pengujian yang memperhatikan struktur internal program.
Jika black-box bertanya:
“Apakah hasil sistem benar?”
White-box juga bertanya:
“Apakah logika dan jalur program sudah diuji?”
Tester dapat menganalisis:
- source code;
- statement;
- condition;
- branch;
- loop;
- control flow;
- path;
- kompleksitas program.
πΌοΈ Ilustrasi White-Box Testing
6
π‘ 16. Contoh Program White-Box
Misalnya terdapat fungsi:
function cekNilai($nilai) {
if ($nilai >= 80) {
return "A";
} elseif ($nilai >= 70) {
return "B";
} elseif ($nilai >= 60) {
return "C";
} else {
return "D";
}
Program tersebut mempunyai beberapa keputusan.
Flowchart sederhananya:

π‘ 17. Control Flow Graph
Dari flowchart tersebut dapat dibuat Control Flow Graph atau CFG.

Node menunjukkan bagian atau keputusan program.
Edge menunjukkan hubungan aliran eksekusi.
π’ 18. Cyclomatic Complexity
Cyclomatic Complexity digunakan untuk mengukur kompleksitas logika program dan membantu menentukan jumlah independent path yang perlu dipertimbangkan dalam white-box testing.
Rumus:
V(G) = E β N + 2P
Untuk satu program yang terhubung:
V(G) = E β N + 2
Cara sederhana untuk program tertentu:
Cyclomatic Complexity = jumlah decision + 1
Pada contoh sebelumnya terdapat tiga decision:
- Nilai β₯ 80
- Nilai β₯ 70
- Nilai β₯ 60
Maka:
V(G) = 3 + 1 = 4
Artinya terdapat minimal empat jalur independen yang perlu dipertimbangkan.
π‘ 19. Independent Path
Contoh independent path:
Path 1
START β >=80 β A
Path 2
START β <80 β >=70 β B
Path 3
START β <80 β <70 β >=60 β C
Path 4
START β <80 β <70 β <60 β D
Test case:
| Test | Nilai | Path | Expected |
|---|---|---|---|
| 1 | 90 | Path 1 | A |
| 2 | 75 | Path 2 | B |
| 3 | 65 | Path 3 | C |
| 4 | 50 | Path 4 | D |
π’ 20. Statement Coverage
Statement Coverage mengukur seberapa banyak statement dalam program telah dijalankan oleh test case.
Rumus:
Statement Coverage = Jumlah statement yang dieksekusi / Total statement Γ 100%
Contoh:
Total statement = 20
Statement yang dijalankan = 18
Maka:
18 / 20 Γ 100% = 90%
Artinya 90% statement telah dieksekusi oleh test suite.
Namun perlu diperhatikan bahwa coverage tinggi tidak otomatis berarti software bebas bug.
π’ 21. Branch Coverage
Branch Coverage berfokus pada percabangan.
Contoh:
if ($umur >= 17) {
echo “Diterima”;
} else {
echo “Ditolak”;
}
Terdapat dua branch:
- True
- False
Maka minimal harus terdapat test:
| Umur | Branch |
|---|---|
| 20 | True |
| 15 | False |
Dengan demikian kedua cabang telah diuji.
π’ 22. Praktikum White-Box
Gunakan kode berikut:
function hitungDiskon($total, $member) {
if ($member == true) {
if ($total >= 500000) {
return $total * 0.90;
}
return $total * 0.95;
}
return $total;
}
Tugas mahasiswa
- Identifikasi decision.
- Buat flowchart.
- Buat Control Flow Graph.
- Tentukan node.
- Tentukan edge.
- Hitung Cyclomatic Complexity.
- Tentukan independent path.
- Buat test case.
- Jalankan program.
- Dokumentasikan hasil.
Contoh test:
| No | Total | Member | Expected |
|---|---|---|---|
| 1 | 600000 | Ya | 540000 |
| 2 | 300000 | Ya | 285000 |
| 3 | 600000 | Tidak | 600000 |
π’ 23. Gray-Box Testing
π Pengertian
Gray-box testing merupakan pendekatan yang berada di antara black-box dan white-box.
Tester tidak sepenuhnya “buta” terhadap sistem, tetapi juga tidak harus mengetahui seluruh source code.
Tester dapat mengetahui sebagian informasi seperti:
- struktur database;
- arsitektur aplikasi;
- API;
- mekanisme autentikasi;
- role pengguna;
- session;
- aturan validasi;
- hubungan antar-modul.
Kemudian informasi tersebut digunakan untuk membuat test case yang lebih terarah.
πΌοΈ Ilustrasi Gray-Box Testing
6
π‘ 24. Contoh Gray-Box Testing
Misalnya tester mengetahui struktur database:

Tester juga mengetahui bahwa terdapat dua role:
adminuser
Namun tester tidak mengetahui seluruh source code.
Berdasarkan informasi tersebut, tester dapat menguji:
- Login admin.
- Login user.
- Akses menu admin.
- Akses menu user.
- User mencoba membuka URL admin.
- Logout.
- Akses halaman setelah logout.
- Session.
- Status akun.
- Validasi input.
π’ 25. Perbandingan Black-Box, White-Box, dan Gray-Box
| Aspek | Black-Box | White-Box | Gray-Box |
|---|---|---|---|
| Source code | Tidak perlu | Diketahui | Sebagian |
| Struktur internal | Tidak dianalisis | Dianalisis | Sebagian |
| Fokus | Fungsi | Logika | Fungsi + internal sebagian |
| Sudut pandang | Pengguna | Developer/tester teknis | Tester teknis |
| Test case | Berdasarkan requirement | Berdasarkan struktur kode | Berdasarkan requirement + informasi internal |
| CFG | Tidak utama | Ya | Dapat digunakan |
| Cyclomatic Complexity | Tidak utama | Ya | Dapat digunakan |
| Database | Tidak harus tahu | Umumnya diketahui | Sebagian diketahui |
| Cocok untuk | Functional testing | Structural testing | Integration/security |
| Kompleksitas | Relatif sederhana | Lebih teknis | Menengah |
π’ 26. Studi Kasus: Sistem Informasi Akademik
Kita gunakan satu studi kasus agar mahasiswa dapat memahami ketiga metode secara bersamaan.
Sistem memiliki modul:
- Login.
- Dashboard.
- Data mahasiswa.
- Data mata kuliah.
- KRS.
- Nilai.
- Laporan.
- Logout.
π‘ 27. Black-Box pada Modul Login
Tester tidak melihat source code.
Test case:
| ID | Skenario | Input | Expected |
|---|---|---|---|
| BB-01 | Login benar | Username/password benar | Berhasil |
| BB-02 | Password salah | Password salah | Ditolak |
| BB-03 | Username kosong | Username kosong | Validasi |
| BB-04 | Password kosong | Password kosong | Validasi |
| BB-05 | Keduanya kosong | Kosong | Validasi |
| BB-06 | User nonaktif | Akun nonaktif | Ditolak |
π‘ 28. White-Box pada Modul Login
Misalnya source code memiliki struktur:
if (empty($username) || empty($password)) {
return “Input wajib diisi”;
}
$user = findUser($username);
if (!$user) {
return “User tidak ditemukan”;
}
if (!password_verify($password, $user[‘password’])) {
return “Password salah”;
}
if ($user[‘status’] != ‘aktif’) {
return “Akun tidak aktif”;
}
return “Login berhasil”;
Dari struktur tersebut dapat diketahui terdapat beberapa kondisi yang perlu diuji.
Contohnya:
| Kondisi | Test |
|---|---|
| Input kosong | Ya |
| User ditemukan | Ya |
| User tidak ditemukan | Ya |
| Password benar | Ya |
| Password salah | Ya |
| Akun aktif | Ya |
| Akun nonaktif | Ya |
π‘ 29. Gray-Box pada Modul Login
Tester mengetahui bahwa database mempunyai:

Tester kemudian mengembangkan test case berdasarkan pengetahuan tersebut.
Contoh:
| ID | Skenario | Expected |
|---|---|---|
| GB-01 | Login admin aktif | Berhasil |
| GB-02 | Login user aktif | Berhasil |
| GB-03 | Login akun nonaktif | Ditolak |
| GB-04 | User mengakses URL admin | Ditolak |
| GB-05 | Logout kemudian akses dashboard | Ditolak |
π’ 30. Testing Hak Akses
Pengujian hak akses sangat penting dalam aplikasi yang memiliki role.
Misalnya:

Pertanyaan penting:
Apakah USER dapat membuka URL ADMIN secara langsung?
Misalnya user mencoba:
/admin/mahasiswa
Sistem seharusnya menolak akses.
π’ 31. Testing dan Implementasi Sistem
Setelah proses testing selesai, sistem dapat dipersiapkan untuk deployment.
Alur:

Testing bukan berarti:
“Tidak ada error ketika saya klik.”
Testing harus menghasilkan bukti yang terdokumentasi.
π‘ 32. Checklist Sebelum Deployment
| No | Pemeriksaan | Status |
|---|---|---|
| 1 | Fungsi utama diuji | β |
| 2 | Input valid diuji | β |
| 3 | Input invalid diuji | β |
| 4 | Boundary diuji | β |
| 5 | Branch diuji | β |
| 6 | Hak akses diuji | β |
| 7 | Database diuji | β |
| 8 | Error handling diuji | β |
| 9 | Logout diuji | β |
| 10 | Session diuji | β |
| 11 | Validasi form diuji | β |
| 12 | Regression testing | β |
| 13 | Bug kritis diperbaiki | β |
| 14 | Dokumentasi tersedia | β |
| 15 | Sistem siap deployment | β |
π’ 33. Dokumentasi Test Case
Format dokumentasi yang dapat digunakan:
| ID | Modul | Skenario | Input | Expected | Actual | Status |
|---|---|---|---|---|---|---|
| TC-001 | Login | Login valid | Akun benar | Berhasil | Berhasil | PASS |
| TC-002 | Login | Password salah | Password salah | Ditolak | Ditolak | PASS |
| TC-003 | Login | Username kosong | Kosong | Validasi | Validasi | PASS |
| TC-004 | Login | Akun nonaktif | Akun nonaktif | Ditolak | Berhasil | FAIL |
Jika:
Expected Result β Actual Result
maka test case dapat dinyatakan:
FAIL
π’ 34. Bug Report
Jika ditemukan masalah, buat laporan.
Contoh:
| Field | Isi |
|---|---|
| Bug ID | BUG-001 |
| Modul | Login |
| Judul | Akun nonaktif dapat login |
| Severity | High |
| Priority | High |
| Langkah | Login menggunakan akun nonaktif |
| Expected | Login ditolak |
| Actual | Login berhasil |
| Status | Open |
Narasi bug
Pada pengujian modul login ditemukan bahwa pengguna dengan status akun nonaktif masih dapat melakukan login ke dalam sistem. Berdasarkan requirement, akun nonaktif seharusnya tidak memiliki akses ke sistem. Defect tersebut perlu diperbaiki sebelum sistem diimplementasikan ke lingkungan produksi.
π’ 35. Severity dan Priority
Severity dan priority merupakan dua istilah yang berbeda.
Severity menunjukkan tingkat dampak sebuah defect terhadap sistem.
Priority menunjukkan seberapa cepat defect tersebut harus diperbaiki.
| Severity | Priority | Contoh |
|---|---|---|
| Critical | High | Sistem tidak dapat digunakan |
| High | High | User dapat masuk sebagai admin |
| Medium | Medium | Perhitungan tertentu salah |
| Low | Low | Typo |
| Low | High | Kesalahan informasi penting pada halaman utama |
π’ 36. Retesting
Setelah programmer memperbaiki bug, lakukan retesting.
Contohnya:

Retesting bertujuan memastikan bug yang sebelumnya ditemukan benar-benar telah diperbaiki.
π’ 37. Regression Testing
Regression testing berbeda dengan retesting.
Retesting:
Memastikan bug tertentu telah diperbaiki.
Regression testing:
Memastikan perubahan yang dilakukan tidak menyebabkan fungsi lain rusak.
Misalnya programmer memperbaiki login.
Maka jangan hanya menguji login.
Periksa juga:
- dashboard;
- session;
- logout;
- role;
- menu;
- database;
- halaman lain yang berhubungan.
π’ 38. Tutorial Praktikum PHP Sederhana
Untuk praktik awal, mahasiswa dapat membuat aplikasi sederhana.
Struktur folder:

File index.php
<!DOCTYPE html>
<html>
<head>
<title>Testing Form Nilai</title>
</head>
<body>
<h2>Form Nilai Mahasiswa</h2>
<form method=”post” action=”proses.php”>
<label>Nama</label>
<input type=”text” name=”nama”>
<br><br>
<label>Nilai</label>
<input type=”number” name=”nilai”>
<br><br>
<button type=”submit”>Proses</button>
</form>
</body>
</html>
File proses.php
<?php
$nama = $_POST[‘nama’] ?? ”;
$nilai = $_POST[‘nilai’] ?? ”;
if ($nama == ”) {
echo “Nama wajib diisi.”;
} elseif ($nilai == ”) {
echo “Nilai wajib diisi.”;
} elseif ($nilai < 0 || $nilai > 100) {
echo “Nilai harus berada antara 0 sampai 100.”;
} elseif ($nilai >= 80) {
echo “Nilai A”;
} elseif ($nilai >= 70) {
echo “Nilai B”;
} elseif ($nilai >= 60) {
echo “Nilai C”;
} else {
echo “Nilai D”;
}
π‘ 39. Black-Box Testing Program PHP
Mahasiswa tidak perlu melihat kode terlebih dahulu.
Coba:
| No | Nama | Nilai | Expected |
|---|---|---|---|
| 1 | Ahmad | 90 | A |
| 2 | Ahmad | 80 | A |
| 3 | Ahmad | 79 | B |
| 4 | Ahmad | 70 | B |
| 5 | Ahmad | 69 | C |
| 6 | Ahmad | 60 | C |
| 7 | Ahmad | 59 | D |
| 8 | Ahmad | 0 | D |
| 9 | Ahmad | 100 | A |
| 10 | Ahmad | 101 | Error |
| 11 | Ahmad | -1 | Error |
| 12 | kosong | 90 | Error |
Perhatikan bahwa nilai:
79, 80, 69, 70, 59, 60, 0, 100, 101
merupakan contoh pengujian nilai batas.
π‘ 40. White-Box Testing Program PHP
Sekarang source code diperiksa.
Terdapat beberapa kondisi:

Mahasiswa kemudian membuat:
- Flowchart.
- Control Flow Graph.
- Cyclomatic Complexity.
- Independent Path.
- Test Case.
π‘ 41. Gray-Box Testing Program PHP
Sekarang anggap tester hanya diberikan informasi:

Tester tidak diberikan keseluruhan source code.
Dengan informasi tersebut, tester dapat menguji:
- request POST;
- parameter kosong;
- parameter negatif;
- parameter lebih dari 100;
- parameter tidak sesuai;
- akses langsung ke proses.php.
Dengan demikian tester menggunakan pengetahuan internal sebagian.
π’ 42. Praktikum Proyek Kelompok
Mahasiswa dibagi menjadi kelompok.
Setiap kelompok memilih salah satu aplikasi:
- Sistem Informasi Akademik.
- Sistem Penjualan.
- Sistem Perpustakaan.
- Sistem Inventaris.
- Sistem Penggajian.
- Sistem Klinik.
- Sistem Laundry.
- Sistem Pendaftaran Mahasiswa.
Aplikasi minimal mempunyai:
- Login.
- CRUD.
- Database.
- Validasi.
- Role pengguna.
- Laporan.
π‘ 43. Ketentuan Pengujian Proyek
Black-Box
Minimal:
20 test case
Mencakup:
- input valid;
- input invalid;
- input kosong;
- boundary;
- kombinasi kondisi;
- hak akses.
White-Box
Minimal:
1 fungsi yang memiliki beberapa percabangan
Mahasiswa harus membuat:
- source code;
- flowchart;
- CFG;
- cyclomatic complexity;
- independent path;
- test case.
Gray-Box
Minimal:
10 test case
Berdasarkan informasi internal sebagian.
π’ 44. Format Laporan Praktikum
BAB I β Pendahuluan
Berisi:
- latar belakang;
- identifikasi masalah;
- tujuan;
- ruang lingkup.
BAB II β Analisis Sistem
Berisi:
- deskripsi aplikasi;
- kebutuhan fungsional;
- kebutuhan nonfungsional;
- use case;
- rancangan sistem.
BAB III β Black-Box Testing
Berisi:
- metode;
- test scenario;
- test case;
- screenshot;
- actual result;
- analisis.
BAB IV β White-Box Testing
Berisi:
- source code;
- flowchart;
- CFG;
- node;
- edge;
- cyclomatic complexity;
- independent path;
- test case.
BAB V β Gray-Box Testing
Berisi:
- informasi internal yang diketahui;
- test scenario;
- test case;
- hasil;
- analisis.
BAB VI β Implementasi
Berisi:
- lingkungan implementasi;
- server;
- database;
- konfigurasi;
- deployment.
BAB VII β Hasil Pengujian
Berisi:
- defect;
- bug report;
- perbaikan;
- retesting;
- regression testing.
BAB VIII β Kesimpulan
Berisi kesimpulan terhadap kualitas dan kesiapan sistem.
π’ 45. Latihan Individu
Latihan 1
Jelaskan perbedaan black-box, white-box, dan gray-box testing.
Latihan 2
Sebuah sistem menerima nilai antara 0β100.
Buat:
- equivalence partitioning;
- boundary value analysis.
Latihan 3
Sebuah sistem menerima umur 18β60 tahun.
Tentukan minimal enam nilai untuk boundary testing.
Latihan 4
Perhatikan kode:
if ($nilai >= 80) {
echo “A”;
} elseif ($nilai >= 70) {
echo “B”;
} elseif ($nilai >= 60) {
echo “C”;
} else {
echo “D”;
}
Tentukan:
- jumlah decision;
- cyclomatic complexity;
- independent path;
- test case.
Latihan 5
Buat minimal 10 test case untuk halaman login.
π― 46. Pertanyaan Diskusi
- Mengapa black-box testing tidak membutuhkan source code?
- Mengapa white-box membutuhkan pemahaman pemrograman?
- Kapan gray-box lebih tepat digunakan?
- Apakah black-box dapat menemukan seluruh bug?
- Apakah white-box menjamin software bebas bug?
- Mengapa nilai batas penting dalam pengujian?
- Apa hubungan cyclomatic complexity dengan jumlah test case?
- Apakah coverage 100% berarti software pasti bebas bug?
- Mengapa regression testing diperlukan?
- Mengapa testing harus dilakukan sebelum deployment?
π’ 47. Studi Kasus Diskusi
Sebuah aplikasi akademik memiliki masalah:
Mahasiswa biasa dapat mengakses halaman administrator dengan mengetikkan URL secara langsung.
Diskusikan:
- Apakah masalah tersebut merupakan defect?
- Apakah termasuk masalah keamanan?
- Apakah black-box dapat menemukan masalah tersebut?
- Apakah gray-box lebih efektif?
- Informasi internal apa yang diperlukan?
- Buat test case.
- Tentukan expected result.
- Tentukan actual result.
- Buat bug report.
- Jelaskan bagaimana melakukan retesting.
- Jelaskan bagaimana melakukan regression testing.
π’ 48. Kuis Pemahaman
1. Black-box testing berfokus pada:
A. Source code
B. Struktur database
C. Perilaku dan fungsi sistem
D. Compiler
Jawaban: C
2. White-box testing berfokus pada:
A. Tampilan aplikasi
B. Struktur internal program
C. Warna website
D. Dokumentasi pengguna
Jawaban: B
3. Gray-box testing menggunakan:
A. Tidak ada informasi sistem
B. Seluruh source code
C. Sebagian informasi internal
D. Tidak menggunakan test case
Jawaban: C
4. Boundary Value Analysis digunakan untuk:
A. Menguji nilai batas
B. Membuat database
C. Membuat UI
D. Mengompilasi program
Jawaban: A
5. Cyclomatic Complexity berkaitan erat dengan:
A. White-box testing
B. UI design
C. Database backup
D. Deployment
Jawaban: A
π’ 49. Rubrik Penilaian Praktikum
| Komponen | Bobot |
|---|---|
| Analisis requirement | 10% |
| Black-box testing | 20% |
| White-box testing | 20% |
| Gray-box testing | 15% |
| Implementasi sistem | 15% |
| Dokumentasi | 10% |
| Presentasi | 5% |
| Diskusi | 5% |
| Total | 100% |
π’ 50. Indikator Keberhasilan Pembelajaran
Mahasiswa dinyatakan menguasai materi apabila mampu:
- menjelaskan konsep testing;
- membedakan black-box, white-box, dan gray-box;
- menyusun test case;
- melakukan equivalence partitioning;
- melakukan boundary value analysis;
- membuat decision table;
- membuat flowchart;
- membuat control flow graph;
- menghitung cyclomatic complexity;
- menentukan independent path;
- melakukan branch coverage;
- membuat bug report;
- melakukan retesting;
- melakukan regression testing;
- mendokumentasikan hasil pengujian;
- memberikan argumentasi mengenai kelayakan implementasi sistem.
π’ 51. Rangkuman Materi
Secara sederhana, ketiga pendekatan dapat diingat dengan konsep berikut:
π΅ Black-Box
“Saya tidak perlu tahu isi program. Saya ingin mengetahui apakah sistem bekerja sesuai kebutuhan.”
Fokus:
- input;
- output;
- requirement;
- fungsi;
- perilaku.
βͺ White-Box
“Saya mengetahui struktur program dan ingin memastikan logika internalnya telah diuji.”
Fokus:
- source code;
- statement;
- branch;
- condition;
- path;
- CFG;
- cyclomatic complexity.
π‘ Gray-Box
“Saya mengetahui sebagian cara kerja sistem dan menggunakan informasi tersebut untuk membuat pengujian lebih terarah.”
Fokus:
- fungsi;
- arsitektur;
- database;
- API;
- autentikasi;
- session;
- role;
- sebagian struktur internal.
π’ 52. Kesimpulan
Testing merupakan bagian penting dalam pengembangan dan implementasi sistem informasi. Sebuah aplikasi yang dapat dijalankan belum tentu dapat dikatakan berkualitas apabila belum melalui proses pengujian yang memadai.
Black-box testing membantu menguji sistem dari perspektif perilaku dan kebutuhan pengguna tanpa harus mengetahui source code.
White-box testing membantu menguji struktur internal dan logika program dengan menganalisis statement, branch, condition, path, control flow graph, dan cyclomatic complexity.
Sementara itu, gray-box testing menggabungkan pendekatan eksternal dengan sebagian pengetahuan internal sistem. Pendekatan ini sangat berguna ketika tester mengetahui sebagian arsitektur, database, API, autentikasi, session, atau mekanisme internal lainnya.
Ketiga pendekatan tersebut dapat digunakan secara bersama-sama.

Dengan menerapkan ketiga pendekatan tersebut, mahasiswa Informatika tidak hanya belajar membuat aplikasi, tetapi juga belajar menguji, mengevaluasi, memperbaiki, mendokumentasikan, dan menentukan kelayakan sebuah sistem sebelum diimplementasikan.
π― 53. Proyek Akhir Pembelajaran
Sebagai proyek akhir, mahasiswa diminta membuat atau menggunakan sebuah aplikasi kemudian melakukan pengujian dengan tema:
“Analisis dan Pengujian Sistem Menggunakan Black-Box, White-Box, dan Gray-Box Testing untuk Menentukan Kelayakan Implementasi Sistem.”
Output proyek:
- Aplikasi.
- Dokumen requirement.
- Test plan.
- Minimal 20 black-box test case.
- Equivalence partitioning.
- Boundary value analysis.
- Decision table.
- Flowchart.
- Control Flow Graph.
- Cyclomatic Complexity.
- Independent Path.
- Minimal 10 white-box test case.
- Minimal 10 gray-box test case.
- Screenshot hasil pengujian.
- Bug report.
- Bukti perbaikan.
- Retesting.
- Regression testing.
- Dokumentasi implementasi.
- Kesimpulan kelayakan sistem.
Target akhirnya bukan sekadar:
“Aplikasi sudah selesai dibuat.”
Tetapi:
“Aplikasi telah diuji secara sistematis menggunakan black-box, white-box, dan gray-box testing, defect telah diidentifikasi dan diperbaiki, retesting dan regression testing telah dilakukan, serta tersedia bukti yang mendukung kesiapan sistem untuk diimplementasikan.”
π 54. Referensi Pembelajaran
- ISTQB Glossary β referensi terminologi software testing, termasuk black-box testing, white-box testing, coverage, boundary value analysis, dan berbagai istilah pengujian lainnya. ISTQB Glossary
- OWASP Web Security Testing Guide β referensi pengujian aplikasi web dan keamanan aplikasi, termasuk metodologi pengujian dengan pendekatan black-box, white-box, dan gray-box. OWASP Web Security Testing Guide
- OWASP Testing Guide β dapat digunakan sebagai referensi tambahan untuk mempelajari pengujian aplikasi secara sistematis, khususnya pada aplikasi web. OWASP Testing Guide