Bab 2 — Materi + Quiz 10

🔄 Regression Testing

Memastikan bahwa perubahan kode (fix bug, fitur baru, refactor) tidak merusak fungsi yang sebelumnya sudah berjalan dengan benar.

📑 Daftar Isi

  1. Apa Itu Regression Testing?
  2. Retesting vs Regression Testing
  3. Tipe-Tipe Regression Testing
  4. Strategi Seleksi Test Case
  5. Otomatisasi & CI/CD
  6. RPA dalam Regression Testing
  7. Load Testing vs Regression Testing
  8. Poin-Poin Penting
  9. Tips Menghafal
  10. Contoh Soal & Jawaban
  11. Latihan Soal Interaktif

📖 Apa Itu Regression Testing?

Regression Testing adalah pengujian ulang terhadap perangkat lunak setelah ada perubahan (update kode, perbaikan bug, penambahan fitur) untuk memastikan bahwa perubahan tersebut tidak menyebabkan masalah baru pada fitur yang sudah ada.

Analogi Sederhana

Bayangkan kamu punya mobil yang berfungsi normal. Kamu ganti ban-nya. Regression testing = kamu cek semua fungsi mobil lainnya (rem, lampu, AC, dll.) masih bekerja, bukan hanya ban barunya. Karena bisa saja saat ganti ban, kamu tidak sengaja memutus kabel lampu.

Kapan Regression Testing Dilakukan?

🔍 Retesting vs Regression Testing (WAJIB PAHAM!)

Ini adalah konsep yang sering membingungkan dan sering keluar di soal. Keduanya mirip tapi sangat berbeda.

AspekRetestingRegression Testing
TujuanMemastikan bug yang sudah diperbaiki benar-benar sudah fixMemastikan perubahan tidak merusak fitur lain yang sudah berfungsi
FokusBug spesifik yang di-fixSeluruh area yang mungkin terdampak perubahan
ScopeSempit (hanya area yang di-fix)Luas (bisa seluruh sistem)
OtomatisasiSulit diotomatisasiSangat cocok untuk diotomatisasi
Kapan?Setelah bug fixSetiap kali ada perubahan apapun

💡 Tips Hafalan: Re-testing vs Regression

  • Re-testing = "Re" = Mengulang tes yang sama untuk bug yang sama → "Apakah bug-nya sudah beneran fix?"
  • Regression = "Regress" = Mundur/memburuk → "Apakah perubahan membuat hal lain mundur/rusak?"

📋 Tipe-Tipe Regression Testing

1. Corrective Regression Testing

Dilakukan ketika tidak ada perubahan pada kode, hanya ingin memastikan tes yang sudah ada masih valid. Bisa langsung jalankan tes lama tanpa modifikasi.

2. Progressive Regression Testing

Dilakukan ketika ada perubahan/update pada kode. Test case mungkin perlu di-update untuk menyesuaikan dengan perubahan baru, sambil tetap menguji fitur lama.

3. Selective Regression Testing

Hanya memilih subset dari test suite yang relevan dengan area yang berubah. Lebih efisien dari segi waktu.

4. Complete/Full Regression Testing

Menjalankan seluruh test suite dari awal. Paling aman tapi paling memakan waktu. Biasanya dilakukan sebelum major release.

💡 Tips Hafalan Tipe Regression

"CPSC" = Corrective (kode ga berubah), Progressive (kode berubah), Selective (pilih-pilih tes), Complete (semua tes)

🎯 Strategi Seleksi Test Case

Karena menjalankan semua tes bisa memakan waktu, kita perlu strategi untuk memilih tes mana yang paling penting:

1. Risk-Based Selection

Pilih tes berdasarkan risiko. Area yang paling kritis/berbahaya kalau rusak → diuji duluan.

Contoh

Modul pembayaran lebih berisiko dari modul "ubah warna tema", jadi prioritas tes di modul pembayaran.

2. Coverage-Based Selection

Pilih tes berdasarkan cakupan kode (code coverage). Tes yang mencakup area kode yang berubah diprioritaskan.

3. Dependency-Based Selection

Pilih tes berdasarkan ketergantungan antar modul. Jika modul A berubah dan modul B bergantung pada modul A, maka tes modul B juga harus dijalankan.

💡 Tips Hafalan: "RCD"

  • Risk — yang paling bahaya duluan
  • Coverage — yang codecnya berubah
  • Dependency — yang terhubung/tergantung

🤖 Otomatisasi & CI/CD

Regression testing sangat cocok untuk diotomatisasi karena:

Regression Testing dalam CI/CD

CI/CD (Continuous Integration / Continuous Delivery) adalah praktik di mana kode secara otomatis di-build dan di-test setiap kali ada perubahan.

Alur CI/CD + Regression Testing:

  1. Developer push kode ke repository (Git)
  2. CI server (Jenkins, GitHub Actions, dll.) otomatis mendeteksi perubahan
  3. Regression test suite otomatis dijalankan
  4. Jika ada tes yang gagal → build ditandai FAILED, developer diberitahu
  5. Jika semua tes pass → build berhasil, bisa lanjut ke deployment

⚠️ Peran utama regression test dalam CI/CD:

Menjaga stabilitas build — memastikan setiap perubahan yang masuk ke repository tidak merusak fungsionalitas yang sudah ada. Kalau ada yang rusak, langsung ketahuan sebelum sampai ke production.

🤖 RPA (Robotic Process Automation) dalam Regression Testing

RPA adalah teknologi yang menggunakan "robot" software untuk mengotomatisasi tugas-tugas repetitif yang biasanya dilakukan manusia. Dalam konteks testing, RPA digunakan untuk regression testing berbasis UI.

UI.Vision

UI.Vision (sebelumnya bernama Kantu) adalah tool RPA open-source yang bisa:

Contoh Penggunaan

Kamu rekam skenario: Buka browser → Login → Klik menu "Profil" → Cek nama tampil benar. Setiap ada update, robot akan menjalankan skenario ini otomatis dan memeriksa apakah hasilnya masih sama.

⚡ Load Testing vs Regression Testing

AspekLoad TestingRegression Testing
TujuanMenguji performa sistem di bawah beban tertentuMenguji apakah perubahan merusak fungsi yang ada
Mengukur Apa?Response time, throughput, CPU usageFungsionalitas (benar/salah)
Kapan?Sebelum go-live / rilis besarSetiap ada perubahan kode
ToolsJMeter, Locust, k6Selenium, Jest, Pytest

📌 Poin-Poin Penting (WAJIB DIHAPAL)

✅ Ringkasan Kunci untuk UAS

  1. Regression Testing = memastikan perubahan kode tidak merusak fitur lama
  2. Retesting = memastikan bug yang di-fix sudah benar-benar fix
  3. Regression = cakupan luas, Retesting = cakupan sempit
  4. Dalam CI/CD, regression test menjaga stabilitas build
  5. Strategi seleksi: Risk-based, Coverage-based, Dependency-based
  6. Jika test suite tidak pernah di-update → bug baru yang terjadi tidak akan terdeteksi karena tes hanya mengecek skenario lama
  7. Menjalankan tes lama penting untuk memastikan perubahan tidak merusak fungsi yang sebelumnya benar
  8. RPA (UI.Vision) digunakan untuk regression testing berbasis UI secara otomatis
  9. Regression test sangat cocok diotomatisasi karena repetitif
  10. Regression testing ≠ Load Testing (regression = fungsionalitas, load = performa)

🧠 TIPS MENGHAFAL — Bab 2: Regression Testing

  1. "Regression = Mundur/Rusak" → Apakah kode baru bikin fitur lama jadi mundur/rusak? Kalau "Retesting" = Mengulang (apakah bug-nya beneran fix?).
  2. "Retesting = Sempit, Regression = Luas" → Retesting fokus ke 1 bug itu saja, Regression fokus ke seluruh sistem yang mungkin terdampak.
  3. "CPSC" → Tipe Regression: Corrective (gak ada ubah kode), Progressive (ada ubah kode), Selective (pilih-pilih area), Complete (tes semua dari awal).
  4. "RCD" → Strategi seleksi test: Risk (risiko tinggi), Coverage (area kode yang diubah), Dependency (modul yang bergantung).
  5. "Stabilitas Build" → Kata kunci peran Regression Testing dalam CI/CD. Dia jadi "satpam" supaya kode jelek gak masuk ke production.
  6. "Test Suite Wajib Update" → Kalau ada fitur baru tapi test suite nggak di-update, bug baru bakal lolos karena tes cuma ngecek yang lama-lama aja.
  7. "Otomatisasi = Cocok" → Regression Test sangat cocok diotomatisasi karena kerjanya ngulang-ngulang terus (repetitif).
  8. "UI.Vision" → Tool RPA (robot) buat otomasi testing berbasis UI.
  9. "Load vs Regression" → Load Testing = Performa (kuat/enggak), Regression = Fungsional (benar/salah).

📝 Contoh Soal & Jawaban

Contoh Soal 1

Apa peran utama regression testing dalam pipeline CI/CD?

A. Menguji performa server
B. Memastikan setiap perubahan tidak merusak fungsionalitas yang ada sehingga menjaga stabilitas build
C. Mendesain tampilan UI
D. Mengecek keamanan jaringan

Jawaban: B — Regression test di CI/CD bertujuan menjaga stabilitas build dengan memastikan perubahan tidak merusak fitur lama.

Contoh Soal 2

Apa perbedaan utama antara retesting dan regression testing?

A. Retesting menguji fitur baru, regression testing menguji fitur lama
B. Retesting memverifikasi bug yang di-fix, regression testing memverifikasi bahwa perubahan tidak merusak area lain
C. Keduanya sama saja
D. Regression testing hanya untuk UI

Jawaban: B — Retesting = verifikasi fix bug spesifik. Regression = verifikasi dampak perubahan terhadap seluruh sistem.

Contoh Soal 3

Apa risiko jika regression test suite tidak pernah di-update setelah penambahan fitur baru?

A. Test suite menjadi lebih cepat
B. Bug baru pada fitur yang ditambahkan tidak akan terdeteksi oleh test suite yang ada
C. Semua test case menjadi lebih akurat
D. Performa aplikasi meningkat

Jawaban: B — Test suite yang tidak di-update tidak akan mencakup skenario baru, sehingga bug baru tidak terdeteksi.

🎮 Latihan Soal Interaktif — Regression Testing

Kerjakan 15 soal berikut, lalu klik Submit untuk melihat hasilnya.

0/15
Skor Anda