Yazılım regresyonu, yazılım programlamasında, bir veya daha fazla alanda yazılımın etkili bir şekilde gerilemesine neden olan bir hatadır. İki ana yazılım regresyonu türü vardır: işlevsel ve işlevsel olmayan. İşlevsel, programın uygun hızlarda çalıştığı, ancak bir veya daha fazla fonksiyonun çalışmadığı anlamına gelirken, işlevsel olmayan, tüm fonksiyonların çalıştığı ancak hızın önemli ölçüde azaldığı anlamına gelir. Yükseltme gibi bir olay genellikle regresyonun nedenidir. Regresyon testi, regresyonun olmadığından veya gerçekleşmeyeceğinden emin olmak için yazılımı kontrol eder.
Fonksiyonel yazılım regresyonu, program regresyonunun kendini gösterebilmesinin bir yoludur. Bu gerçekleştiğinde, program tam hızda çalışmaya devam eder, böylece kullanıcı ilk önce gerilemeyi fark etmeyebilir. Bu tezahürde, artık işe yaramayan bazı fonksiyonlar var. Örneğin, bir program dosyaları arayabilirse, bu işlev artık çalışmayabilir. Bu, aksesuar işlevlerini - yaygın olarak kullanılmayanları - veya programın ana işlevini etkileyebilir.
İşlevsel olmayan yazılım regresyonu, tüm fonksiyonlar hala çalışsa bile fark edilmesi daha tehlikelidir ve daha kolaydır. Bu tezahürde, regresyon programın yavaş çalışmasını sağlar veya programın çıktısı önemli ölçüde daha az olacaktır. Hızın olmaması, programın hem programı hem de üzerinde çalışmakta olduğu bilgisayarı bilgisayar korsanlığı tehlikesiyle karşı karşıya bırakarak, programın kötü niyetli kodlamaya ve saldırılara karşı da savunmasız hale gelebileceği anlamına gelir. Hız o kadar yavaş olabilir ki programı kullanmak imkansız olabilir.
Yazılım regresyonunun gerçekleşmesi için sözde bir olay gerçekleşmelidir. Bu olay, yazılımın kodlamasını değiştirir ve bu hataları, kasıtlı olarak - nadir görülen - veya kasıtsız olarak tanıtır. Geliştirici bir hatayı düzeltmeye veya sürümü güncellemeye çalışıyor olabilir, ancak programı geri yükleyen bazı kodları yanlış bir şekilde tanıtıyor. En tipik olay yükseltmedir, çünkü bu doğrudan programın kodlamasını etkiler. Diğer olaylar sürüm veya yapılandırma değişikliklerini içerir.
Yazılım regresyon şansını azaltmak için, genellikle regresyon testi kullanılır. Bu tür testler yeni programa bakar ve programın tüm eski sürümleriyle karşılaştırır. Daha sonra, herhangi bir gerileme işareti olup olmadığını görmek ve tüm kodlamanın işlevsel olduğundan emin olmak için bir test üzerinden programlamayı çalıştırır. Herhangi bir gerilemeli veya işlevsiz kodun belirtisi geliştiriciye veya kullanıcıya geri getirilir ve neyin gerilediğini veya gerilemenin bulunduğu yeri rapor eder.


