Lewati ke konten utama
menjadi.dev
Chapter 19.6 DevOps Lanjutan

Testing Strategy dan CI/CD

Integrasikan testing ke workflow development

Tujuan Pembelajaran

  • Bisa setup test di CI/CD pipeline
  • Mengerti code coverage dan threshold
  • Mengerti TDD dan testing best practices

Analogi

Diagram

      Testing in CI/CD:
Git Push → Lint → Test → Build → Coverage → Deploy
    

Testing terintegrasi di CI/CD memastikan kualitas kode sebelum sampai ke production

Penjelasan Konsep

Testing yang hanya berjalan di local machine tidak cukup.

Untuk tim dan proyek production, test harus berjalan otomatis di CI/CD pipeline setiap kali ada push ke repository.

CI/CD Pipeline untuk Testing

Git Push → Lint → Unit Test → Integration Test → Build → E2E Test → Deploy

Pipeline ini memastikan: kode mengikuti style guide,

Unit test passing (cepat), integration test passing (sedang), build berhasil, E2E test passing (lambat), lalu deploy ke production.

Code Coverage

Code coverage mengukur berapa persen kode yang dieksekusi oleh test.

Metric: statement, branch, function, dan line coverage.

Target umum: 70-80%.

Jangan obsesi dengan 100% — fokus pada business logic.

TDD (Test-Driven Development)

TDD adalah pendekatan menulis test SEBELUM menulis kode. Siklus Red-Green-Refactor:

  1. Red: Tulis test yang gagal (karena kode belum ada)
  2. Green: Tulis kode minimal agar test passing
  3. Refactor: Perbaiki kode tanpa merusak test

TDD cocok untuk business logic kompleks dan algoritma. Kurang cocok untuk UI exploration dan prototyping.

Testing Best Practices

  1. F.I.R.S.T.: Fast, Independent, Repeatable, Self-validating, Timely
  2. Satu assertion per test (idealnya)
  3. Nama test deskriptif: ‘should reject invalid email’ bukan ‘test email’
  4. Arrange-Act-Assert: Setup → Execute → Verify
  5. Test behavior, bukan implementation

Inti yang Perlu Dipahami

Bagian ini berfokus pada bisa setup test di CI/CD pipeline., mengerti code coverage dan threshold., dan mengerti TDD dan testing best practices. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.

Saat membaca Testing Strategy dan CI/CD, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.

Cara Membayangkannya

Testing terintegrasi di CI/CD memastikan kualitas kode sebelum sampai ke production. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.

Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.

Saat Melihat Contoh Kode

Contoh kode pada chapter ini memakai bahasa yaml. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. Workflow berjalan di setiap push dan PR. Coverage report di-attach ke PR untuk review.

Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.

Konteks dalam Perjalanan Belajar

Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.

Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.

Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.

Contoh Kode

yaml
# .github/workflows/test.yml
name: Test
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: oven-sh/setup-bun@v1
        with:
          bun-version: latest
      - run: bun install
      - run: bun run lint
      - run: bun test
      - run: bun test --coverage
      - run: bun run build
      - uses: davelosert/vitest-coverage-report-action@v2
        if: always()
  e2e:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: oven-sh/setup-bun@v1
      - run: bun install
      - run: bunx playwright install --with-deps
      - run: bun run dev &
      - run: sleep 5
      - run: bunx playwright test

Penjelasan Kode

Workflow berjalan di setiap push dan PR. Coverage report di-attach ke PR untuk review.

Prompt AI

Setup GitHub Actions untuk proyek-mu: lint → test → build → deploy. Tambahkan coverage threshold 70%.

Pertanyaan Reflektif

Berapa lama pipeline CI/CD-mu berjalan? Kalau > 10 menit, pertimbangkan parallel jobs dan test splitting.