Kod Kalitesi ve Kod Analizi yazı dizimizin bu haftaki sayısında White Box Testing konusunu ele alacağız. Önceki haftalarda yayınlanmış yazılarımıza ulaşmak için linkleri takip edebilirsiniz: Dynamic Code Analysis, Static Code Analysis, X-Driven Development, Clean Code.
Bu test tekniğinin en genel tarifi kodun kendisinin test edilmesidir. Test eden kişi uygulamaya ait girdi-çıktı, kod tasarımı ve kodun doğru çalıştığını kontrol eder. Bu test tekniğini yapmak için kodlama bilgisinin iyi seviyede olması gerekir. Çünkü test arayüz seviyesinde değil, doğrudan doğruya kod seviyesinde yapılacaktır.
White Box Testing Nerelerde Uygulanabilir?
White Box test tekniği; birim testi, entegrasyon testi ve sistem test seviyelerinde uygulanır. Ama en çok birim testi aşamasında yapılır. Çünkü bu aşamada kod daha granüler bir yapıda ve problemler dahi kolay çözülebilir nitelikte olmaktadır. Kodun iç yapısı analiz edilerek, test koşulları ve test senaryoları üretilir ve ardından kontrol edilir.
White Box Testlerinin Avantajları ve Dezavantajları Nelerdir?
White Box tekniğinin en önemli avantajları şu şekildedir:
- Teste daha erken zamanda başlanır. Arayüzün kullanılır hale gelmesi beklenmez.
- Daha kapsamlı bir test yapılır. Test kodu pass olmadan canlı ortama geçiş yapılmaz.
White Box tekniğinin en kritik dezavantajları ise şu şekildedir:
- Kodlama testleri karmaşık olabileceğinden, programlama ile ilgili iyi bilgisi olan kişilere ihtiyaç vardır.
- Uygulamada sürekli bir değişiklik olduğunda, test scriptlerinin bakımı zaman maliyetine neden olacaktır.
White Box’ın Alt Test Teknikleri Nelerdir?
White Box test yöntemine ait 7 alt test tekniği vardır. Bunlar aşağıdaki gibidir.
- Statement Testing
- Decision Testing
- Branch Testing
- Condition Testing
- Decision Condition Testing
- Modified Condition/Decision Coverage
- Multiple Condition Testing
Bu test tekniklerinden 3 tanesini inceleyelim.
Statement Testing Nedir
Test edilen kodun yapısına bağlı olarak senaryo elde etmek için kullanılır. Statement Testing ile kaynak koduna bakarak yazılımdaki döngü kontrol edilir. Döngü bir veya birçok kez farklı test senaryoları üreterek test edilebilir. Kod Kapsamı Tekniği (Code Coverage Technique) olarak da adlandırılır. Geliştiriciler Unit, Component ve Integration Test seviyelerinde bu tekniği kullanabilir.
Kaynak koddaki kod kapsamını hesaplamak için aşağıdaki formül kullanılır.
Branch Testing
Programlama dilinde branch, if şart koşulu gibidir. İki değeri vardır: True ve False.
Yazılım da her karar noktasındaki olası şartlardan her birinin en az bir kere test edilmesi ve böylece tüm kodun çalıştırılmasını amaçlayan test yöntemidir. Her şartta True ya da False alınır. Böylece her bir yol kontrol edilmiş olur.
(1) 1A-2C-3D-E-4G-5H
(2) 1A-2B-E-4F
Yukarıdaki akıştan da görüleceği üzere tüm yollardan geçilmiş ve path belirlenmiştir.
Modified Condition/Decision Coverage
Özelikle, güvenlik açısından kritik yazılımlar için yeterli derecede test etmek için önemli bir yöntemdir. Sonuç olarak bir seçim yapılabilirse, o seçeneğe katkıda bulunan tüm olabilecek kararların test edilmesi tekniği vardır.
Aşağıdaki kodu test etmek için incelediğimizi varsayalım.
if ( (A || B) && C )
{
/* talimatlar, açıklamalar*/
}
else
{
/* talimatlar, açıklamalar*/
}
Burada A, B ve C boolean ifadelerini temsil etmektedir.Bu örnekte Condition Coverage kriterlerini sağlamak için A, B ve C, testler sırasıyla en az bir kez “True” ve bir kez “False” olarak değerlendirilmelidir. Aşağıdaki 2 testte bunu sağlamaktadır.
- A = true / B = true / C = true
- A = false / B = false / C = false
Decision Covarage kriterlerini sağlamak için durum ((A veya B) ve C) en az bir kez “True”, bir kez de “False” olarak değerlendirilmelidir.
A = true / B = true / C = true
A = false / B = false / C = false
Bu iki test, her bir boolean değişkeninin bir kez “gerçek” ve bir kez de “sahte” olarak değerlendirilmesi gerektiği anlamına gelen Modified Condition/Decision Coverage sağlamaz ve bu da kararın sonucunu etkileyebilir.
Bir test durumundan diğerine, yalnızca bir şartın değerinin değiştirilmesi kararın sonucunu da değiştirecektir. Ancak önceki iki testten sadece, hangi şartın kararın değerlendirmesini etkilediğini bilmek imkansızdır.
Uygulamada, n boolean koşulları olan bir karar için, değiştirilmiş Condition / Decision Covarage sağlayabilmek için en az n + 1 test bulmamız gerekir. Örneğimizde 3 boolean koşulu (A, B ve C) olduğu için, aşağıdaki testleri yapabiliriz.
A = false / B = false / C = true >>> decision : false
A = false / B = true / C = true >>> decision : true
A = false / B = true / C = false >>> decision : false
A = true / B = false / C = true >>> decision : true
Mehmet Tanlak
Keytorc – Yazılım Test Otomasyon Mühendisi – SDET