- Birim Testine Karşı Entegrasyon Testi ve Fonksiyonel Test
- Birim Testi Nedir?
- Entegrasyon Testi Nedir?
- Birim Testi ve Entegrasyon Testi
- İşlevsel Test
- Sonuç
- Önerilen Okumalar
Birim, Entegrasyon ve Fonksiyonel Testlerin Detaylı Karşılaştırması:
Herhangi bir yazılım uygulaması için, hem Birim testi hem de Entegrasyon testi çok önemlidir, çünkü her biri bir yazılım uygulamasını test etmek için benzersiz bir süreç kullanır.
Ancak herhangi biri veya hatta her ikisi de hiçbir noktada İşlevsel testin yerini alamaz.
Birim Testine Karşı Entegrasyon Testi ve Fonksiyonel Test
Birim testi kodun doğru çalıştığını teyit etmek için bir uygulamanın münferit modüllerini izole olarak (bağımlılıklarla etkileşim olmadan) test etmek anlamına gelir.
Entegrasyon testi farklı modüllerin bir grup olarak bir araya getirildiğinde sorunsuz çalışıp çalışmadığını kontrol etmek anlamına gelir.
İşlevsel test Kodun doğru şeyleri yaptığını doğrulamak için sistemdeki bir işlevsellik dilimini (bağımlılıklarla etkileşime girebilir) test etmek anlamına gelir.
Fonksiyonel testler entegrasyon testleri ile ilişkilidir, ancak tüm uygulamanın işlevselliğini tüm kodlar birlikte çalışırken kontrol eden testleri, neredeyse bir süper entegrasyon testini ifade eder.
Birim testi, sistemin tek bir bileşenini kontrol ederken, işlevsellik testi, bir uygulamanın çalışmasını sistem gereksinim belirtiminde açıklanan amaçlanan işlevselliğe göre kontrol etmeyi dikkate alır. Öte yandan, entegrasyon testi, sistemdeki entegre modülleri kontrol etmeyi dikkate alır.
Ve en önemlisi, yatırım getirisini (ROI) optimize etmek için kod tabanınızda mümkün olduğunca çok birim testi, daha az entegrasyon testi ve en az sayıda işlevsel test bulunmalıdır.
Bu durum en iyi şekilde aşağıdaki test piramidinde gösterilmektedir:
Birim testlerinin yazılması daha kolay ve yürütülmesi daha hızlıdır. Testlerin uygulanması ve sürdürülmesi için gereken zaman ve çaba, yukarıdaki piramitte gösterildiği gibi birim testinden işlevsel teste doğru artar.
Örnek:
Bu üç test türünü aşırı basitleştirilmiş bir örnekle anlayalım.
Örneğin İşlevsel bir cep telefonu için gerekli olan ana parçalar "batarya" ve "sim kart "tır.
Birim testi örneği - Bataryanın ömrü, kapasitesi ve diğer parametreleri kontrol edilir. Sim kartın aktivasyonu kontrol edilir.
Entegrasyon Testi Örneği - Batarya ve sim kart entegre edilmiştir, yani cep telefonunu çalıştırmak için bir araya getirilmiştir.
Fonksiyonel Test Örneği - Bir cep telefonunun işlevselliği, özellikleri ve pil kullanımının yanı sıra sim kart olanakları açısından da kontrol edilir.
Meslekten olmayanlar için bir örnek gördük.
Şimdi, bir giriş sayfasının teknik bir örneğini ele alalım:
Hemen hemen her web uygulaması, kullanıcılarının/müşterilerinin oturum açmasını gerektirir. Bunun için her uygulamanın bu öğeleri içeren bir "Oturum Açma" sayfası olması gerekir:
- Hesap/Kullanıcı Adı
- Şifre
- Giriş / Oturum Açma Düğmesi
Birim Testi için test senaryoları aşağıdakiler olabilir:
- Alan uzunluğu - kullanıcı adı ve şifre alanları.
- Giriş alanı değerleri geçerli olmalıdır.
- Oturum açma düğmesi yalnızca her iki alana da geçerli değerler (Biçim ve uzunluk) girildikten sonra etkinleştirilir.
Entegrasyon Testi için test senaryoları aşağıdakiler olabilir:
- Kullanıcı, geçerli değerleri girdikten ve giriş düğmesine bastıktan sonra hoş geldiniz mesajını görür.
- Kullanıcı, geçerli giriş yaptıktan ve Giriş düğmesine tıkladıktan sonra karşılama sayfasına veya ana sayfaya yönlendirilmelidir.
Şimdi, birim ve entegrasyon testleri yapıldıktan sonra, ek testleri görelim fonksiyonel testler için dikkate alınan test senaryoları:
- Beklenen davranış kontrol edilir, yani kullanıcı geçerli bir kullanıcı adı ve parola değerleri girdikten sonra oturum açma düğmesine tıklayarak oturum açabilir mi?
- Başarılı bir oturum açma işleminden sonra görüntülenecek bir hoş geldiniz mesajı var mı?
- Geçersiz bir oturum açma işleminde görünmesi gereken bir hata mesajı var mı?
- Giriş alanları için saklanan site çerezleri var mı?
- Etkinleştirilmemiş bir kullanıcı oturum açabilir mi?
- Şifrelerini unutan kullanıcılar için herhangi bir 'şifremi unuttum' bağlantısı var mı?
Fonksiyonel test gerçekleştirirken bir fonksiyonel test uzmanının aklına gelen bu gibi çok daha fazla durum vardır. Ancak bir geliştirici, Birim ve Entegrasyon test senaryoları oluştururken tüm durumları ele alamaz.
Bu nedenle, birim ve entegrasyon testlerinden sonra bile henüz test edilmemiş çok sayıda senaryo vardır.
Şimdi sıra Birim, Entegrasyon ve Fonksiyonel testleri tek tek incelemeye geldi.
Birim Testi Nedir?
Adından da anlaşılacağı gibi, bu seviye bir 'Birimi' test etmeyi içerir.
Burada birim, bir uygulamanın test edilebilir en küçük parçası olabilir, en küçük bireysel işlev, yöntem vb. olabilir. Yazılım geliştiriciler, birim test senaryolarını yazanlardır. Burada amaç, gereksinimler ile birimin beklenen davranışını eşleştirmektir.
Aşağıda birim testi ve faydaları hakkında birkaç önemli nokta yer almaktadır:
- Birim testi, yazılım geliştiriciler tarafından beyaz kutu test teknikleri kullanılarak Entegrasyon testinden önce yapılır.
- Birim testi sadece olumlu davranışı, yani geçerli girdi durumunda doğru çıktıyı değil, aynı zamanda geçersiz girdi ile ortaya çıkan hataları da kontrol eder.
- Sorunları/hataları erken bir aşamada bulmak çok faydalıdır ve genel proje maliyetlerini azaltır. Birim testi kodun entegrasyonundan önce yapıldığından, bu aşamada bulunan sorunlar çok kolay bir şekilde çözülebilir ve etkileri de çok azdır.
- Birim testleri küçük kod parçalarını veya tek tek işlevleri test eder, bu nedenle bu test senaryolarında bulunan sorunlar/hatalar bağımsızdır ve diğer test senaryolarını etkilemez.
- Bir diğer önemli avantaj ise birim test senaryolarının kodun test edilmesini basitleştirmesi ve kolaylaştırmasıdır. Böylece, koddaki yalnızca en son değişiklik test edileceğinden, sorunları daha sonraki bir aşamada çözmek de daha kolay hale gelir.
- Birim testi zaman ve maliyet tasarrufu sağlar, yeniden kullanılabilir ve bakımı kolaydır.
JUnit (Java framework), PHPUnit (PHP framework), NUnit (.Net framework) vb. farklı diller için kullanılan popüler birim test araçlarıdır.
Entegrasyon Testi Nedir?
Entegrasyon testi, sistemin farklı parçalarının birbirine entegrasyonunun test edilmesidir. Sistemin iki farklı parçası veya modülü önce entegre edilir ve ardından entegrasyon testi gerçekleştirilir.
Entegrasyon testinin amacı, entegre edildiğinde sistemin işlevselliğini, güvenilirliğini ve performansını kontrol etmektir.
Entegrasyon testi, önce birim testi yapılan modüller üzerinde gerçekleştirilir ve ardından entegrasyon testi, modüllerin kombinasyonunun istenen çıktıyı verip vermediğini tanımlar.
Entegrasyon testi bağımsız test uzmanları tarafından yapılabileceği gibi geliştiriciler tarafından da yapılabilir.
3 farklı türde Entegrasyon testi yaklaşımı vardır. Her birini kısaca tartışalım:
a) Büyük Patlama Entegrasyon Yaklaşımı
Bu yaklaşımda, tüm modüller veya birimler tek seferde bir bütün olarak entegre edilir ve test edilir. Bu genellikle tüm sistem tek bir noktada entegrasyon testi için hazır olduğunda yapılır.
Lütfen bu entegrasyon testi yaklaşımını sistem testi ile karıştırmayın, sistem testinde olduğu gibi tüm sistem değil, yalnızca modüllerin veya birimlerin entegrasyonu test edilir.
Büyük patlama yaklaşımının başlıca avantaj entegre edilen her şeyin tek seferde test edilmesidir.
Bir büyük Dezavantaj arızaları tespit etmenin zorlaşmasıdır.
Örnek: Aşağıdaki şekilde, Ünite 1 ila Ünite 6, Büyük Patlama yaklaşımı kullanılarak entegre edilmiş ve test edilmiştir.
b) Yukarıdan Aşağıya Yaklaşım
Birimlerin/modüllerin entegrasyonu en üst seviyeden en alt seviyeye kadar adım adım test edilir.
İlk birim test STUB'ları yazılarak tek tek test edilir. Bundan sonra, son seviye bir araya getirilip test edilene kadar alt seviyeler tek tek entegre edilir.
Yukarıdan aşağıya yaklaşım, gerçek ortamda işlerin nasıl gerçekleştiğiyle tutarlı olduğu için çok organik bir entegrasyon yöntemidir.
Sadece endişe Bu yaklaşımda ana işlevsellik en sonda test edilir.
c) Aşağıdan Yukarıya Yaklaşım
Üniteler/modüller, tüm ünite/modül seviyeleri entegre edilene ve tek bir ünite olarak test edilene kadar adım adım aşağıdan yukarıya doğru test edilir. SÜRÜCÜLER Bu yaklaşımda alt seviyelerdeki sorunları veya hataları tespit etmek daha kolaydır.
Başlıca Dezavantaj Bu yaklaşımın en önemli özelliği, üst düzey sorunların ancak tüm birimler entegre edildikten sonra tespit edilebilmesidir.
Birim Testi ve Entegrasyon Testi
Birim testi ve entegrasyon testi hakkında yeterince tartıştıktan sonra, aşağıdaki tabloda ikisi arasındaki farkları hızlıca gözden geçirelim:
Birim Testi | Entegrasyon Testi |
---|---|
Tüm sistemin tek bir bileşenini test eder, yani bir birimi izole olarak test eder. | Sistem bileşenlerinin birlikte çalışmasını test eder, yani birden fazla birimin işbirliğini test eder. |
Daha hızlı yürütme | Yavaş çalışabilir |
Harici bağımlılık yok. Herhangi bir harici bağımlılık taklit edilir veya dışarıda bırakılır. | Dış bağımlılıklarla etkileşim gerektirir (ör. Veritabanı, donanım, vb.) |
Basit | Kompleks |
Geliştirici tarafından yürütüldü | Test uzmanı tarafından yürütülür |
Bir tür beyaz kutu testidir | Bir tür kara kutu testidir |
Testin ilk aşamasında gerçekleştirilir ve daha sonra her zaman yapılabilir | Birim testinden sonra ve sistem testinden önce gerçekleştirilmelidir |
Ucuz bakım | Pahalı bakım |
Modül spesifikasyonundan başlar | Arayüz spesifikasyonundan başlar |
Birim testi, her bir küçük kod parçasının yapması amaçlanan şeyi yapıp yapmadığını kontrol ettiği için dar bir kapsama sahiptir. | Tüm uygulamayı kapsadığı için daha geniş bir kapsama sahiptir |
Birim testinin sonucu, kodun ayrıntılı görünürlüğüdür | Entegrasyon testinin sonucu, entegrasyon yapısının ayrıntılı görünürlüğüdür |
Yalnızca münferit modüllerin işlevselliğindeki sorunları ortaya çıkarır. Entegrasyon hatalarını veya sistem genelindeki sorunları ortaya çıkarmaz. | Genel sistemi oluşturmak için farklı modüller birbirleriyle etkileşime girdiğinde ortaya çıkan hataları ortaya çıkarın |
İşlevsel Test
Belirli bir girdi sağlandığında istenen çıktıyı üretmek için uygulamanın işlevselliğinin test edildiği kara kutu test tekniğine 'İşlevsel test' denir.
Yazılım test süreçlerimizde bunu, gereksinimlere ve senaryolara göre test senaryoları yazarak gerçekleştiriyoruz. Herhangi bir işlevsellik için yazılan test senaryosu sayısı bir ila birçok arasında değişebilir.
Sonuç
Tüm bu üç test türü birbiriyle ilişkilidir.
Tam kapsam elde etmek için, kod yolları/satırları için birim testleri, 'birimlerin' birlikte uyumlu bir şekilde çalıştığından emin olmak için işlevsel ve Entegrasyon testleri gereklidir.
Umarım bu makale size Birim, Entegrasyon ve Fonksiyonel testler ve aralarındaki farklar hakkında net bir fikir vermiştir, ancak bu test türlerinde çok daha fazlası vardır!