Saya telah bekerja pada sistem transaksi keuangan besar untuk bank yang menangani Pensiun dan Investasi. Setelah 15 tahun perubahan fitur, biaya uji regresi manual telah naik menjadi $ 200 ribu per rilis. (10 juta LOC, $ 10 juta ditransaksikan per hari). Sistem ini juga berinteraksi dengan 19 sistem lain di sekitar perusahaan yang memindahkan banyak data. Sistem ini diterapkan di Jawa.
Namun yang kami amati, adalah bahwa semakin 'digunakan kembali' kami, semakin banyak biaya uji regresi. (Alasannya adalah bahwa Anda perlu "menguji kode yang Anda sentuh" - dan menggunakan kembali / berbagi kode berdampak pada banyak tempat ketika disentuh. Jadi, meskipun 'KERING - Jangan Ulangi Diri Sendiri' - yaitu jangan salin dan tempel kode - kami mengamati insentif keuangan untuk menyalin dan menempel kode. Ini untuk menurunkan biaya uji regresi, karena kami tidak ingin memodifikasi kode yang dapat dibagikan, karena itu akan menyebabkan dampak uji regresi yang besar.)
Pertanyaan saya, adakah prinsip rekayasa perangkat lunak yang menggambarkan hubungan antara penggunaan kembali dan biaya uji regresi?
Alasan saya mengajukan pertanyaan ini adalah bahwa ada manfaat biaya dalam mendekomposisi sistem menjadi bagian yang lebih kecil untuk diuji.
Asumsi:
'Tes regresi' berarti 'tes penerimaan' - yaitu kelompok lain yang menghabiskan waktu untuk menulis tes baru dan menggunakan kembali sistem terhadap nama bisnis, termasuk pengaturan lingkungan dan data.
Saya tahu reaksi spontan terhadap biaya uji regresi besar adalah 'tes yang lebih otomatis'. Ini adalah prinsip yang baik. Di lingkungan ini ada beberapa tantangan.
(a) Pengujian otomatis kurang bermanfaat melintasi batas sistem, kecuali jika sistem itu juga memiliki cakupan pengujian otomatis yang tinggi. (Lingkungan tantangan pengaruh).
(B) Secara budaya sulit untuk mendapatkan momentum pada waktu programmer atau investasi modal pada cakupan tes otomatis tinggi ketika sistem Anda sudah besar dan kompleks.
(c) Biaya pemeliharaan pengujian otomatis disembunyikan di proyek, dan karenanya mudah dibuang di tingkat proyek.
(D) Ini hanya realitas budaya bekerja di bank.
(e) Saya sedang bekerja untuk menyelesaikan masalah ini dengan cara yang berbeda (dekomposisi).