Regresyon Testi
- İngilizcesi
- Regression Testing
- Türkçe karşılığı
- gerileme testi
- Okunuşu
- rigreşın testing
Günlük kullanımda iki ad da yaygın.
Kısaca
Regresyon testi, daha önce çalışan özelliklerin bozulmadığından emin olmak için bir kod değişikliğinden sonra mevcut testleri yeniden çalıştırma pratiğidir.
Regresyon testi nedir?
Regresyon testi, yeni değişikliklerin eski davranışı bozmadığını kontrol eder. Regresyon, daha önce çalışan bir şeydeki hatadır; örneğin ödeme koduna yapılan ilgisiz bir güncellemeden sonra giriş sayfasının çalışmaması gibi. Regresyon testi, bu sorunları erken yakalamak için her değişiklikten sonra mevcut testleri yeniden çalıştırmak demektir.
Uygulamada regresyon takımı, otomatik birim, entegrasyon ve uçtan uca testlerinizin toplamından ibarettir ve bir CI/CD hattı tarafından her commit ya da pull request'te çalıştırılır. Bir hata bulunup düzeltildiğinde geliştiriciler onu yeniden üreten bir test ekler; böylece aynı hata sessizce geri gelemez. Büyük projeler bazen her commit'te hızlı bir alt kümeyi, tüm takımı ise geceleri çalıştırır.
Bir pilotun uçuş öncesi kontrol listesine benzer: uçağın yalnızca bir parçası onarılmış olsa bile bir yerdeki düzeltme başka bir yeri etkileyebileceği için kontrol listesinin tamamı yeniden uygulanır. Regresyon testi en çok büyük ve uzun ömürlü kod tabanlarında, yeniden düzenleme (refactoring) sırasında ve bağımlılıklar yükseltilirken önem kazanır.
Regresyon testi, birim testi gibi ayrı bir test türü değildir; bir amacı tanımlar. Mevcut davranışı korumak için yeniden çalıştırdığınızda herhangi bir test regresyon testine dönüşür. Ayrıca daha önce var olmayan davranışı kontrol eden yeni bir özelliğin testinden de farklıdır.
Önemli noktalar
- Regresyon, eskiden çalışan bir şeydeki hatadır.
- Regresyon testi, her değişiklikten sonra mevcut testleri yeniden çalıştırır.
- CI/CD'deki otomatik test takımları regresyon testini ucuz ve sürekli kılar.
- Düzeltilen her hata için, geri dönmesini önleyen bir test eklenmelidir.
Örnek
# Bug report: parse_price("1,299.00") crashed because of the comma.
def parse_price(text):
return float(text.replace(",", ""))
# Regression test: reproduces the old bug so it can never quietly return.
def test_parse_price_with_thousands_separator():
assert parse_price("1,299.00") == 1299.0Sık sorulan sorular
Regresyon testi ile yeniden test (retesting) arasındaki fark nedir?
Yeniden test, belirli bir hata düzeltmesinin gerçekten işe yaradığını kontrol eder. Regresyon testi ise düzeltmenin ya da başka herhangi bir değişikliğin, zaten çalışan diğer özellikleri bozmadığını kontrol eder.
Regresyon testi otomatikleştirilmeli mi?
Mümkün olan her yerde evet. Aynı kontrolleri her değişiklikten sonra elle tekrarlamak yavaştır ve hataya açıktır; CI/CD hattındaki otomatik bir takım ise her commit'te dakikalar içinde çalışabilir.
İlgili sayfalar
- Birim TestiTest ve Kalite, s. 4Birim testi, bir fonksiyonun, metodun ya da sınıfın programın geri kalanından yalıtılmış olarak doğru davrandığını doğrulayan küçük ve otomatik bir kontroldür.
- Uçtan Uca TestTest ve Kalite, s. 35Uçtan uca test, kullanıcı arayüzünden veritabanına ve geri dönüşe kadar tam bir kullanıcı yolculuğunu uygulamanın tamamında çalıştıran otomatik bir testtir.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- RefactoringYazılım Mimarisi, s. 32Refactoring, mevcut kodun dışarıdan görünen davranışını değiştirmeden daha temiz ve bakımı kolay hâle getirmek için yeniden yapılandırılması sürecidir.
- Test KapsamıTest ve Kalite, s. 30Test kapsamı, otomatik testler çalışırken bir programın kaynak kodunun ne kadarının yürütüldüğünü ölçen ve genellikle yüzde olarak gösterilen bir metriktir.
- CommitSürüm Kontrolü, s. 5Commit, Git'te projenin dosyalarının; benzersiz bir kimlik, yazar, zaman damgası ve değişikliği anlatan bir mesajla kaydedilmiş anlık görüntüsüdür.
- Test OtomasyonuTest ve Kalite, s. 32Test otomasyonu, testleri kodla çalıştırıp sonuçları denetlemektir; böylece aynı kontroller elle değil, her değişiklikte hızlı ve tutarlı biçimde tekrarlanır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin