I — Konsep Dasar
2 articles- 01Kenapa Testing Itu Penting? Biaya Bug dan Confidence to ChangeKenapa bug yang ditemukan telat jauh lebih mahal, konsep confidence to change, batasan jujur testing, dan gambaran besar testing pyramid yang akan kita bangun sepanjang seri ini.
- 02Anatomi Test yang Baik: AAA, Test Doubles, dan Prinsip FIRSTPola Arrange-Act-Assert, detail yang membedakan unit, integration, dan E2E test, kosakata test doubles (dummy, stub, fake, mock, spy), dan prinsip FIRST sebagai tolok ukur kesehatan sebuah test.
II — Praktik
6 articles- 03Praktik: Unit Test Pertama dengan PytestInstalasi dan konvensi dasar pytest, menulis unit test pertama untuk fungsi murni di app/security.py, menguji kasus negatif, dan menandai test dengan marker supaya bisa dipilah cepat vs lambat.
- 04Praktik: Fixtures & Dependency OverrideMenulis fixture pytest dengan yield, kenapa test pakai SQLite in-memory bukan Postgres sungguhan, mengganti dependency FastAPI lewat dependency_overrides, dan jebakan lifespan yang menyasar database asli.
- 05Praktik: Parametrization & Table-Driven TestsMenghindari duplikasi test lewat pytest.mark.parametrize, memberi ID yang jelas ke tiap kasus, boundary testing di titik batas validasi, dan kapan sebaiknya TIDAK memakai parametrization.
- 06Praktik: Mocking & Test DoublesKenapa layanan eksternal tidak boleh dipanggil sungguhan saat test, mocking dengan pytest-mock, aturan "patch di tempat dipakai", dan memverifikasi interaksi lewat assert_called_once_with.
- 07Praktik: Test Coverage & BatasannyaMengukur coverage dengan pytest-cov, kenapa kode yang di-bypass lewat dependency override muncul sebagai tidak tercakup, kenapa 100% coverage bukan tujuan, dan sekilas soal mutation testing.
- 08Praktik: TDD — Red, Green, RefactorMembangun fitur pencarian task dari nol lewat siklus Test-Driven Development: menulis test yang pasti gagal (Red), kode paling sederhana supaya lolos (Green), lalu merapikan tanpa mengubah perilaku (Refactor).