Apa itu Pengujian Regresi Visual dan Bagaimana Cara Menerapkannya?

Ashley Goolam

Ashley Goolam

24 December 2025

Apa itu Pengujian Regresi Visual dan Bagaimana Cara Menerapkannya?

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Pengujian regresi visual menangkap bug yang terlewatkan oleh pengujian fungsional tradisional. Sebuah tombol masih bisa diklik tetapi posisinya berada di luar layar. Pembaruan CSS mungkin membuat teks tidak terbaca. Perubahan tata letak dapat merusak desain responsif Anda di perangkat seluler. Pengujian Regresi Visual membandingkan tangkapan layar aplikasi Anda dari waktu ke waktu, secara otomatis mendeteksi perubahan visual yang tidak disengaja sebelum mencapai pengguna Anda.

Panduan ini memberikan panduan praktis tentang teknik pengujian regresi visual dan implementasi yang disederhanakan menggunakan Playwright, sehingga Anda dapat mulai menangkap bug UI dengan segera.

tombol

Apa Itu Pengujian Regresi Visual?

Pengujian Regresi Visual adalah teknik otomatis yang mengambil tangkapan layar UI aplikasi Anda dan membandingkannya dengan gambar dasar (baseline). Ketika tangkapan layar baru berbeda dari gambar dasar—baik karena pergeseran tata letak, perubahan warna, masalah font, atau gambar yang rusak—pengujian gagal dan menyoroti perbedaannya.

Tidak seperti pengujian tradisional yang memvalidasi fungsionalitas, Pengujian Regresi Visual memvalidasi tampilan dan tata letak. Pengujian ini menjawab pertanyaan seperti:

Mengapa Pengujian Regresi Visual Penting

Pentingnya Pengujian Regresi Visual menjadi jelas ketika Anda mempertimbangkan skenario berikut:

  1. Refaktorisasi CSS: Anda mengonsolidasi gaya duplikat dan tiba-tiba formulir login tumpang tindih dengan footer di layar iPad.
  2. Widget Pihak Ketiga: Tim pemasaran menambahkan skrip analitik baru yang mendorong tombol ajakan bertindak (call-to-action) Anda ke luar layar.
  3. Breakpoints Responsif: Perubahan padding yang tampaknya tidak berbahaya merusak menu navigasi seluler.
  4. Render Lintas-Browser: Firefox merender flexbox secara berbeda dari Chrome, menyebabkan pergeseran tata letak.
  5. UI Berbasis API: API backend Anda menambahkan bidang baru yang secara tidak sengaja memperluas kolom tabel, merusak tata letak.

Tanpa Pengujian Regresi Visual, bug ini akan mencapai produksi dan membuat pengguna frustrasi. Dengan pengujian ini, Anda menangkapnya selama pengembangan ketika biaya perbaikannya murah.

Teknik untuk Pengujian Regresi Visual

1. Perbandingan Tangkapan Layar Manual

Pendekatan paling sederhana: pengembang secara manual mengambil tangkapan layar sebelum dan sesudah perubahan lalu membandingkannya secara visual.

Pro: Tanpa biaya pengaturan
Kontra: Melelahkan, rawan kesalahan, tidak dapat diskalakan

2. Perbandingan DOM

Alat membandingkan struktur DOM daripada tangkapan layar yang sama persis pikselnya.

Pro: Kurang rentan terhadap perbedaan piksel kecil
Kontra: Melewatkan masalah render CSS

3. Perbandingan Piksel-per-Piksel

Alat mengambil tangkapan layar halaman penuh dan membandingkan setiap piksel.

Pro: Menangkap semua perubahan visual
Kontra: Positif palsu dari konten dinamis (iklan, stempel waktu)

4. Perbandingan AI Visual

Alat modern menggunakan AI untuk mengidentifikasi perubahan yang berarti sambil mengabaikan gangguan.

Pro: Deteksi cerdas, lebih sedikit positif palsu
Kontra: Membutuhkan konfigurasi, ada biaya

Teknik Akurasi Pemeliharaan Terbaik untuk
Manual Rendah Tinggi Pemeriksaan sekali pakai
DOM Sedang Sedang Pengujian komponen
Piksel Tinggi Sedang Halaman statis
AI Tinggi Rendah Aplikasi dinamis

Panduan Praktis: Pengujian Regresi Visual dengan Playwright

Mari kita bangun proyek sederhana untuk mendemonstrasikan Pengujian Regresi Visual beraksi menggunakan Playwright.

playwright

Langkah 1 — Buat Proyek

Inisialisasi proyek Node.js:

mkdir visual-regression-demo && cd visual-regression-demo
npm init -y
npm install --save-dev @playwright/test
npx playwright install

Buat struktur ini:

project/
├── images/
│   ├── pic1.jpg
│   ├── pic2.jpg
│   ├── pic3.jpg
│   └── pic4.jpg
├── tests/
│   └── visual.spec.js
├── index.html
└── package.json

Tambahkan ke package.json:

{
  "scripts": {
    "test": "playwright test",
    "test:update": "playwright test --update-snapshots"
  }
}

Langkah 2 — Buat Halaman HTML Sederhana

Buat index.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Visual Regression Demo</title>
  <style>
    .gallery { display: flex; flex-wrap: wrap; gap: 10px; }
    .gallery img { width: 200px; height: 200px; object-fit: cover; }
  </style>
</head>
<body>
  <h1>Product Gallery</h1>
  <div class="gallery">
    <img src="images/pic1.jpg" alt="Product 1">
    <img src="images/pic2.jpg" alt="Product 2">
    <img src="images/pic3.jpg" alt="Product 3">
    <img src="images/pic4.jpg" alt="Product 4">
  </div>
</body>
</html>

Sajikan halaman: python -m http.server 8000 atau gunakan server statis Node.js.

simple test html page

Langkah 3 — Tulis Tes Visual Playwright

Buat tests/visual.spec.js:

const { test, expect } = require('@playwright/test');

test.describe('Visual Regression Tests', () => {
  test.beforeEach(async ({ page }) => {
    await page.goto('http://localhost:8000');
  });

  test('homepage matches baseline', async ({ page }) => {
    // Ambil tangkapan layar halaman penuh
    await expect(page).toHaveScreenshot('homepage.png', {
      fullPage: true,
      threshold: 0.2, // Izinkan perbedaan kecil
    });
  });

  test('gallery layout is responsive', async ({ page }) => {
    // Uji viewport seluler
    await page.setViewportSize({ width: 375, height: 667 });
    await expect(page).toHaveScreenshot('mobile-homepage.png');
  });
});

Langkah 4 — Jalankan dan Buat Snapshot Dasar

Jalankan pertama kali (membuat gambar dasar):

npm run test:update

Ini akan menghasilkan homepage.png dan mobile-homepage.png di folder __snapshots__.

snapshots

Langkah 5 — Jalankan Pengujian dengan Sukses

Sekarang jalankan pengujian secara normal:

npm test

Anda akan melihat: 2 passed

playwright tests

Langkah 6 — Paksa Kegagalan Visual

Rusak tata letak dengan mengedit index.html dan duplikat kemunculan satu gambar:

<img src="images/img3.webp" alt="Gambar 3">
<img src="images/img3.webp" alt="Gambar 4">

Sekarang, halaman html pengujian seharusnya memiliki gambar duplikat.

Jalankan pengujian lagi:

npm test

Anda akan melihat: 2 failed dengan gambar diff yang menunjukkan perubahan tata letak.

failed tests

Anda dapat melihat perubahan secara detail dengan menelusuri folder "test-results".

view test results

Area yang disorot merah menunjukkan area yang telah diubah. Hasil pengujian akan terlihat sebagai berikut:

test results

Setelah selesai, Anda dapat mengembalikan perubahan, atau memperbarui snapshot menggunakan perintah di bawah ini jika perubahan yang Anda buat disengaja:

npm run test:update

Bagaimana Apidog Membantu Pengujian Visual Berbasis API

Pengujian Regresi Visual sering gagal ketika penyebab utamanya adalah masalah API. Jika backend Anda mengembalikan data yang salah format atau URL gambar yang tidak benar, UI akan rusak secara visual. Apidog memastikan API Anda mengirimkan data yang tepat untuk rendering.

Menguji Respons API yang Mempengaruhi UI

# Pengujian Apidog untuk API galeri produk
Tes: GET /api/products
Ketika: Permintaan dikirim dengan kategori "featured"
Oracle 1: Respons berisi 4 produk
Oracle 2: Setiap produk memiliki URL gambar yang valid (status 200)
Oracle 3: URL gambar menggunakan domain CDN
Oracle 4: Tidak ada tautan gambar yang rusak dalam respons
automatically generate test cases in apidog
tombol

Memvalidasi Skema API untuk Komponen UI

// Validasi skema Apidog mencegah kerusakan UI
Tes: Skema API Produk
Oracle: Respons cocok dengan skema ProductCard
  - id: string (wajib)
  - name: string (maks 50 karakter)
  - image_url: format URL
  - price: number (positif)

Jika API mengembalikan price sebagai string alih-alih angka, UI Anda mungkin gagal merender harga dengan benar. Apidog menangkap ini sebelum merusak tata letak visual.

Memantau Dampak Kinerja API pada UI

Tes: GET /api/products - Kinerja
Ketika: Permintaan dengan 4 produk
Oracle 1: Waktu respons < 500ms
Oracle 2: CDN gambar merespons dalam < 200ms masing-masing

API yang lambat menyebabkan gambar memuat terlambat, menciptakan efek lompatan visual. Apidog memastikan API memenuhi anggaran kinerja yang menjaga UI Anda tetap responsif.

Pengujian Kontrak API Mencegah Regresi Visual

Ketika kontrak API Anda berubah (bidang baru, bidang dihapus), Apidog menandainya:

// Tes kontrak Apidog
Tes: API Produk Versi 2
Oracle: Bidang baru "badge" bersifat opsional, tidak merusak UI

Ini mencegah teks "undefined" muncul di UI Anda ketika API menambahkan bidang yang belum ditangani oleh frontend Anda.

Panduan Praktis untuk Pengujian Kontrak API

Praktik Terbaik untuk Pengujian Regresi Visual

  1. Lingkungan Pengujian yang Stabil: Gunakan data yang konsisten dan nonaktifkan animasi
  2. Penyetelan Ambang Batas: Atur ambang batas perbedaan piksel (0,1-0,3) untuk menghindari positif palsu
  3. Pengujian Bertarget: Uji halaman penting (homepage, checkout) sebelum menguji semuanya
  4. Cakupan Responsif: Uji viewport seluler, tablet, dan desktop
  5. Masking Konten Dinamis: Sembunyikan stempel waktu, iklan, dan konten acak dari tangkapan layar
  6. Perbarui Baseline dengan Sengaja: Tinjau perbedaan sebelum memperbarui snapshot
  7. Jalankan di CI/CD: Integrasikan tes visual ke dalam pipeline Anda dengan alat seperti Apidog

Pertanyaan yang Sering Diajukan

Q1: Bisakah pengujian regresi visual menggantikan pengujian fungsional?

Jawab: Tidak. Pengujian Regresi Visual melengkapi pengujian fungsional. Ini menangkap masalah tata letak, tetapi pengujian fungsional memvalidasi perilaku dan kebenaran API. Gunakan keduanya.

Q2: Bagaimana cara menangani konten dinamis seperti stempel waktu?

Jawab: Gunakan opsi mask Playwright atau ganti konten dinamis dengan nilai statis sebelum mengambil tangkapan layar. Apidog juga dapat memvalidasi bahwa API mengembalikan data yang konsisten untuk pengujian.

Q3: Apakah pengujian visual tidak stabil (flaky)?

Jawab: Bisa jadi, jika Anda tidak mengontrol lingkungannya. Nonaktifkan animasi, gunakan data yang konsisten, dan atur ambang batas yang sesuai. Apidog membantu dengan memastikan API mengembalikan data yang dapat diprediksi.

Q4: Haruskah saya menguji setiap halaman secara visual?

Jawab: Fokus pada jalur pengguna yang paling penting terlebih dahulu. Menguji semuanya akan menciptakan overhead pemeliharaan. Prioritaskan halaman dan komponen dengan lalu lintas tinggi.

Q5: Bagaimana Apidog membantu jika bug visual saya terkait CSS?

Jawab: Banyak bug visual berasal dari perubahan data API (bidang yang hilang, tipe yang salah). Apidog memvalidasi skema dan respons API, mencegah kerusakan visual terkait data sebelum mencapai UI Anda.

Kesimpulan

Pengujian Regresi Visual adalah jaring pengaman Anda terhadap konsekuensi yang tidak disengaja dari perubahan kode. Sementara pengujian fungsional mengonfirmasi tombol masih berfungsi, pengujian visual memastikan tombol tersebut masih muncul di tempat yang diharapkan pengguna. Perbedaan ini sangat penting untuk pengalaman pengguna dan konsistensi merek.

Contoh Playwright menunjukkan seberapa mudah pengujian visual dapat diakses. Dengan hanya beberapa baris kode, Anda dapat mengambil dan membandingkan tangkapan layar di berbagai viewport, menangkap kerusakan tata letak sebelum produksi. Kuncinya adalah memulai dari yang kecil, menstabilkan lingkungan pengujian Anda, dan menjalankan pengujian secara berkelanjutan.

Aplikasi modern semakin didorong oleh API, yang berarti bug visual seringkali dimulai dengan masalah data. Apidog melengkapi gambaran dengan memastikan API Anda mengirimkan data yang konsisten dan terformat dengan benar yang dapat dirender UI Anda dengan andal. Ketika API dan pengujian visual bekerja sama, Anda mendapatkan cakupan yang lengkap—fungsionalitas, kinerja, dan tampilan—semuanya divalidasi secara otomatis.

Mulailah dengan menambahkan tes visual ke alur pengguna paling penting Anda hari ini. Pertama kali tes menangkap kerusakan tata letak yang akan mempermalukan Anda dalam produksi, Anda akan bertanya-tanya bagaimana Anda pernah mengirimkan perangkat lunak tanpanya.

tombol

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.