Yazılım Test 101 — Yazılım Test Teknikleri Nelerdir?

Elif İ. Eser
Nettsi Bilişim Teknoloji A.Ş.
5 min readJul 7, 2020

Serimizin ikinci yazısında yazılım test metotları nelerdir, dezavantajları ve avantajları nedir onlardan bahsedeceğiz.

Yazılım testlerinde en sık kullanılan test metotları Black box ve White box test metotlarıdır. Hadi gelin bu test metotlarını biraz daha derinlemesine inceleyelim.

Black Box Test Nedir?

Test altındaki uygulamaların, kod yapısına bakmadan sistemin işlevselliğinin test edildiği bir test tekniğidir, aslında ismi de buradan gelmektedir, elimizde kara bir kutu var ve içini açıp bakmadığımız sürece içindeki yapıyı görememekteyiz. Testi gerçekleştiren kişi test altındaki uygulamanın kod yapısını göremez ve genellikle kodun mimarisinden habersizdir. Black Box test yöntemi, test altındaki uygulamaya çeşitli girişler uygulandıktan sonra ortaya çıkan sonuçların beklenen sistem çıkışları ile doğrulanmasına dayanır. Black Box test teknikleri gereksinim belgelerinden veya tasarım özelliklerinden üretilebilir. Bu yüzden gereksinimler çıkar çıkmaz test başlayabilir. Black Box test yöntemi ile herhangi bir sistemi test edebiliriz.(Linux, Website, Veri tabanı veya kendi uygulamalarımızı).Amacımız kodun işlevselliğine odaklanmak değil sadece giriş ve çıkışlara odaklanmaktır ve bu şekilde zamanı daha verimli kullanmamızı sağlar.

Black Box Test Teknikleri Nelerdir?

Sınır Değer Analizi Testi (Boundry Value Testing)

Sınır değer analizinde test altındaki uygulamaların sınırlardaki davranışları test edilir. Bir değer aralığını kontrol ederken, kendi sistemimiz için geçerli olan bir bölüm seçtikten sonra programın geçerli bölümlerinin sınır değerlerindeki davranışları kontrol edilir.

Basit bir örnek vermek gerekirse,

Alt limit 1 üst limit 20 kişi olarak belirlenen bir sistemimiz olsun, (if 1<x<20)

Bunun için sistemimizi, geçerli aralık için alt sınır [1,2] üst sınır [19,20] ve geçersiz aralık için alt sınır[0], üst sınır [21] olacak şekilde test etmeliyiz.

Denklik Sınıflarına Ayırma Testleri (Equivalance Partitioning Testing)

Denklik sınıflarına ayırma test tekniğinin amacı bir sistemi test ederken sistemin aynı şekilde davranması ve aynı sonucu vermesini sağlayan giriş verisi kümelerini ortadan kaldırmaktır. Amacımız zaman kısıtı olduğu için aynı sonucu alacağımız girdiler için tekrar tekrar testi gerçekleştirmemektir. Denklik sınıflarına ayırma testi bir program yürütülürken aynı sonucu veren veri kümesinin bir giriş koşulu olarak tanımlanmasını ve bunları eşdeğer veri kümesi olarak sınıflandırmayı sağlar. Yukarıdaki örneği baz alarak sınıflandırma yaparsak geçerli aralık içinden [1–20] arası bir değer, 1’den küçük değerler için olan aralıktan bir değer, negatif değer girilmesi, 20 ‘den büyük değerler için bir değer olacak şekilde kümeler oluşturup test girişlerini belirleriz.

Durum Geçiş Testleri (State Transition Testing)

Bu tür testlerde sistem bir bölüm içindeki tüm test giriş varyasyonlarını aynı şekilde ele alacaktır. Sistem giriş koşullarından birinden geçerse, bölüm içerisindeki diğer tüm giriş koşullarından da geçer. Giriş koşullarından birinden başarısız olursa, bölüm içerisindeki diğer tüm koşullardan başarısız olur.

Karar Tablosu Testleri (Decision Table Testing)

Farklı girdi kombinasyonları olan sistem davranışlarını test etmek için kullanılan bir yazılım test tekniğidir. Bu farklı giriş kombinasyonlarının ve bunlara karşılık gelen sistem davranışının tablo şeklinde gösterildiği şematik bir yaklaşımdır. Sebep ve sonuç gösterdiği için aynı zamanda sebep-sonuç tablosu olarak da adlandırılır.

Black Box Test Türleri Nelerdir?

Fonksiyonel Kara Kutu Testi (Functional Black Box Testing)

Bu kara kutu test tekniği sistemin fonksiyonel gereksinimleri ile ilgilidir. Yazılımlar modüller ve bileşenler halinde yazılmıştır. Bütün bir sistemi bir araya gelerek oluşturan modüllerin beklendiği gibi çalıştığından emin olmak için yapılan testtir. Şu şekilde bir örnek verebiliriz, toplama işlemi gerçekleştiren bir modülümüz var, basit olarak test girişlerimiz şu şekilde olmalıdır.

1- Negatif sayı

2- Pozitif bir sayı

3- Sıfır

4- Ondalıklı sayı

5- Sayı olmayan bir değer

6- Boş bir giriş

Yukarıdaki giriş değerlerinde 4 girişin geçerli, son 2 girişin bir hata mesajı vermesi gerektiği görülebilir. Bu şekilde gerçekleştirilen testlere fonksiyonel test denir.

Fonksiyonel Olmayan Kara Kutu Testi (Nonfunctional Black Box Testing)

Bu test yönteminde genellikle test edilecek yazılımın kalitesi kontrol edilir. Kalite çeşitli olumsuz koşullar altında bir ürünün, zaman, doğruluk, kararlılık ve dayanıklılığına bağlıdır. Aslında geliştirilen yazılımın kullanıcının beklentilerine göre her koşulda sorunsuz ve verimli bir şekilde çalışmasını sağlamak için yapılan testlerdir.

Regresyon Testi (Regression Testing)

Bu test türü yazılım geliştirilirken yazılımda her hangi bir yerde değişiklik yaptığımız da sistemin diğer bölümlerini beklenmedik şekilde etkilemediğinden emin olmak için tüm sistemin kara kutu (işlevsel ve işlevsel olmayan testlerinde dahil olduğu) testini yaptığımız zamandır.

Şimdi sıra geldi White Box teste, hadi bu konuyu biraz detaylandıralım.

White Box Test Nedir?

White Box test ismi aslında Glass Box test olarak da kullanılmaktadır, bu test aslında test edeceğimiz kodun dahili yapısı ve mantığı ile ilgilidir. Yani artık Black Box yönteminin aksine dışarıdan baktığımızda kod yapısı şeffaf bir biçimde görülmektedir. White Box test mantığına göre yazılan testler, yazılan kodun kapsamını, kodun mantığını ve ifadelerini içerir. White box testi uygulayan kişinin kodun iç yapısıyla uğraşması gerektiği için test edilecek uygulamanın hangi dil ile yazıldıysa o dile, kodlama ve mantık bilgisine hakim olması gerekir. White Box test tekniği kodun dahili güvenlik açıklıkları, kodlama işlemlerindeki bozukluk, kötü yapılandırılmış modüller, koşullu döngülerin işlevselliği, her bir ifadenin, nesnenin ve fonksiyonların ayrı ayrı test edilmesini içerir. Temel amaçlardan birisi bir uygulama için çalışma akışını doğrulamaktır.

White Box Test Teknikleri Nelerdir?

White box testin ana özelliği kod kapsamı analizidir. Kod kapsamı analizi test case’lerde ortaya çıkan boşlukları ortadan kaldırır. Kod kapsamı analizi yapmak için kullanılan teknikler aşağıdaki gibidir.

Statement Covarage: Bu testler de kod, uygulamanın her ifadesini en az bir kez gerçekleştirecek şekilde yürütülür. Her deyimin en az bir kez çalıştırılması hedeflenir.

Branch Covarage: Tüm branch’ların en az bir kez test edildiğinden emin olmak için gerçekleştirilir.

Path Covarage: Tüm olası yolları test etmek içi kullanılan test tekniğidir. Yani aslında hem statement covarage hemde branch covarage tekniğinin birleşimidir.

White Box Test Türleri Nelerdir?

Birim Test (Unit Test)

Genellikle bir uygulama üzerinde yapılan ilk test türüdür. Geliştirici bir modülün veya kod birimlerinin doğru çalışıp çalışmadığını kontrol etmek için birim testi gerçekleştirir. Birim testi geliştiriciler tarafından gerçekleştirilir. Bir yazılımcı kod da ilerlemeden önce birim testleri gerçekleştirerek kodların çalışıp çalışmadığından emin olmak için bu test tekniğini uygular.

Statik ve Dinamik Analiz

Statik analiz koddaki olası hataları bulmak için kodun iç yapısını iyice incelemeyi gerektirir. Kod ve doküman gözden geçirilmelidir.

Dinamik analiz, kod yürütülürken gerçekleştirilen analizdir.Giriş kriterleri, çıkış kriterleri, durdurma ve başlatma kriterleri belirlenmelidir.

Bellek Sızıntılarını Test Etme (Testing for Memory Leaks)

Bellek sızıntıları, uygulamaların sistem kaynaklarını tüketmesine ve dolayısıyla uygulamaların daha yavaş çalışmasına sebep olur. Bu yüzden geliştiricilerin veya testcilerin bellek sızıntısını tespit etmek için gerçekleştirdikleri testlerdir.

Bunların yanında güvenlik testleri ve mutation testleri de white box test tekniğine girmektedir.

Black Box vs White Box

Bu yazımda yazılım test metotları nelerdir ayrıntılı bir şekilde inceledik. Gelecek yazımda black box test başlığı adı altında bahsettiğim fonksiyonel ve fonksiyonel olmayan test türleri nelerdir ayrıntılı bir şekilde inceleyeceğiz.

Umarım bu yazım faydalı olmuştur. Bir sonraki yazımda görüşmek üzere…

--

--

Elif İ. Eser
Nettsi Bilişim Teknoloji A.Ş.

"Knowledge should not be confined within the walls of academia."