Emeklilik ve Yatırımlara bakan bir banka için büyük bir finansal işlem sistemi üzerinde çalıştım. 15 yıllık özellik değişikliklerinden sonra, manuel regresyon testi maliyeti yayın başına 200 bin dolara yükselmişti. (10 milyon LOC, günde 10 milyon ABD doları işlem yapılır). Bu sistem aynı zamanda çok sayıda veriyi hareket ettiren şirketin çevresindeki diğer 19 sistemle de bağlantı kurar. Bu sistem Java ile uygulanmıştır.
Ancak gözlemlediğimiz, ne kadar 'tekrar' kullandığımız zaman regresyon testi maliyetlerinin artmasıdır. (Bunun nedeni "dokunduğunuz kodu test etmeniz" gerektiğidir - ve tekrar kullanılan / paylaşılan kod dokunduğunuzda çok sayıda yeri etkiler. Bu yüzden 'KURU - Kendinizi Tekrar Etmeyin' - yani kodu kopyalayıp yapıştırmayın - kodu kopyalayıp yapıştırmak için finansal bir teşvik gözlemliyoruz. Bu, regresyon testi maliyetlerini düşürmek içindir, çünkü paylaşılabilecek kodu değiştirmek istemiyoruz, çünkü bu büyük bir regresyon testi etkisine neden olacaktır.)
Benim sorum, yeniden kullanım ve regresyon testi maliyetleri arasındaki ilişkiyi tanımlayan bir yazılım mühendisliği prensibi var mı?
Bu soruyu sormamın nedeni, sistemin test edilecek daha küçük parçalara ayrıştırılmasında maliyet avantajı olması.
Varsayımlar:
'Regresyon testi', 'kabul testi' anlamına gelir - yani çevre ve veri kurulumları da dahil olmak üzere, işletme adına sisteme yeni testler yazmak ve sisteme karşı eski testleri yeniden kullanmak için zaman harcayan başka bir grup.
Biliyorum ki büyük bir regresyon testi maliyetine diz-sarsıntı tepkisi 'daha otomatik testler'. Bu iyi bir prensip. Bu ortamda birkaç zorluk var.
(a) Otomatik testler, sistem otomatik olarak yüksek bir test kapsamına sahip olmadığı sürece, sistem sınırları boyunca daha az yararlıdır. (Etki alanı meydan okuması).
(b) Sisteminiz zaten büyük ve karmaşık olduğunda, programlayıcı zamanında ivme veya yüksek otomatik test kapsamına sermaye yatırımı yapmak kültürel olarak zordur.
(c) Otomatik testleri sürdürmenin maliyeti bir projede gizlidir ve bu nedenle proje düzeyinde kolayca atılırlar.
(d) Bu sadece bir bankada çalışmanın kültürel gerçekliğidir.
(e) Bu sorunu farklı bir şekilde çözmek için çalışıyorum (ayrışma).