**Regresyon testi** uygulama ortamındaki yapılan tüm değişiklikleri; uygulamaya yeni eklenen özellikler, daha önceki yaşanan hataların düzeltilmesinden sonra, mevcut problemlerin giderildiği ve yeni yapılan güncellemelerin, eklenen özelliklerin yeni bir hata üretip üretmediğini kontrol amaçlı olarak yapılan **yazılım test** türüdür.

Uygulama ve uygulama ortamlarında gerekli değişiklikler ve sabitlemeler yapıldıktan sonra yeniden yapılan testlere çekilme (regresyon) testi denilir. Böylece, önceki testlerde belirlenen sorunların giderildiğinden ve yeni eklenen özelliklerin sorunsuz çalıştığından ve yeni hatalar oluşmadığından emin olunur.

**Yazılım hataları** ya da gerilemelerin (performans düşüklüğü),fonksiyonel ve fonksiyonel olmayan geliştirmelerin, sistemin bazı alanlarına yapılan yamaların, yapılandırma değişiklilerinin **regresyon testi** ile etkileri izlenebilir.

**Niçin Regresyon Testi?**

Regresyon Testleri çok önemlidir, çünkü günümüzde birçok yazılım yinemeli geliştirim (İterative Development) süreci ile yapılmaktadır. Yinelemeli geliştirim sürecinde; her bir döngüde yeni bazı işlevler (Functionality) eklenerek kısa döngüler kullanılmaktadır. Bu senaryoda; yeni eklenen işlevlerin var olan işlevleri bozmadığından emin olmak için, her bir döngüde Regresyon Testini uygulamak çok anlamlı olacaktır.

**Regresyon testi ne zaman yapılır?**

Sistem üzerinde yapılan her değişiklik istenmeyen yan etkiler doğurabilir. Her değişiklik ve hata düzeltmesinin ardından regresyon testleri yapılarak, sistemin bütünlüğü test edilir. Regresyon testlerinde sistem için kullanılan altyapı tanımlanmış bir duruma getirildikten sonra testler uygulanır.

Kurumsal dünyada yazılım geliştirmenin her aşamasında bu test uygulama türünü kesinlikle uyguluyor olmak gerekir. Çünkü günümüzde oluşturulan uygulamalar sürekli olarak gelişmektedir güncellenmektedir, müşterinin isteklerine göre değişiklikler yapılmaktadır. Aksi takdirde zaman ve maliyet açısından daha büyük kayıpların açığa çıkabilmesi kaçınılmaz olabilir.

**Regresyon testi** sadece geliştirmelerin amaca uygunluğunu değil aynı zamanda yazılım kalitesine de büyük katkılar sağlayabilir.

**Regresyon testi** sırasında kullanılması gereken en temel stratejiler ise;

-Yapılan değişikliklerin yan etkilerinin izlenmesi ve mevcut olan hatalarında  başka hatalar oluşturup-oluşturmadığını kontrol edilmesi

-Mevcut her hata ve değişiklik için ayrı bir regresyon test senaryosu oluşturulmalı.

-Birbirine benzeyen test senaryoları kontrol edilerek gereksiz ya da etkileri daha az olanlar kaldırılmalı ya da test öncelik sıralamaları değiştirilmeli.

-Tasarım ile ilgili olan alanlar da incelenmeli.

-Uygulamanın sistem üzerindeki etkileri izlenmelidir. (bellekler vb.)

**Regresyon testi ne zaman ve ne sıklıkla yapılır?**

Uygulamanın ne sıklıkla test edileceğini belirlemek zordur, bu yüzden uygulama geliştirme döneminin sonlarına doğru yapılır. Bu sayede, bütün bir projenin ne kadar değişim yaşadığı ve güncellemelerden ne derece etkilendiği daha net bir şekilde belirlenebilir. Uygulama altyapısı tamamen tanımlanmış duruma getirildiğinde regresyon testleri yapılmaya başlanır.

**Regresyon testinin sonlandırılması**

Regresyon testi sonucunda bulunan hatalar düzeltildikten sonra test hazırlık süreci kontrol edilir. Eğer tüm kriterlerin kabul edilebilir düzeyde olduğu tespit edilirse test sonlandırılır. Testin sonlandırılmasının ardından uygulama, kullanıcı kabul testine açılır. Müşterilerin bulduğu hatalar veya değiştirilmesi istenilen noktalar gözden geçirilerek tekrar test ekibinin kontrolüne sunulur. Bu kontrolden çıkan uygulama ürün aşamasına geçer ve güncellemeler tamamlanana kadar regresyon testlerine devam edilir.

**Regresyon testine yardımcı uygulama "EggPlant "**

EggPlant uygulaması OCR (Optical Character Recognition) yani Optik Karakter Tanıma yeteneğine sahip arayüz kontrolü yapabilen bir test uygulaması olduğu için, regresyon testi ihtiyacı olan şirketlere büyük katkılar sağlamaktadır. Örneğin GittiGidiyor şirketi, sahip olduğu siteyi ve mobil uygulamaları sürekli olarak güncellediğinden dolayı, her değişiklik sonrası EggPlant aracılığı ile arayüz testleri yaparak uygulamaların bütünlüğünü korumaktadır.

Regresyon testleri genel olarak fonksiyonel testler veya birim testler olarak kategorize edilebilir. Fonksiyonel testler, çeşitli girişler ile tam bir program çalışır. Birim testler tek tek işlevleri, altprogram veya nesne yöntemleri kullanırlar. Fonksiyonel test araçları ve birim test araçları Hem derleyici paketinin bir parçası olmayan üçüncü taraf ürünleri olma eğilimindedir ve her ikisi de otomatik hale eğilimindedir. Bir fonksiyon testi hatta fare hareketleri ve tıklamaları kontrol etmek için otomatik bir mekanizma içeren bir program girişlerinin bir komut dosyası dizi olabilir. Bir birim test kodu kendisi veya kod test edilen değiştirmeden kod bağlanan bir sürücü tabakası içinde ayrı işlevler kümesi olabilir.

Ayrıca bakınız
--------------

* Characterization test
* Quality control
* Smoke testing
* Test-driven development

Kaynakça
--------