Testing Strategy - Lumina-Enterprise-Solutions/prism-notification-service GitHub Wiki
๐งช Testing Strategy
Pengujian adalah bagian integral dari siklus pengembangan prism-notification-service
untuk memastikan keandalan, keamanan, dan kebenaran fungsional. Kami membagi pengujian menjadi dua kategori utama: Unit Tests dan Integration Tests.
Unit Tests
- Tujuan: Menguji komponen individual (satu fungsi atau satu struct) secara terisolasi tanpa dependensi eksternal.
- Lokasi: File tes dengan akhiran
_test.go
di direktori yang sama dengan kode yang diuji (misalnya,auth_handler_test.go
mengujiauth_handler.go
). - Ciri-ciri:
- Sangat cepat untuk dijalankan.
- Tidak memerlukan database, Redis, atau layanan lain.
- Semua dependensi eksternal di-mock menggunakan library seperti
testify/mock
.
- Cara Menjalankan:
Perintah ini menjalankanmake test
go test -v -short ./...
, yang secara spesifik hanya menargetkan tes yang ditandai sebagai "short" dan tidak memerlukan setup yang rumit.
Integration Tests
- Tujuan: Menguji interaksi antara beberapa komponen, terutama antara lapisan layanan (service) dengan dependensi nyata seperti database PostgreSQL dan Redis.
- Lokasi: Terutama di dalam paket
internal/repository
. Filemain_test.go
di paket ini bertanggung jawab untuk menyiapkan koneksi database sebelum tes dijalankan. - Ciri-ciri:
- Lebih lambat karena melibatkan I/O jaringan ke database.
- Memerlukan kontainer Docker untuk PostgreSQL dan Redis yang sedang berjalan.
- Memvalidasi query SQL dan logika repositori terhadap skema database yang sebenarnya.
- Cara Menjalankan:
- Pastikan seluruh tumpukan layanan berjalan melalui
make up
dari direktori root. - Jalankan perintah berikut dari direktori
services/prism-auth-service
:make test-integration
scripts/test-integration.sh
yang:- Mengekspor variabel lingkungan yang diperlukan (
POSTGRES_HOST
,REDIS_ADDR
, dll.) agar tes dapat terhubung ke kontainer Docker yang benar. - Menjalankan
go test -v ./...
tanpa flag-short
, sehingga semua tes (unit dan integrasi) dieksekusi. - Menggunakan
TestMain
direpository/main_test.go
untuk membuat koneksi ke database dan menerapkan skema sebelum menjalankan tes di paket tersebut.
- Pastikan seluruh tumpukan layanan berjalan melalui