top of page
  • Yazarın fotoğrafıUmut Pisken

Metamorfik Yazılım Testi (Metamorphic testing) Nedir?

Güncelleme tarihi: 16 Eki 2023

Yazılımın hayatımızdaki rolü gün geçtikçe artmaktadır. Gerek günlük hayatta kullanılan yazılım miktarı, gerekse de bu yazılımların karmaşıklığı gitgide artış göstermektedir. Bu yazılımlardaki hataları tespit etmek için yapılan yazılım testlerini gerçekleştirmek de gün geçtikçe daha karmaşık bir hale gelmektedir.


Yazılım mühendisliği temel süreç alanlarından birisi olan yazılım doğrulama kapsamında gerçekleştirilen yazılım testleri, temelde en kısa sürede en fazla hatayı yakalamayı amaçlamaktadır. Yazılım testlerinin hazırlanmasında karşılaşılan en temel sorunlardan birisi de, test edilen yazılımın hangi girdiler verildiğinde hangi sonucu üreteceğini, bir başka ifadeyle beklenen sonuçları belirleme konusudur (Test Oracle Problem). Bu noktada, test edilen yazılımın karmaşıklığı arttıkça, yazılımın verilen girdilerle üretmesi gereken sonuçları belirleme işi ciddi emek isteyen bir iş halini almaktadır. Özellikle karmaşık hesaplamalar yapan yazılımlar ve biyoinformatik, yapay zeka gibi alanlardaki yazılımlar için, olası girdi setlerine karşılık gelen beklenen sonuçları belirleme işi oldukça karmaşıktır.


Hazırlanan test senaryoları için beklenen sonuçları belirleme işini daha hızlı ve daha az emek harcayarak gerçekleştirmek üzere ortaya atılan yaklaşımlardan birisi de “Metamorfik Yazılım Testi (Metamorphic Testing)” yaklaşımıdır. Bu yaklaşım T.Y. Chen ve arkadaşları tarafından ilk kez 1998 yılında ortaya atılmıştır. Metamorfik Yazılım Test yaklaşımında, öncelikle yazılımın gerçekleştirmesi gereken fonksiyon incelenerek, bu fonksiyonun içerdiği metamorfik ilişkiler tespit edilmektedir. Daha sonra, normal test senaryoları hazırlanır gibi küçük bir girdi seti için beklenen sonuçlar belirlenmektedir. Ardından, ilk aşamada tespit edilmiş olan metamorfik ilişkiler kullanılarak beklenen sonuçları hesaplanmış olan küçük girdi seti üzerinden hızlı şekilde yeni girdi setleri ve beklenen sonuçlar oluşturulmaktadır. Test edilecek olan “Y” yazılımının “f” fonksiyonunu gerçekleştirdiğini varsayarsak, metamorfik yazılım testinin aşamaları şu şekilde olacaktır:

  1. Öncelikle “f” fonksiyonu için metamorfik ilişkiler belirlenecektir.

  2. Küçük bir girdi seti ve bu sete ait beklenen sonuçlar hesaplanarak kaynak test senaryo seti oluşturulacaktır.

  3. Kaynak test senaryolarının girdilerine metamorfik ilişkiler uygulanarak, yeni test senaryoları ve bunlara ait beklenen sonuçlar hesaplanacaktır.

  4. Testler kaynak test senaryoları ve bunlara metamorfik ilişkilerin uygulanması yoluyla üretilmiş olan türetilmiş test senaryoları üzerinde çalıştırılacak ve kalan adımlar tespit edilecektir.

Örneğin geliştirdiğimiz yazılım trigonometride bulunan sinüs fonksiyonunu gerçekleştiriyor olsun. Bu durumda öncelikle sinüs fonksiyonuna ait metamorfik ilişkileri tespit etmek gerekecektir. Bunlardan bazıları şunlar olacaktır:

  • sinüs (x) = sinüs (x + 360)

  • sinüs (-x) = - sinüs(x)

İkinci aşamada örnek bir girdi seti için beklenen sonuçlar hesaplanacaktır. Aynı örnek üzerinden devam edecek olursak sinüs(10,3) için fonksiyonumuzun 0,1788 değerini dönmesi gerektiğini hesaplamış olalım. Üçüncü aşamada, bu kaynak seti ve metamorfik ilişkileri kullanarak yeni test senaryolarını hızlı şekilde hesaplayabiliriz. Gene aynı örnek üzerinden gidecek olursak, sinüs(10,3 + 360) yani sinüs (370,3)’ün de 0,1788 değerine eşit olması gerektiğini hızlı şekilde bulabiliriz. Benzer şekilde, sinüs(-10,3) için fonksiyonumuzun -0,1788 değerini dönmesi gerektiği hesaplanacaktır. Türetilen bu yeni senaryolar da yazılım üzerinde çalıştırılarak metamorfik ilişkilerin sağlanıp sağlanmadığı kolaylıkla test edilebilecektir.


Metamorfik ilişkilere (Mİ) verilebilecek çok sayıda örnek mevcuttur. Bu örneklerden bazıları aşağıdaki tabloda verilmiştir.

Metamorfik İlişki Örnekleri
Metamorfik İlişki Örnekleri

Liu ve arkadaşları tarafından yapılan bir çalışmada, üç ila altı adet farklı metamorfik ilişki kullanılarak oluşturulan metamorfik test senaryolarıyla yapılan deneysel çalışma sonucunda, geleneksel test yöntemleriyle yakalanan hataların %90’ından fazlasının tespit edildiği ortaya konulmuştur. Bu çalışma, metamorfik test yaklaşımının hata yakalamadaki etkinliğini göstermesi açısından önemli bir çalışmadır.


Metamorfik test yaklaşımında, metamorfik ilişkiler ve kaynak test senaryo seti hazırlandıktan sonra, yeni türetilecek test senaryoları otomatik şekilde üretilebilecektir. Bu da test hazırlamak için ayrılan kaynakların daha verimli şekilde kullanmasını sağlayacaktır. Ancak metamorfik test yaklaşımını tek başına kullanarak yapılacak olan testlerin yazılımın doğru şekilde çalıştığını tek başına göstermeye yeterli olmayacağını da belirtmek gereklidir. Metamorfik test yaklaşımı ile sadece metamorfik ilişkilerin yazılım tarafından sağlandığı tam olarak gösterilebilecektir. Bu sebeple, metamorfik test yaklaşımını diğer test yöntemleri ile birlikte kullanarak hibrit bir çözüm uygulamak çok daha doğru bir yaklaşım olacaktır.


Kaynaklar:

1. T. Y. Chen, S. C. Cheung, and S. M. Yiu, “Metamorphic testing: A new approach for generating next test cases,” Technical Report HKUST-CS98-01, Department of Computer Science, The Hong Kong University of Science and Technology, Tech. Rep., 1998.


2. C. B. Barus, “Matrix Multiplication Program : A Case Study of Metamorphic Testing”, ARPN Journal of Engineering and Applied Sciences, Vol. 10, No. 3, 2015.


3. M. Srinivasan, M. Pourreza Shahri, U. Kanewala, and I. Kahanda, “Quality Assurance of Bioinformatics Software: A Case Study of Testing a Biomedical Text Processing Tool Using Metamorphic Testing”, 3rd International Workshop on Metamorphic Testing (MET), Gothenburg, Sweden, 2018.


4. Z. Q. Zhou, D. H. Huang, T. H. Tse, Z. Yang, H. Huang, and T. Y. Chen, “Metamorphic testing and its applications,” in Proceedings of the 8th International Symposium on Future Software Technology (ISFST 2004). Software Engineers Association, 2004.


5. U. Kanewala ve J. M. Bieman, “Techniques for testing scientifc programs without an oracle,” in Proceedings of the 5th International Workshop on Software Engineering for Computational Science and Engineering (SE-CSE ’13). IEEE Press, 2013.


6. H. Liu, F.-C. Kuo, D. Towey, ve T. Y. Chen, “How effectively does metamorphic testing alleviate the oracle problem?” IEEE Transactions on Software Engineering, vol. 40, no. 1, 2014.



129 görüntüleme0 yorum

Son Yazılar

Hepsini Gör

Comments


Commenting has been turned off.
bottom of page