WHITE BOX TESTING & UNIT TESTING Johni S Pasaribu
1. WHITE BOX TESTING a. Pengertian: • White Box Testing adalah metode pengujian perangkat lunak yang berfokus pada struktur internal kode program. • Disebut “White Box” karena kode program dianggap transparan bagi penguji. b. Tujuan: • Memastikan semua baris kode, kondisi, cabang, dan jalur logika dieksekusi. • Mendeteksi kesalahan pada logika, kondisi, perulangan, dan algoritma. • Menjamin kualitas program dari sisi teknis.
TEKNIK WHITE BOX TESTING 1. Statement Coverage memastikan semua pernyataan kode → dieksekusi minimal sekali. 2. Branch Coverage memastikan semua cabang if, else, switch diuji. → 3. Path Coverage menguji semua jalur eksekusi program. → 4. Condition Coverage menguji semua kondisi logika bernilai → benar & salah. 5. Loop Testing menguji perulangan dengan kasus 0 kali, 1 kali, → dan banyak kali.
KELEBIHAN & KELEMAHAN WHITE BOX TESTING Kelebihan: • Dapat menemukan kesalahan logika internal. • Memastikan semua jalur program diuji. • Membantu meningkatkan kualitas kode. Kelemahan: • Membutuhkan pengetahuan mendalam tentang kode. • Waktu pengujian bisa lebih lama. • Tidak cocok untuk menguji fungsi dari sudut pandang pengguna.
2. UNIT TESTING a. Pengertian: • Unit Testing adalah pengujian pada unit terkecil kode program, seperti fungsi, prosedur, atau metode. • Dilakukan untuk memastikan setiap unit bekerja sesuai spesifikasi sebelum diintegrasikan dengan unit lain. b. Tujuan: • Memverifikasi logika bisnis pada unit kecil. • Mengurangi bug sejak dini sebelum tahap integrasi. • Mempermudah debugging dan pemeliharaan kode.
TOOLS, KELEBIHAN & KELEMAHAN UNIT TESTING Tools / Framework Unit Testing: • Java JUnit → • Python PyTest, unittest → • .NET (C#) NUnit → • JavaScript Mocha, Jasmine → Kelebihan: • Dapat menemukan bug sejak tahap awal. • Membantu programmer menjaga kualitas kode saat terjadi perubahan. • Mempercepat proses debugging.
Kelemahan: • Membutuhkan waktu tambahan untuk menulis test case. • Tidak bisa mendeteksi masalah integrasi antar modul. • Kadang membuat proses coding lebih kompleks.
3. HUBUNGAN WHITE BOX TESTING & UNIT TESTING • Unit Testing sering menggunakan teknik White Box Testing, karena penguji harus mengetahui struktur internal fungsi yang diuji. • White Box Testing bisa dilakukan di berbagai level (unit, integration, system), tetapi paling umum dipakai dalam Unit Testing.
4. CONTOH PENERAPAN a. White Box Testing (Python): def bagi(a, b): if b != 0: return a / b else: return 'Error' → Statement Coverage: jalankan semua baris kode. → Branch Coverage: uji b=0 dan b≠0. → Path Coverage: pastikan semua jalur eksekusi diuji.
b. Unit Testing (PyTest): def test_bagi(): assert bagi(10, 2) == 5 assert bagi(10, 0) == 'Error'
5. STUDI KASUS PROGRAM def cek_grade(nilai): if nilai >= 85: return "A" elif nilai >= 70: return "B" elif nilai >= 55: return "C" else: return "D" 1. Statement Coverage Pertanyaan: Berapa banyak test case minimal yang diperlukan agar semua statement pada fungsi cek_grade dieksekusi? a. 2 b. 3 c. 4 d. 5
5. STUDI KASUS PROGRAM def cek_grade(nilai): if nilai >= 85: return "A" elif nilai >= 70: return "B" elif nilai >= 55: return "C" else: return "D" 2. Branch Coverage Pertanyaan: Jika ingin menguji semua cabang if, elif, dan else, test case mana yang paling tepat? a. [90, 75, 60, 40] b. [100, 85, 55, 30] c. [80, 70, 50] d. [95, 65]
5. STUDI KASUS PROGRAM def cek_grade(nilai): if nilai >= 85: return "A" elif nilai >= 70: return "B" elif nilai >= 55: return "C" else: return "D" 3. Path Coverage Pertanyaan: Jalur eksekusi apa saja yang ada pada fungsi cek_grade? a. if return "A", elif1 return "B", elif2 return "C", else return "D" → → → → b. if return "A", elif1 return "B", else return "C" → → → c. Hanya ada satu jalur karena selalu menghasilkan nilai. d. Tidak ada jalur eksplisit.
5. STUDI KASUS PROGRAM def cek_grade(nilai): if nilai >= 85: return "A" elif nilai >= 70: return "B" elif nilai >= 55: return "C" else: return "D" 4. Condition Coverage Pertanyaan: Untuk kondisi nilai >= 85, apa yang harus diuji? a. Nilai tepat 85 dan nilai < 85 b. Nilai tepat 85 dan nilai > 85 c. Nilai < 85 dan nilai > 85 d. Nilai 70 dan 55
6. KESIMPULAN • White Box Testing fokus pada struktur internal kode (statement, → branch, path, loop, condition). • Unit Testing fokus pada fungsi terkecil kode untuk memastikan → logika berjalan benar. • Kombinasi keduanya penting untuk menghasilkan perangkat lunak yang andal, bebas bug, dan mudah dipelihara.

White Box Testing is a software testing method that focuses on the internal structure of program code

  • 1.
    WHITE BOX TESTING& UNIT TESTING Johni S Pasaribu
  • 2.
    1. WHITE BOXTESTING a. Pengertian: • White Box Testing adalah metode pengujian perangkat lunak yang berfokus pada struktur internal kode program. • Disebut “White Box” karena kode program dianggap transparan bagi penguji. b. Tujuan: • Memastikan semua baris kode, kondisi, cabang, dan jalur logika dieksekusi. • Mendeteksi kesalahan pada logika, kondisi, perulangan, dan algoritma. • Menjamin kualitas program dari sisi teknis.
  • 3.
    TEKNIK WHITE BOXTESTING 1. Statement Coverage memastikan semua pernyataan kode → dieksekusi minimal sekali. 2. Branch Coverage memastikan semua cabang if, else, switch diuji. → 3. Path Coverage menguji semua jalur eksekusi program. → 4. Condition Coverage menguji semua kondisi logika bernilai → benar & salah. 5. Loop Testing menguji perulangan dengan kasus 0 kali, 1 kali, → dan banyak kali.
  • 4.
    KELEBIHAN & KELEMAHANWHITE BOX TESTING Kelebihan: • Dapat menemukan kesalahan logika internal. • Memastikan semua jalur program diuji. • Membantu meningkatkan kualitas kode. Kelemahan: • Membutuhkan pengetahuan mendalam tentang kode. • Waktu pengujian bisa lebih lama. • Tidak cocok untuk menguji fungsi dari sudut pandang pengguna.
  • 5.
    2. UNIT TESTING a.Pengertian: • Unit Testing adalah pengujian pada unit terkecil kode program, seperti fungsi, prosedur, atau metode. • Dilakukan untuk memastikan setiap unit bekerja sesuai spesifikasi sebelum diintegrasikan dengan unit lain. b. Tujuan: • Memverifikasi logika bisnis pada unit kecil. • Mengurangi bug sejak dini sebelum tahap integrasi. • Mempermudah debugging dan pemeliharaan kode.
  • 6.
    TOOLS, KELEBIHAN &KELEMAHAN UNIT TESTING Tools / Framework Unit Testing: • Java JUnit → • Python PyTest, unittest → • .NET (C#) NUnit → • JavaScript Mocha, Jasmine → Kelebihan: • Dapat menemukan bug sejak tahap awal. • Membantu programmer menjaga kualitas kode saat terjadi perubahan. • Mempercepat proses debugging.
  • 7.
    Kelemahan: • Membutuhkan waktutambahan untuk menulis test case. • Tidak bisa mendeteksi masalah integrasi antar modul. • Kadang membuat proses coding lebih kompleks.
  • 8.
    3. HUBUNGAN WHITEBOX TESTING & UNIT TESTING • Unit Testing sering menggunakan teknik White Box Testing, karena penguji harus mengetahui struktur internal fungsi yang diuji. • White Box Testing bisa dilakukan di berbagai level (unit, integration, system), tetapi paling umum dipakai dalam Unit Testing.
  • 9.
    4. CONTOH PENERAPAN a.White Box Testing (Python): def bagi(a, b): if b != 0: return a / b else: return 'Error' → Statement Coverage: jalankan semua baris kode. → Branch Coverage: uji b=0 dan b≠0. → Path Coverage: pastikan semua jalur eksekusi diuji.
  • 10.
    b. Unit Testing(PyTest): def test_bagi(): assert bagi(10, 2) == 5 assert bagi(10, 0) == 'Error'
  • 11.
    5. STUDI KASUSPROGRAM def cek_grade(nilai): if nilai >= 85: return "A" elif nilai >= 70: return "B" elif nilai >= 55: return "C" else: return "D" 1. Statement Coverage Pertanyaan: Berapa banyak test case minimal yang diperlukan agar semua statement pada fungsi cek_grade dieksekusi? a. 2 b. 3 c. 4 d. 5
  • 12.
    5. STUDI KASUSPROGRAM def cek_grade(nilai): if nilai >= 85: return "A" elif nilai >= 70: return "B" elif nilai >= 55: return "C" else: return "D" 2. Branch Coverage Pertanyaan: Jika ingin menguji semua cabang if, elif, dan else, test case mana yang paling tepat? a. [90, 75, 60, 40] b. [100, 85, 55, 30] c. [80, 70, 50] d. [95, 65]
  • 13.
    5. STUDI KASUSPROGRAM def cek_grade(nilai): if nilai >= 85: return "A" elif nilai >= 70: return "B" elif nilai >= 55: return "C" else: return "D" 3. Path Coverage Pertanyaan: Jalur eksekusi apa saja yang ada pada fungsi cek_grade? a. if return "A", elif1 return "B", elif2 return "C", else return "D" → → → → b. if return "A", elif1 return "B", else return "C" → → → c. Hanya ada satu jalur karena selalu menghasilkan nilai. d. Tidak ada jalur eksplisit.
  • 14.
    5. STUDI KASUSPROGRAM def cek_grade(nilai): if nilai >= 85: return "A" elif nilai >= 70: return "B" elif nilai >= 55: return "C" else: return "D" 4. Condition Coverage Pertanyaan: Untuk kondisi nilai >= 85, apa yang harus diuji? a. Nilai tepat 85 dan nilai < 85 b. Nilai tepat 85 dan nilai > 85 c. Nilai < 85 dan nilai > 85 d. Nilai 70 dan 55
  • 15.
    6. KESIMPULAN • WhiteBox Testing fokus pada struktur internal kode (statement, → branch, path, loop, condition). • Unit Testing fokus pada fungsi terkecil kode untuk memastikan → logika berjalan benar. • Kombinasi keduanya penting untuk menghasilkan perangkat lunak yang andal, bebas bug, dan mudah dipelihara.