Apa itu Regression Testing?
Regression testing adalah jenis pengujian perangkat lunak yang bertujuan untuk memastikan apakah perubahan pada aplikasi atau komponen software terkait menimbulkan bug atau gangguan baru. Seorang engineer di bidang quality assurance (QA) biasanya yang bertugas melakukan pengujian ini, guna mengecek apakah modifikasi pada kode mengganggu fungsi aplikasi atau efisiensi penggunaannya terhadap sumber daya sistem.
Perubahan atau penambahan fitur di aplikasi bisa memicu efek samping tak terduga—yang disebut regression—dan efek ini bisa muncul bahkan di bagian sistem lain yang nggak secara langsung dimodifikasi karena adanya dependency. Nah, regression test bertugas untuk mendeteksi efek samping ini. Beberapa hal yang biasanya memicu dilakukannya regression testing adalah:
- Penambahan fitur atau fungsi baru.
- Perbaikan terhadap bug atau cacat sistem.
- Refactoring kode untuk meningkatkan performa.
- Perubahan pada environment atau hosting aplikasi.
Seorang QA engineer bisa melakukan regression testing di salah satu dari empat level pengujian berikut:
- Unit testing – menguji bagian terkecil dari aplikasi (unit) secara terpisah untuk memastikan fungsinya berjalan dengan benar.
- Integration testing – menguji bagaimana beberapa unit saling bekerja sama saat digabungkan.
- System testing – mengevaluasi interaksi antar komponen dalam aplikasi sebagai satu sistem utuh.
- Acceptance testing – menguji apakah aplikasi sudah memenuhi ekspektasi pengguna akhir. Bisa berupa beta testing, field testing, atau pengujian langsung oleh user.
Biasanya regression test dijalankan di akhir siklus pengujian, menjelang rilis aplikasi. Tapi jangan abaikan juga pentingnya unit regression testing, yang fokus pada satu bagian kode saja dan dilakukan secara berulang.
Karena regression testing bisa memakan waktu lama—kadang berjam-jam bahkan berhari-hari—banyak tim developer memilih untuk mengotomatisasi pengujian agar bisa menghemat waktu dan tenaga.
Teknik Regression Test
Manajemen test case sangat penting agar regression testing tetap efektif. Tim developer biasanya menyusun test case menjadi sebuah test suite.
Salah satu teknik regression testing yang paling umum adalah retest all (jangan disamakan dengan retesting ya). Sesuai namanya, teknik ini menjalankan semua test case regression yang ada. Metode ini memang komprehensif, tapi bisa terlalu berlebihan kalau cuma ada perubahan kecil. Teknik ini cocok saat software dipindahkan ke platform baru, lokalitas baru (bahasa atau budaya), atau OS mengalami pembaruan besar.
Kalau tim pengembang ingin membuat test suite yang lebih hemat waktu, mereka bisa memilih test case berdasarkan prioritas. Misalnya, test case dengan tingkat kegagalan tinggi, atau yang berhubungan langsung dengan user experience, bisa ditempatkan di prioritas atas.
Ada juga strategi partial regression, yaitu hanya menjalankan test case yang penting dan terkait fitur utama. Kadang strategi ini disebut juga regression test selection (RTS). Bedanya, RTS hanya mengeksekusi test case yang terdampak oleh perubahan terbaru pada kode, sementara partial regression bisa mencakup test lain yang menyangkut fitur krusial.
Untuk tahu seberapa luas pengaruh dari suatu perubahan kode atau build, tim bisa melakukan impact analysis. Hasilnya akan membantu menentukan test case mana saja yang perlu dijalankan di siklus pengujian berikutnya.
Sebelum melakukan regression test, biasanya tim QA akan menjalankan smoke test terlebih dahulu—untuk memastikan fungsi dasar aplikasi tetap jalan. Regression test dilakukan setelahnya untuk pengujian yang lebih menyeluruh.
Kalau regression test menemukan bug baru, maka QA harus membuat test case baru khusus untuk memancing dan mendeteksi bug tersebut di masa depan.
Tools untuk Regression Testing
Ada banyak tools dan platform yang bisa bantu eksekusi serta optimasi regression test. Biasanya, tools ini juga mendukung automation script dan bisa menjalankan smoke maupun regression test secara otomatis. Meski begitu, sebagian pekerjaan QA masih perlu dilakukan manual.
Tool regression testing yang ada di pasaran cukup beragam, dari yang open-source dan gratis sampai yang komersial dan kaya fitur. Beberapa tools juga support berbagai bahasa pemrograman dan terintegrasi dengan CI servers dalam proses CI/CD.
Beberapa contoh regression testing tool open-source:
- Selenium
- Watir
- Sahi
- Contoh tool komersial:
- TestComplete dari SmartBear – cocok untuk pengujian front-end dan aplikasi fungsional.
- Ranorex Studio – framework otomatisasi GUI untuk web, desktop, dan mobile apps.
Functionize – pakai machine learning dalam pengujian otomatisnya dan juga bisa diintegrasikan ke CI/CD.