Panduan Pengujian Otomatis (Testing) & Persiapan Deployment Yii2 ke Production Server
Setelah aplikasi Sistem Manajemen Inventaris Produk dilengkapi dengan CRUD, integrasi API Guzzle, ekspor PDF, Dashboard Analytics, dan RBAC, tahap akhir yang tidak kalah penting dalam alur pengembangan web modern adalah Unit/Functional Testing dan Deployment ke Production Server.
Pada bagian penutup ini, kita akan mempelajari:
-
Cara menulis dan menjalankan Functional Test menggunakan Codeception (framework testing bawaan Yii2).
-
Konfigurasi optimal dan security hardening sebelum mengunggah aplikasi ke server live.
Susunan Judul Tahap Akhir Proyek
-
Pengujian Otomatis Menggunakan Codeception
-
Konfigurasi Lingkungan Production (
config/web.php&.env) -
Optimalisasi Composer & Autoloader
-
Pengaturan Web Server Nginx / Apache yang Aman
-
Rangkuman Akhir Sistem Inventaris Yii2
1. Pengujian Otomatis Menggunakan Codeception
Yii2 Basic sudah menyertakan kerangka pengujian Codeception secara langsung. Pengujian otomatis memastikan bahwa fitur penting (seperti kalkulasi harga atau hak akses) tidak rusak saat ada perubahan kode di masa mendatang.
Step A: Membuat Functional Test untuk Fitur Produk
Jalankan perintah Codeception di terminal untuk membuat file tes baru:
Bash
vendor/bin/codecept g:test functional ProdukCest
Step B: Menulis Kode Pengujian (tests/functional/ProdukCest.php)
Buka berkas tests/functional/ProdukCest.php dan buat skenario pengujian alur login serta proteksi halaman produk:
PHP
amOnPage('index.php?r=produk/create');
// Harus diarahkan ke halaman login atau mendapat 403
$I->see('Login');
}
// Skenario 2: Memastikan Admin Bisa Melihat Halaman Dashboard & Inventaris
public function checkAdminAccess(FunctionalTester $I)
{
// Simulasi Login sebagai Admin
$I->amOnPage('index.php?r=site/login');
$I->fillField('LoginForm[username]', 'admin');
$I->fillField('LoginForm[password]', 'admin123');
$I->click('login-button');
// Buka Halaman Inventaris
$I->amOnPage('index.php?r=produk/index');
$I->see('Manajemen Inventaris Produk');
$I->see('Tambah Produk Baru'); // Admin harus bisa melihat tombol ini
}
}
Step C: Menjalankan Test
Jalankan pengujian menggunakan perintah:
Bash
vendor/bin/codecept run functional
Jika seluruh pengujian lulus (passed), aplikasi dinyatakan stabil dan siap untuk diproduksi.
2. Konfigurasi Lingkungan Production (config/web.php & .env)
Sebelum aplikasi diunggah ke server live, matikan mode debug dan sembunyikan pesan error mentah agar tidak membocorkan informasi sensitif ke publik.
Matikan Mode Debug pada web/index.php
Buka berkas web/index.php dan pastikan konstanta debug dinonaktifkan:
PHP
run();
3. Optimalisasi Composer & Autoloader
Di server production, jalankan perintah Composer khusus agar tidak mengunduh pustaka pengujian (--no-dev) dan menggunakan pemetaan kelas tercepat (--optimize-autoloader):
Bash
composer install --no-dev --optimize-autoloader
Selain itu, bersihkan cache aplikasi Yii2:
Bash
php yii cache/flush-all
4. Pengaturan Web Server Nginx yang Aman
Untuk alasan keamanan, selalu arahkan Root Directory web server ke folder web/, bukan ke direktori utama proyek. Hal ini mencegah pengguna mengakses berkas .env, konfigurasi database, atau berkas kode sumber secara langsung melalui browser.
Berikut adalah contoh konfigurasi Nginx untuk proyek Yii2:
Nginx
server {
charset utf-8;
client_max_body_size 128M;
listen 80;
server_name inventaris.perusahaan.com;
# KUNCI UTAMA: Arahkan root ke folder /web!
root /var/www/inventaris-yii2/web;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Blokan akses langsung ke file berformat sensitif
location ~ /\.(ht|svn|git) {
deny all;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
try_files $uri =404;
}
}
5. Rangkuman Akhir Sistem Inventaris Yii2
Selamat! Kamu telah berhasil membangun sebuah Aplikasi Web Enterprise Utuh dari awal menggunakan Yii2 Framework dan Composer.
Arsitektur Lengkap Proyek yang Telah Dibangun:
┌─────────────────────────────────────────┐
│ BROWSER / CLIENT │
└────────────────────┬────────────────────┘
│
[ Filter AccessControl / RBAC ]
│
▼
┌─────────────────────────────────────────┐
│ PRODUK CONTROLLER │
└───────┬────────────┬────────────┬───────┘
│ │ │
┌───────────────┘ │ └───────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ PRODUCT MODEL │ │ GUZZLE HTTP │ │ mPDF VIEW │
│ (ActiveRecord)│ │ (Kurs API) │ │ (Cetak Laporan)│
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │
▼ ▼ ▼
[ MySQL Database ] [ External API ] [ Document PDF ]
Checklist Fitur yang Berhasil Selesai:
-
✅ Database & Generasi Kode Otomatis via Gii (CRUD & GridView)
-
✅ Integrasi External REST API menggunakan Guzzle Client (
guzzlehttp/guzzle) -
✅ Dashboard Analytics Visual & Chart.js (
kartik-v/yii2-widgets) -
✅ Functional Automated Testing (
Codeception)
Proyek ini telah memenuhi seluruh tolok ukur pengembangan aplikasi web modern yang terstruktur, berkinerja tinggi, modular, dan aman. Selamat berkarya dan mengembangkan sistem Yii2 lebih lanjut!




