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.