Panduan Pengujian Otomatis (Testing) & Persiapan Deployment Yii2 ke Production Server

📅 7 Agustus 2026 ☕ 4 min read
Panduan Pengujian Otomatis (Testing) & Persiapan Deployment Yii2 ke Production Server

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:

  1. Cara menulis dan menjalankan Functional Test menggunakan Codeception (framework testing bawaan Yii2).

  2. Konfigurasi optimal dan security hardening sebelum mengunggah aplikasi ke server live.

 Susunan Judul Tahap Akhir Proyek

  1. Pengujian Otomatis Menggunakan Codeception

  2. Konfigurasi Lingkungan Production (config/web.php & .env)

  3. Optimalisasi Composer & Autoloader

  4. Pengaturan Web Server Nginx / Apache yang Aman

  5. 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:

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!


+