Merhaba arkadaşlar.
Bu makalemde sizlerle Test nedir ve neden önemlidir, Entegrasyon Testi nedir ve Entegrasyon Testi Türleri nelerdir hakkında, tecrübelerim doğrultusunda bilgiler sunmaya çalışacağım.
Öncelikle Test nedir kavramını kendimce açıklamak istiyorum sizlere:
Projemizde geliştirmiş olduğumuz modül veya operasyonel işlerin, doğru bir şekilde çalıştığını veya farklı modüllerinde eklenmesi durumda hala doğru çalıştığını hızlıca anlayabilmemizi sağlayan yapılardır.
Test türleri genel anlamında ikiye ayrılmaktadır. Test türlerine hızlıca açıklık getirmek gerekirse:
1) Birim Testi (Unit Test):
Uygulamamızı geliştirirken isminden de anlaşılacağı üzere geliştirmiş olduğumuz kodun küçük bir kısmını hızlıca doğruluğunu test edebilmemizi sağlayan test türüdür. Örneğin tüm ürünleri listeleyen bir metot geliştirdiğimizi düşünelim ve bunu test edebilmek için o metodun tüm ürünleri listeleyip listelemediğine hızlıca bakabilmemizi sağlar.
2) Entegrasyon Testi (Integration Test):
Makalemin de konusu olan entegrasyon testide isminden anlaşılabileceği üzere, birbirleri ile bağlı bir şekilde çalışan bir kaç modülü test edebilmemizi sağlayan test türüdür.
Bu noktada bir hususa değinmek istiyorum. Bu iki test grubu arasında genellikle en sık yapılan hata ise: Test Güdümlü Yazılım (TDD) geliştirirken, birim testleri yazmak için başlayıp sonrasında ise fark etmeden entegrasyon testinin yazılmasıdır. Evet ne olmuş, sonuçta ikisi de test ve biz test güdümlü yazılım geliştiriyoruz ne fark eder? gibi sorular aklınıza gelebilir.
Oysa entegrasyon testleri, yukarıda da bahsettiğim gibi birbirleri ile bağlı bir şekilde çalışan bir kaç modülün bir araya gelerek çıkardıkları sonuçla ilgilenirken, birim testleri ise sadece birim başı testlerle ilgilenir. Eğer TDD odaklı yazılım geliştirme yaparken entegrasyon testine yönlenirse , method bazlı doğruluğu sağlayamamış oluruz.
Entegrasyon testine geri dönecek olursak, Entegrasyon testindeki asıl amaç:
Oluşturulan yazılım modüllerinin, bir araya getirerek doğruluğunu sağlamaktır. Yazılım ürünü için oluşturulan tüm modüller bir araya getirilir ve bu şekilde test edilir. Burada ki amaç: metotlar birim başına testten geçerken, modüller halinde bir araya geldiğinde bazı hatalara sebep oluyor olabilirler. Entegrasyon testleri ile ise bu tarz yazılım ürünü problemlerinin henüz canlı (prod) ortama çıkmadan veya geliştirdiğimiz yeni bir modülün de sorunsuz çalışabileceğinden hızlı bir şekilde emin olabilmemizi sağlamaktadır.
Entegrasyon testleri dört’e ayrılır:
1) Big Bang Integration Test:
En yaygın kullanılan entegrasyon test tipidir. Geliştirilmiş tüm modüller bir araya getirilerek yapılan testtir. Hızlı ve kolay bir şekilde birbirleri ile beraber çalıştıklarında anlam ifade eden modüllerin doğruluğunu sağlar fakat birim başı metot doğruluğunun gözden kaçınılması olasıdır.
2) Top-Down Integration Test:
Bu entegrasyon testindeki amaç ise modüller arası geçiş yapılırken hatalı olan modülün kolay bir şekilde bulunabilmesini sağlamaktır. Test işlemi yukarıdan aşağı doğru gerçekleşmektedir ve her birinin test işleminden başarılı bir şekilde geçerek ilerlemesi gerekmektedir. Her bir modül testleri stub olarak adlandırılmaktadır. Modül ağacının son bacaklarında ise her bir stub kendi içerisinde test edilerek test işlemi sonuçlandırılır.
3) Bottom-Up Integration Test:
Bu test yöntemi ise Unit Testler ile beraber ilerlemektedir. Alt tarafta bulunan tüm stublar, Unit Testlerden geçirilerek yukarıya doğru ilerlenir. Top-Down’da olduğu gibi yukarıya ilerlerken Unit Testler aracılığı ile her test başarılı olarak sonuçlanmalıdır. Tüm stublar için Unit Testler oluşturulduktan sonra bir üst seviyede hepsi bir ele alınarak test işlemi yapılır. Bu test tipindeki amaç ise stublardan başlayarak hataların en kısa sürede bulunabilmesidir.
4) Sandwich/Hybrid Integration Test:
Modüllerin bir kısmı Top-Down, bir diğer kısmı ise Bottom-Up tiplerini kullanılarak gerçekleştirilen test tipidir. Bu karma tipteki amaç ise bazı modülleri gruplara ayırabilirken diğer modülleri ise ayrı bir şekilde test edebilmektir.
Genel hatları ile entegrasyon test tipleri bu şekildedir. Yukarıda da belirttiğim gibi en sık kullanılan entegrasyon test tipi genelde Big Bang Integration Test dir. Amacımız genelde yazdığımız modüllerin tutarlılığını sağlamak olduğu için bu test tipi bir çok zaman yeterli olmaktadır. Tabi bu durum birazda iş kurallarına göre de değişiklik göstermektedir. Bir diğer faydası ise entegrasyon işlemi sırasında oluşabilecek hataların önceden önüne de geçebilmektir.
Entegrasyon testleri ile ilgili daha fazla bilgiye ulaşmak isterseniz buradan ulaşabilirsiniz.
Basit bir entegrasyon testine örnek vermek gerekirse:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17


using (var context = new EFContext())
{
// Arrange
// Yeni bir entity üretelim
var testValue = new Value() { Content= "Blabla" };
// Act
// DB'ye insert yapalım
context.Values.Add(testValue);
context.SaveChanges();
// Insert yapmış olduğumuz entity'i geri okuyalım.
var testValueFromDb = context.Values.Single(x => x.ID == testValue.ID);
// Assert
// Şimdi ise gelen entity'deki content'in eşitliğini kontrol edelim
Assert.AreEqual("Blabla", testValueFromDb.Content);
}
Bu örnek test case’inde, “testValue” nun veritabanına doğru bir şekilde kaydedilip kaydedilemediğini doğruluyoruz.
Bu makale toplam (7883) kez okunmuştur.