Memastikan bahwa perubahan kode (fix bug, fitur baru, refactor) tidak merusak fungsi yang sebelumnya sudah berjalan dengan benar.
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.
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.
Ini adalah konsep yang sering membingungkan dan sering keluar di soal. Keduanya mirip tapi sangat berbeda.
| Aspek | Retesting | Regression Testing |
|---|---|---|
| Tujuan | Memastikan bug yang sudah diperbaiki benar-benar sudah fix | Memastikan perubahan tidak merusak fitur lain yang sudah berfungsi |
| Fokus | Bug spesifik yang di-fix | Seluruh area yang mungkin terdampak perubahan |
| Scope | Sempit (hanya area yang di-fix) | Luas (bisa seluruh sistem) |
| Otomatisasi | Sulit diotomatisasi | Sangat cocok untuk diotomatisasi |
| Kapan? | Setelah bug fix | Setiap kali ada perubahan apapun |
Dilakukan ketika tidak ada perubahan pada kode, hanya ingin memastikan tes yang sudah ada masih valid. Bisa langsung jalankan tes lama tanpa modifikasi.
Dilakukan ketika ada perubahan/update pada kode. Test case mungkin perlu di-update untuk menyesuaikan dengan perubahan baru, sambil tetap menguji fitur lama.
Hanya memilih subset dari test suite yang relevan dengan area yang berubah. Lebih efisien dari segi waktu.
Menjalankan seluruh test suite dari awal. Paling aman tapi paling memakan waktu. Biasanya dilakukan sebelum major release.
"CPSC" = Corrective (kode ga berubah), Progressive (kode berubah), Selective (pilih-pilih tes), Complete (semua tes)
Karena menjalankan semua tes bisa memakan waktu, kita perlu strategi untuk memilih tes mana yang paling penting:
Pilih tes berdasarkan risiko. Area yang paling kritis/berbahaya kalau rusak → diuji duluan.
Modul pembayaran lebih berisiko dari modul "ubah warna tema", jadi prioritas tes di modul pembayaran.
Pilih tes berdasarkan cakupan kode (code coverage). Tes yang mencakup area kode yang berubah diprioritaskan.
Pilih tes berdasarkan ketergantungan antar modul. Jika modul A berubah dan modul B bergantung pada modul A, maka tes modul B juga harus dijalankan.
Regression testing sangat cocok untuk diotomatisasi karena:
CI/CD (Continuous Integration / Continuous Delivery) adalah praktik di mana kode secara otomatis di-build dan di-test setiap kali ada perubahan.
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 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 (sebelumnya bernama Kantu) adalah tool RPA open-source yang bisa:
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.
| Aspek | Load Testing | Regression Testing |
|---|---|---|
| Tujuan | Menguji performa sistem di bawah beban tertentu | Menguji apakah perubahan merusak fungsi yang ada |
| Mengukur Apa? | Response time, throughput, CPU usage | Fungsionalitas (benar/salah) |
| Kapan? | Sebelum go-live / rilis besar | Setiap ada perubahan kode |
| Tools | JMeter, Locust, k6 | Selenium, Jest, Pytest |
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.
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.
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.
Kerjakan 15 soal berikut, lalu klik Submit untuk melihat hasilnya.