Post

Pengantar Unit Testing: Fondasi Kualitas Perangkat Lunak

Pengantar Unit Testing: Fondasi Kualitas Perangkat Lunak

Apa itu Unit Testing?

Unit testing menguji unit terkecil dari kode (fungsi/kelas) secara terisolasi agar deterministik, cepat, dan andal.

Manfaat

  • Umpan balik cepat, mencegah regresi, memudahkan refactor.
  • Dokumentasi perilaku yang selalu up to date.

Praktik Baik

  • Uji happy-path dan edge-case; hindari integrasi.
  • Gunakan dependency injection dan mocking untuk isolasi.
  • Nama tes deskriptif; satu assert utama per skenario.

Contoh (JavaScript, Jest)

1
2
3
4
5
6
7
8
// calculator.js
export function add(a, b) { return a + b; }

// calculator.test.js
import { add } from './calculator';
test('add returns sum of two numbers', () => {
  expect(add(2, 3)).toBe(5);
});

Coverage vs Nilai

Kejar coverage yang bermakna (berbasis risiko), bukan angka semata.

Anti-Pattern yang Perlu Dihindari

  • Menguji implementasi (bukan perilaku) sehingga rapuh saat refactor.
  • Tes saling bergantung (order-dependent) atau menggunakan state global.
  • Menyisipkan sleep; gunakan fake timers atau mock.

Contoh (Python, pytest)

1
2
3
4
5
6
7
8
9
# calculator.py
def add(a, b):
    return a + b

# test_calculator.py
from calculator import add

def test_add_returns_sum():
    assert add(2, 3) == 5

Praktik Coverage

  • Laporkan branch/statement/function coverage; fokus area berisiko.
  • Hindari mengejar 100% jika menambah biaya perawatan besar tanpa nilai.
This post is licensed under CC BY 4.0 by the author.