2.1. Giriş
Yazılım doğrulaması, bilgisayar sistemleri ve mevcut yazılımların kontrol edilmesi amacı ile kullanılmaktadır. Biçimsel mantık tekniği ile yazılım doğrulaması rahatlıkla ve kolaylıkla yapılabilmektedir. Ülkemizde ve dünyada yazılım testi ve kalite dernekleri kurulmuştur.
3.1. YAZILIM DOĞRULAMASI (Software Verification)
Yazılım doğrulaması, geliştirilen bir yazılımın verilen işi doğru yapıp yapmayacağını ve benzeri problemleri de doğru çözüp çözmeyeceğinin kontrol edilmesidir [1].
Yazılım doğruluğunun anlaşılması için birçok yöntem geliştirilmiştir. Ama ne yazık ki bu yöntemler herhangi bir programın doğru çalışıp çalışmadığını saptayacak genel yöntemler olmaktan çok uzaktır. Bu konu halen devam eden aktif bir araştırma alanıdır.
Yazılım doğrulamasının önemini anlamak için aşağıdaki örneğimizi inceleyelim.
Keloğlan padişahın kızına aşık olmuş. Gidip istemiş. Padişah,
sana kızımı veririm ama bana yedi gecede yedi saray yaptıra-
caksın demiş. Keloğlan durumu sevdiği kıza anlatmış. O da
boynundaki yedi halkalı zinciri keloğlana verip “al, bununla yedi
saray yap” demiş. Keloğlan zinciri alıp Kaf dağının ardındaki iyi
kalpli saraylar devini bulmuş. Zinciri gösterip, “bana bununla yedi
gecede yedi saray yapar mısın?” diye sormuş. Dev de her gece
bir saray yaparım, ama her sarayı yaptıktan sonra her gecenin
sabahında her gün için gün sayısı kadar halka isterim demiş [1].
Keloğlan’ın her sabah yapılan saray ücretini ödeyebilmesi için
yedi halkalı zinciri en az kaç defa kesmesi gerekir?
Çözüm:
Yedi halkalı zincir en az iki defa kesilir.
Resim1:Yazılım Doğrulaması Örnek
İlk sabah, deve tek halkayı verir.
İkinci sabah, tek halkayı devden alır, ikili zinciri verir.
Üçüncü sabah, elindeki tek halkayı tekrar deve verir.
Dördüncü sabah, devdeki tek halkayı ve ikili zinciri alıp deve dörtlü zinciri verir.
Beşinci sabah, deve tek halkayı verir.
Altıncı sabah, devdeki tek halkayı alıp ikili zinciri verir.
Yedinci sabah deve tek halkayı verir [1].
Yukarıda ki örnekten de anlaşılacağı gibi yazılım doğrulaması da aynı mantıkla çalışır.
4.1. YAZILIM DOĞRULAMASI (Software Verification) İLKELERİ
- Kurallara Uyma
- Birim Test
- Fonksiyonel Testi
- Sızıntı Bulma
- Güvenlik Testi
- Performans Testi
4.1.1. Kurallara Uyma (Rules Compliance)
Kötü yazılmış kodların üstüne kurulmuş uygulamalar, tutarsız ve güvenilmez olmanın yanında, zayıf kodlar, güvenlik saldırılarına kapılarını açar veya uygulamanın düşük performansla çalışmasına sebep olur. Kurallara uyan kodlar yaratmak, proje uygulamalarının kalitesini, güvenliğini ve güvenilirliğini arttırır [2].
4.1.2. Birim Test (Unit Testing)
Uygulama içerisindeki tüm modüller veya birimler güvenilir olmalı ve doğru çalışmalıdır. Eğer böyle olmazsa, uygulama doğru işlemeyecek veya beklenmeyen davranışlara sahip olacaktır. Bütün uygulamayı test ederek, her birimin doğru çalışıp çalışmadığını doğrulamak çok zor olacak ve etkin olmayacaktır [2].
4.1.3. Fonksiyonel Testi (Functional Testing)
Fonksiyonel test, kullanıcının isteklerinin uygulama tarafından karşılanıp karşılanmadığını doğrular. Kullanıcı hareketlerini kontrol ederek, işletim yollarının düzgün çalışıp çalışmadığından ve verilen ihtiyaçlar için uygun cevapların verilip verilmediğinden emin olmak için kullanıcı hareketlerinin benzerlerini yapar [2].
4.1.4. Sızıntı Bulma (Leak Detection)
Kaynak sızıntıları, tehlikeli hatalardır. Birçoğu ile karşılaşmazsınız, fakat bu hatalar ortaya çıktığı zaman uygulamanın çökmesine neden olacaktır. Bellek ve veritabanı bağlantıları, en yaygın iki kaynak sızıntısı örneğidir. Test esnasında kendilerini göstermedikleri için masraflı ve zaman harcatan bulunması zor hatalardır [2].
4.1.5. Güvenlik Testi (Security Testing)
Güvenlik testi, kullanıcılara, şifreler ve kimlik denetimlerini içeren uygulamaların güvenlik fonksiyonlarının doğru çalıştığını ve bilginin başarılı şekilde şifrelenip ve çözüldüğünü doğrulamak için olanak sağlar. Güvenlik testi ayrıca, kullanıcıların yazılmış olan kodun saldırılara karşı güvenli olduğundan emin olmalarını sağlar [2].
4.1.6. Performans Testi (Performance Testing)
Performans testi, çok kullanıcılı bir uygulamanın kullanılması sürecidir. Uygulamanın umulan trafik seviyelerinde, modellerde ve kombinasyonlarda, doğru olarak çalışıp çalışmadığını doğrular [2].
5.1. BİÇİMSEL MANTIK (Formal Logic)
Biçimsel mantık, Aristoteles’in geliştirdiği iki önbilgi ve bir sonuçtan oluşur.
Sonucun öznesi ve yüklemi, her iki önbilgide de bulunan, ama sonuçta
bulunmayan bir üçüncü terimle (orta terim) birlikte, her biri önbilgilerden
birinde olmak üzere açığa çıkar. Sonucun yüklemi büyük terimdir; bunu
içeren önbilgi büyük önbilgidir; sonucun öznesi küçük terimdir
ve onu içeren önbilgi de küçük önbilgidir [3].
Yazılım doğrulamasının doğruluğunu saptamak için kullanılan tekniklerden
biri olarak biçimsel mantık kullanılmaktadır. Bu teknik yazılım doğrulaması
problemini biçimsel mantık problemine dönüştürerek çözmeye çalışır [1].
Resim2:Biçimsel Mantık İf yapısı
Yukarıdaki örnekte; koşul doğru olduğunda komut1 işlem görecek, yanlış
olması durumunda komut2 işlem görür. İşte bu yapının doğruluğunu ispat
etmek için kullanılan bu takip kurallarına çıkarım (assertion) adı verilir.
Çıkarımlar yapının çeşitli noktalarına yerleştirilebilir.
Çıkarım kısmının yani karar kısmının
oluşturduğu çıkarımlara döngü sabitleri (invariants)
adı verilir [1].
6.1. YAZILIM DOĞRULAMASI (Software Verification) UYGULAMALARI
6.1.1. CPU Z
İşlemcinizin tüm niteliklerini, anakartınızın markasını, modelini, BIOS bilgilerini, bellek yuvalarındaki belleklerin hızını ve gecikme sürelerini bu yazılımla görebilirsiniz. Tek bir küçük pencere ve altı adet bilgi sekmesinden oluşan yazılımın yanında gelen bir de önbellek gecikmelerini ölçen ve çıktısını komut satırında veren bir yazılım var. Kurulum gerektirmiyor.
Resim3: CPU Z
6.1.2. HD Tune
Sabit diskinizle ilgili daha detaylı ölçümler yapan bu yazılım ücretsiz ve herhangi bir kayıt gerektirmiyor. Program öncelikle tüm diskinizi sıradan denetleyebiliyor ve her noktasındaki okuma ve erişim sürelerini ölçüyor. Info sekmesi size sabit diskinizin tüm bilgilerini ve üzerindeki bölümleri gösterebiliyor. Sonraki sekme olan Health kısmında ise diskin içinde neler olup bittiğini S.M.A.R.T. bilgilerinden görebilirsiniz. Son sekme ise diski hasarlara karşı tarayabiliyor. Diskinizdeki sıcaklığı sürekli olarak ölçmeniz de mümkün.
Resim4: HD Tune
6.1.3. RightMark D3D
RightMark’ın ürettiği görüntü sistemi sınama yazılımı bir çok detaylı test yapabiliyor. Açık kodlu geliştirilen yazılımın kullanılması ve dağıtılması tamamen serbest. Bir çok yeni teknolojiyi basit görünen (fakat sistemi oldukça zorlayan) görüntüler eşliğinde sınayabiliyorsunuz. Bir kaç sistemi test etmek için kendisine bir yığın işlem (batch) oluşturup kaydedebiliyorsunuz. Böylece aynı testi tam anlamıyla aynen tekrarlayabiliyorsunuz. İsterseniz testler sırasında ekran görüntüleri de alabiliyorsunuz. Detaylı ayarları üzerinde oynayarak test ölçütlerini istediğiniz gibi belirleyebiliyorsunuz. Bir kaç yüz KB boyuttaki yazılımların yanında 6 MB büyük bir boyut olarak görülebilir; fakat benzer ölçümler yapan yazılımlar oyunlardan sahneler kullandıklarından olsa gerek 100 MB üzerinde boyutlara sahipler.
Resim5: RightMark D3D
6.1.4. Nero CD-DVD Speed
CD ve DVD yazma yazılımı olan Nero ile beraber geldiği gibi ayrı olarka da indirilebilen Nero CD-DVD Speed, optik sürücünüzü sınamak için iyi bir yazılım. Okuma, yazma, ses kazıma sınaması gibi bir çok detaylı test yapan Nero CD-DVD Speed aynı zamanda ekran görüntülerini TIFF, PNG, JPG ve BMP biçimlerinde kolayca kaydetmenize imkân veriyor.
Resim6: Nero CD-DVD Speed
6.1.5. Fresh Diagnose
Fresh Devices tarafından üretilen Fresh Diagnose küçük bir genel sistem bilgi ve ölçüm aracı. İlginç bir kayıt sistemi var. Sizden indirme sırasında e-posta istiyor. Yazılımı çalıştırmanız için gereken anahtar buraya gönderiliyor. Yazılım reklamsız ve ücretsiz. Sizden istenilen e-posta adresine yalnızca program güncellemeleri hakkında bilgiler geliyor. Fresh Diagnose sistem bilgisini görmenize ve basit işlemci-bellek sınamaları yapmanıza yarayan bir yazılım.
Resim7: Fresh Diagnose
7.1. YAZILIM TEST VE KALİTE DERNEĞİ (Turkish Testing Board)
Yazılım Test ve Kalite Derneği 2006 yılında yazılım test ve kalite alanında dünyanın en saygın gönüllü organizasyonu olan ISTQB’a (International Software Testing Qualifications Board) bağlı olarak kurulmuştur. Bu tarihten itibaren dernek, Türkiye’deki bilişim profesyonellerinin yazılım testi alanında ISTQB standartlarında eğitilmesi ve sertifikalanması amacıyla çalışmalarına başlamıştır [5].
Kuruluş Amacı:
ü Yazılım testi konusunda dünyada standart haline gelmiş terimlerin Türkçeleştirilmesi.
ü ISTQB sınavlarının yapılarak sınavı kazanan adayların sertifikasyonu.
ü Yazılım test ve kalitesi konusunda en önemli uluslararası eğitim olan ISTQB eğitimlerini verebilecek eğitim kurumlarının oluşturulması.
ü Türkiye Bilişim Sektörünün uluslararası pazarlarda rekabet edebilmesi için sektörün yazılım testi ve kalitesi konusunda bilgilendirilmesi.
8.1. International Software Testing & Qualifications Board (ISTQB)
ISTQB yirmiden fazla ülkede kar amacı gütmeyen, gönüllü dernekler şeklinde yazılım test ve kalitesi konusunda faaliyetlerini sürdüren en büyük uluslararası organizasyondur [5].
Üstlendiği Misyonlar:
ü Uluslararası standartlarda test eğitimi içeriklerinin oluşturulması.
ü Eğitimleri verecek kuruluşlara ilişkin ön koşullarının belirlenmesi.
ü Kuruluşlardan eğitim alan adayların sınav ve sertifikasyonuna yönelik uluslararası standartların belirlenmesi.
ü ISTQB’ye bağlı olarak çalışan derneklerin çalışmalarının kontrol ve koordinasyonu.
Şu anda ISTQB’nin faaliyette olduğu ülkeler şunlardır:
Resim8:ISTQB’nin faaliyette olduğu ülkeler
9.1. Sonuç
Sonuç olarak günümüzde ülkemizde ve dünyada yazılım doğrulaması ve yazılım geliştirilmesi önemli bir biçimde gelişme göstermiştir. Ülkemizde ve bazı dünya devletlerinde kurulan yazılım kalite ve geliştirme dernekleri kurulmuştur.