Mutasyon Testi
Mutation Testing for Test Adequacy · Ayrıca şöyle bilinir: mutation analysis, mutant testing, fault injection
Mutasyon Testi, DeMillo, Lipton ve Sayward tarafından 1978'de geliştirilen ve küçük, kasıtlı hatalar (mutasyonlar) kaynak koda eklenip testlerin bunları yakalayıp yakalamadığını kontrol ederek test süiti etkinliğini değerlendiren bir hata enjeksiyon tekniğidir. Tüm mutantları öldüren (tespit eden) bir test süiti, mutantları öldürmeden yüksek kod kapsamına ulaşan bir süitten daha güçlüdür.
Tam yöntemi oku
Bu bölümü okumak için ücretsiz hesapla giriş yapın.
Ne zaman kullanılır
Test süitlerinin yalnızca kapsama ulaşmakla kalmayıp güçlü ve etkili olduğunu doğrulamak için mutasyon testini kullanın. Güvenlik açısından kritik kodlar (aviyonik, tıbbi cihazlar) için esastır. Çok büyük kod tabanları (milyonlarca mutasyon) için pratik değildir ancak ana modüller için uygulanabilir. Tam bir resim için kod kapsamıyla birleştirin: yüksek kapsama gereklidir ancak yeterli değildir.
Güçlü yönler & sınırlılıklar
- Zayıf testleri ortaya çıkarır: düşük mutasyon puanıyla yüksek kapsama, testlerin davranışı doğrulamadığını gösterir
- Test kalitesini objektif olarak ölçer: mutasyon puanı test geliştirme yaklaşımından bağımsızdır
- Test iyileştirmesini yönlendirir: hayatta kalan mutantlar eksik test durumlarını ve uç durumları işaretler
- Eşdeğer kodu tespit eder: tüm mutasyonlar altında özdeş davranış, ölü kodu işaret eder
- Hesaplama açısından maliyetlidir: test süitini çalıştırmak × (# mutasyonlar) büyük projeler için saatler veya günler sürebilir
- Eşdeğer mutantları tespit etmek zordur: gözlemlenebilir davranışı değiştirmeyen mutasyon manuel olarak tanımlanmalıdır
- Araca bağlıdır: mutasyon aracı kalitesi ve mutasyon operatörleri hangi hataların ekildiğini belirler
- Önemsiz kod için aşırıya kaçar: yüksek test edilmiş, basit fonksiyonlar doygunluğa ulaşır; azalan getiriler
SSS
Mutasyon puanı ile kod kapsamı arasındaki fark nedir?
Kapsam, yürütülen kodun yüzdesini ölçer; mutasyon puanı, öldürülen mutasyonların yüzdesini ölçer. Bir satır test edilmeden kapsanabilir: x == 5 karşılaştırması x = 4 ile hiç yürütülmezse, kapsama = %100 olur ancak mutasyon =='!=' hayatta kalır. Mutasyon daha katıdır.
Eşdeğer mutant nedir ve neden sorunludurlar?
Eşdeğer mutant, orijinaliyle özdeş davranır: örn. x = 5; y = x+0, x = 5; y = x ile eşdeğerdir. Eşdeğer mutantlar öldürülemez; birçok eşdeğerle yüksek mutasyon puanları yanıltıcıdır. Tanımlamak ve hariç tutmak için manuel inceleme gerekir.
Mutasyon testinin maliyetini nasıl azaltabilirim?
Mutant sayısını azaltmak için daha yüksek dereceli mutantlar (eşzamanlı olarak birden fazla operatörü mutasyona uğratma) kullanın. Yalnızca kapsanan koda mutasyon uygulayın (kapsama güdümlü). Artımlı mutasyon kullanın (yalnızca yeni kod). Mutasyon testini tüm kod tabanı yerine ana modüllerde çalıştırın. Çekirdekler veya dağıtılmış testler arasında paralelleştirin.
Hangi mutasyon operatörlerini kullanmalıyım?
Standart: operatörleri değiştirme (+ yerine -, < yerine ≤), ifadeleri silme, koşulları olumsuzlama. Genişletilmiş: metot çağrısı değiştirme, dönüş değeri değişiklikleri, sabit değişiklikleri. Pitest ve Stryker gibi araçlar onlarca operatör uygular; standart operatörlerle başlayın ve alana özgü olanları ekleyin (örn. sistem kodu için bit düzeyinde).
Kaynaklar
- DeMillo, R. A., Lipton, R. J., & Sayward, F. G. (1978). Hints on test data selection: Help for the practicing programmer. IEEE Computer, 11(4), 34–41. DOI: 10.1109/C-M.1978.218136 ↗
- Just, R., Jalali, D., Inozemtseva, L., Ernst, M. D., & Holmes, R. (2014). Are mutants killed by tests? How test suite composition affects the effectiveness of mutation testing. Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering. link ↗
- Jia, Y., & Harman, M. (2010). An analysis and survey of the development of mutation testing. IEEE Transactions on Software Engineering, 37(5), 649–678. DOI: 10.1109/TSE.2010.62 ↗
Bu sayfayı kaynak gösterin
ScholarGate. (2026, June 3). Mutation Testing for Test Adequacy. ScholarGate. https://scholargate.app/tr/numerical-methods/mutation-testing