Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Ders 7: Yazılım Doğrulama ve Geçerleme

Benzer bir sunumlar


... konulu sunumlar: "Ders 7: Yazılım Doğrulama ve Geçerleme"— Sunum transkripti:

1 Ders 7: Yazılım Doğrulama ve Geçerleme
Yazılım Mühendisliği Ders 7: Yazılım Doğrulama ve Geçerleme Yazılım Mühendisliği

2 Genel Bakış Giriş Sınama Kavramları
Doğrulama ve Geçerleme Yaşam Döngüsü Sınama Yöntemleri Sınama ve Bütünleştirme Stratejileri Yaşam Döngüsü Boyunca Sınama Etkinlikleri Yazılım Mühendisliği

3 Hedef ? Yazılım üretimi boyunca, "Doğru Yazılımı mı üretiyoruz?" ve "Yazılımı doğru olarak üretiyor muyuz?" sorularının yanıtlarını araştıran doğrulama ve geçerleme yöntemleri bu bölümde açıklanmaktadır. Özellikle gerçekleştirim aşamasında kullanılan program sınama yöntem (beyaz kutu sınaması, kara kutu sınama vb.) ve modelleri (yukarıdan aşağıya bütünleştirme, aşağıdan yukarıya bütünleştirme vb.) bu bölümün temel hedefleri arasındadır. Yazılım Mühendisliği

4 Giriş Geliştirilecek bilgi sistemi yazılımın doğrulanması ve geçerlenmesi işlemi üretim süreci boyunca süren etkinliklerden oluşur. Bu etkinlikler; Her bir etkinlik sonunda alınan çıktıların tamam, doğru, açık ve tutarlı olduğunun doğrulanması. Her etkinlikte ürünün teknik yeterliliğinin değerlendirilmesi ve uygun çözüm elde edilene kadar aktivitelerin tekrarlanması. Geliştirilen belirtimlerin önceki belirtimlerle karşılaştırılması. Yazılım ürünlerinin tüm uygulanabilir gereklerinin sağlandığının gerçeklenmesi için sınamaların hazırlanıp yürütülmesi. Yazılım Mühendisliği

5 Doğrulama vs Geçerleme
Doğrulama: Doğru ürünü mü üretiyoruz? Geçerleme: Ürünü doğru mu üretiyoruz? Doğrulama ürünü kullanacak kişilerin isteklerinin karşılanıp karşılanmadığını test eden etkinliklerden, Geçerleme ise ürünün içsel niteliğine ilişkin izleme ve denetim etkinliklerinden oluşur. Yazılım Mühendisliği

6 Sınama Kavramları Sınama ve Bütünleştirme işlemlerinin bir strateji içinde gerçekleştirilmesi, planlanması ve tekniklerinin seçilmesi gerekmektedir. Sınama işlemleri dört ana sınıfta incelenebilir: Birim sınama Alt-sistem sınama Sistem sınama Kabul sınaması Yazılım Mühendisliği

7 Birim Sınama Bağlı oldukları diğer sistem unsurlarından tümüyle soyutlanmış olarak birimlerin doğru çalışmalarının belirlenmesi amacıyla yapılır. Yazılım Mühendisliği

8 Alt-Sistem Sınama Alt-sistemler modüllerin bütünleştirilmeleri ile ortaya çıkarlar. Yine bağımsız olarak sınamaları yapılmalıdır. Bu aşamada en çok hata arayüzlerde bulunmaktadır. Bu yüzden arayüz hatalarına doğru yoğunlaşılmalıdır. Yazılım Mühendisliği

9 Sistem Sınaması Üst düzeyde, bileşenlerin sistem ile olan etkileşiminde çıkacak hatalar aranmaktadır. Ayrıca, belirtilen ihtiyaçların doğru yorumlandıkları da sınanmalıdır. Yazılım Mühendisliği

10 Kabul Sınaması Çalıştırılmadan önce sistemin son sınamasıdır.
Artık, yapay veriler yerine gerçek veriler kullanılır. Bu sınama türü alfa sınaması veya beta sınaması olarak da bilinir. Yazılım Mühendisliği

11 Alfa vs Beta Sınaması Alfa Sınamada; sistemin geliştirildiği yerde kullanıcıların gelerek katkıda bulunması sistemi test etmesi amaçlanmaktadır. Beta Sınamasında; kullanıcı, geliştirilen sistemi kendi yerleşkesinde, bir gözetmen eşliğinde yapar. Yazılım Mühendisliği

12 Sınama Sınamalar, hatalardan kurtulmanın bir güvencesi değildir. Hatalardan bütünüyle arınıldığı gibi bir kanı elde edilmemelidir. Ne kadar hata sıklığına erişildiğinde sınama işlemlerinin durdurulacağına, maliyet ve kalite arasında yapılacak bir en iyileme çalışması ile ulaşılır. Yazılımın kritiklik düzeyine göre sınamaya ayrılan süre ve çaba artar. Yazılım Mühendisliği

13 Doğrulama ve Geçerleme Yaşam Döngüsü
Gerçekleştirim aşamasına kadar olan süreçlerde doğrulama ve geçerleme işlemlerinin planlaması yapılır. Planlama genellikle; alt-sistem, bütünleştirme, sistem ve kabul sınamalarının tasarımlarını içerir. Gerçekleştirim aşamasının sonunda ise söz konusu plan uygulanır. Yazılım Mühendisliği

14 Performansın Sınanması
Yazılımın Sınanması Fonksiyonel Sınama Performansın Sınanması Dayanıklılık Testi Yapısal Denetim Yazılım Mühendisliği

15 Yazılımın Sınanması Fonksiyonel Sınama Performansın Sınanması
Dayanıklılık Testi Yapısal Denetim Yazılım Mühendisliği

16 Yazılım Sınama Yöntemleri
Sistem üzerinde sırasıyla fonksiyonel, performans ve dayanıklılık testleri uygulanmakta ve bunları tamamlamak üzere de yapısal test gerçekleştirilmektedir. Yapısal testin tasarımı, sistem geliştirildikten sonra ve önceden hazırlanan test planına göre düzenlenmektedir. Fonksiyonel, performans ve dayanıklılık testlerine; sistemin dış gereksinimlerine dayandırıldığı için, kara kutu testi (black box testing) adı verilmektedir. Buna karşılık, yapısal denetimde modül düzeyinde programın deyimleri ya da dalları sınanarak iç yapısı incelenmektedir. Bu şekilde uygulanan sınama yöntemine de saydam kutu testi (white box, glass box testing) denilmektedir. Yazılım Mühendisliği

17 Yazılım Sınama Teknikleri
Yazılım Mühendisliği

18 Saydam Kutu Testi Saydam kutu testi, modül düzeyinde uygulanmakta ve programın iç yapısını denetlenmektedir (ünite testi). Test programı ile yazılımdaki koşul ve döngü durumları çalıştırılarak, mantıksal yollar sınanmaktadır. Programın tasarlandığı ve beklendiği yapıda olup olmadığını sınamak için, değişik noktalarında inceleme yapılmaktadır. Fakat bu yöntemde, programın tamamını sınamak olanaksızdır. Sadece sınırlı sayıdaki çok önemli mantıksal yollar seçilmekte ve bu yolların sınanması ile yetinilmektedir. Yazılım Mühendisliği

19 Saydam Kutu Testi Saydam kutu testinde, işlemsel (procedural) tasarımın kontrol yapısı kullanılmaktadır. Bu test ile Bir modüldeki bütün bağımsız yolların en az bir kez çalışacağı garanti edilmekte, Bütün mantıksal kararların "doğru" ve "yanlış" durumları denenmiş olmakta, Bütün döngülerin kendi içinde ve çevresinde işlerliği sağlanmakta, İç veri yapıları denenerek, geçerliliği güvence altına alınmaktadır. Saydam kutu testinin uygulanmasında, temel yol testi ve döngü testi teknikleri kullanılmaktadır. Yazılım Mühendisliği

20 Temel Yollar Testi Temel yollar testi, işlemsel tasarımın mantıksal karmaşıklığını ölçmek ve bu ölçüye göre uygulama yolları için bir temel grup oluşturmak esasına dayanmaktadır. Bu grubu denemek için bir test programı düzenlemektedir. Test programları, test sırasında programdaki her deyimi en az bir kez uygulayarak denemektedir. Grup yolu testi, ayrıntılı işlemsel tasarım ya da kaynak program üzerinde uygulanmaktadır. Uygulama basamakları: Ayrıntılı tasarım veya kaynak programa dayanarak, bir akış grafı çizmek , Akış grafı üzerinde döngüsel karmaşıklık (McCABE) ölçüsünü saptamak, Doğrusal bağımsız yolların temel grubunu ve düğümleri belirlemek, Temel grubun içerdiği her yolun denenmesi için birer test programı düzenlemek, Her test programını uygulamak ve beklenen sonuç ile karşılaştırmak Yazılım Mühendisliği

21 Ortalama Alma Yöntemi Temel yollar test programları ve graf matrisin oluşturulması işlemi, program tasarım dilinde hazırlanmış olan "ortalama alma" yöntemi üzerinde açıklanmıştır. Bu yöntem, 100'den az sayıdaki değerlerin ortalamasını hesaplamaktadır; ayrıca girdi ve değer toplamlarını da vermektedir. Yazılım Mühendisliği

22 Ortalama Alma Yöntemi-1.Adım
Yazılım Mühendisliği

23 Ortalama Alma Yöntemi-2.Adım
Yazılım Mühendisliği

24 Ortalama Alma Yöntemi-3.Adım
Test programlarının düzenlenmesine de yardımcı olacak karar düğümleri ise 2,3,5,6 ve 10 numaralı yol ayrımlı düğümler olarak saptanmaktadır. Yazılım Mühendisliği

25 Ortalama Alma Yöntemi-4.Adım
Yazılım Mühendisliği

26 Ortalama Alma Yöntemi-5.Adım
Graf matris, her düğümün bağlandığı diğer düğümleri gösteren bir kare tablodur. Bağlantı, okları simgeleyen harflerle ya da bağlantının ağırlık katsayısı ile gösterilmektedir. İkinci haldeki kare tabloya, ilişki matrisi adı verilmektedir. İlişki matrisi üzerinden, karmaşıklık ölçüsü de hesaplanabilmektedir. Yazılım Mühendisliği

27 Döngü Testi Döngü testinin amacı; döngü içerisindeki başlama hatalarının, indeksleme ve artırma hatalarının, döngüyü sınırlama hatalarının bulunmasıdır. Test sonunda, döngü yapısının geçerliği onaylanmış olmaktadır. Döngüler; basit, iç içe yuvalanmış, birbirine bağlı, yapısal olmayan, olarak dört ayrı biçimde olabilmektedir.  Yazılım Mühendisliği

28 Kara Kutu Testi Kara kutu testi yöntemleri, yazılımın işlevsel gereksinimlerinin denenmesine yöneliktir. Programın bütün işlevsel gereksinimlerini denemek üzere, bir dizi girdi durumları oluşturulmaktadır. Bu test, saydam kutu testinin alternatifi olmayıp, tamamlayıcı niteliktedir. Böylece, değişik karakterdeki hatalar bulunabilmektedir. Kara kutu testi ile Hatalı ve eksik olan işlevler, Arabirim hataları, Veri yapılarında ve veri tabanı erişimindeki hatalar, Performans hataları, Başlama ve bitirme hataları bulunabilmektedir. Yazılım Mühendisliği

29 Kara Kutu Testi Giriş Test Verisi SİSTEM Çıkış Test Sonucu
Anormal davranışa sebep olan girişler Giriş Test Verisi SİSTEM Bozukluk olduğunu belirten çıkışlar Çıkış Test Sonucu Yazılım Mühendisliği

30 Yazılım Sınama Basamakları
Yazılım Mühendisliği

31 Ünite Testi Ünite (birim) testi, yazılım tasarımının en küçük birimi olan modül üzerinde uygulanmaktadır. Ayrıntılı tasarım tanımlarına dayanılarak, modül içerisindeki hataları bulmak üzere, önemli kontrol yolları sınanmaktadır. Saydam kutu testi olarak uygulanan bu işlem, çok sayıdaki modül üzerinde, paralel olarak yürütülmektedir. Ünite testinde; modülün arabirimi, veri yapısı, kontrol yapıları arasındaki ana yollar, hata arama yolları ve modül sınırları sınanmaktadır. Modül arabirim testinde, verinin giriş ve çıkışının uygunluğu denetlenmektedir. Burada; parametre sayısının argümanlara (işlem yapılan veri maddelerine) eşitliği ve denkliği, modül çağırma argümanlarının niteliklerinin ve OPEN (aç) deyimlerinin doğruluğu, format tanımlarının girdi/çıktı deyimlerine uygunluğu, ara bellek büyüklüğünün kayıt büyüklüğüne denkliği, dosyaların açılıp kapanması işlemleri, çıktı metninin doğruluğu da denetlenmektedir. Yazılım Mühendisliği

32 Ünite Testi- Test Programı
Yazılım Mühendisliği

33 Ünite Testi- Test Sürücü
Test sürücü (test driver); test programı verisini alarak test edilecek modüle ileten ve test sonucunu yazan bir ara programdır. Koçan (stub); bir kukla (dummy) alt program olup, test edilen modülün altprogramını temsil etmektedir. Koçan program, alt düzey modülünün özet bir versiyonu olup, bu modülün arabirimi olarak kullanılmaktadır. Çok az bir veri ile çalıştırılmakta ve girdi onayını yazarak geri dönmektedir. Test sürücülere ve koçanlara, modül programın başlığında yer verilmelidir. Bu basamağa yerleştirilememesi halinde, tekrar kullanılacağı bütünleme testinde derlenmelidir. İç bağlılığı kuvvetli ve dış ilişkisi az olan modüllerin ünite testi basit ve kolaydır. Bir tek işlevi olan modülde, test programı sayısı az olup, hatalar da daha kolay kestirilip bulunabilmektedir. Yazılım Mühendisliği

34 Bütünleme Testi Modüller bağımsız olmayıp, birbirlerine ya da bir donanım öğesine veya işlemciye bağlı olmalıdır. Bu bağlantı, "yazılım arabirimi" (software interface) ile sağlanmaktadır. Modüllerin birleştirilmesi sırasında veri kaybı, dikkatsizlik nedeni ile birbirini ters etkileme, alt fonksiyonların birleştirilmesiyle beklenilen ana fonksiyonun gerçekleşmemesi, her birinde göze alınabilen hata toleranslarının eklenerek büyümesi, genel veri yapılarının sorun yaratması söz konusudur. Bu hata ve sorunları bulup gidermek için, modüllerin birleştirilerek ana programın oluşturulmasında bütünleme testi uygulanmalıdır. Bütün olarak (bing bang) sınama ve arttırmalı sınama olarak iki ayrı biçimde yapılmaktadır. Arttırmalı sınama yukarıdan aşağı ve aşağıdan yukarı olarak iki ayrı şekilde uygulanmaktadır. Yazılım Mühendisliği

35 Yukarıdan Aşağı Bütünleme
Yukarıdan-aşağı bütünlemede, modüller, ana kontrol modülünden başlayarak, aşağıya doğru hiyerarşik kontrol yapılarak birleştirilmektedir. Alt basamaklara iniş, bir ana kontrol yolu üzerinde derinliğine (depth-first) veya her alt düzeyde yanlara (breadth-first) doğru yürütülmektedir. Yazılım Mühendisliği

36 Yukarıdan Aşağıya Bütünleştirme
Yazılım Mühendisliği

37 Aşağıdan Yukarıya Bütünleme
Aşağıdan-yukarı bütünlemede, en alt düzeydeki modüllerden (atomic modules) başlayarak, yukarı doğru birleştirilmekte ve sınanmaktadır. Bu yöntemde, alt düzey modül bağlantıları denetlenmiş olduğu için, ayrıca "koçan" oluşturmaya gerek bulunmamaktadır. Yazılım Mühendisliği

38 Aşağıdan Yukarıya Bütünleştirme
Yazılım Mühendisliği

39 Onaylama Testi Yazılım Mühendisliği

40 Sistem Testi Düzeltme Testi Güvenlik Testi Dayanıklılık Testi
Yazılımı çeşitli yollarla hata yapmaya zorlamak ve bu hataların düzeltilebildiğini göstermektir. Düzeltme otomatik olarak veya işletmeci tarafından yapılır. Güvenlik Testi Sistemin zararlı dış müdahalelerden ve bilgi hırsızlığından korunduğunun ispatıdır. Dayanıklılık Testi Sistemin miktar veya hacim bakımından anormal biçimde yüklenmesi testidir. Performans Testi Gerçek zamanlı veya gömülü sistemlerde yazılım işlem süresinin bilgisayara dayalı sistem ile uyarlılığını sınama işlemidir. Yazılım Mühendisliği

41 Hata ve Eksikliklerin Giderilmesi
Sınama sonucu saptanan hata ve eksiklerin nedenlerinin bulunup, düzeltilmesi gerekmektedir. Hataları giderme (debugging) adı verilen bu işlemde, belirtiler ile nedenlerinin karşılaştırılması, daha sonra da hataların düzeltilmesi yoluna gidilmektedir. Nedeni bilinen hatalar düzeltilerek, giderilebilmektedir. Fakat, bazı hataların nedeni bulunamamaktadır. Yazılım Mühendisliği

42 Yaşam Döngüsü Boyunca Sınama
Modül Sınama Planı Sınama Belirtimleri Sınama Eğitim Klavuzu Modül Sınama Bütünleştirici Sınama Sınayıcı Eğitim Altsistem Sınama planları Kullanıcı Sınaması Sınama Raporları Sistem Sınama Planı P Ç T G K P: Planlama Ç: Çözümleme T: Tasarım G: Gerçekleştirim K:Kurulum Yazılım Mühendisliği

43 Çalışma Soruları Doğrulama ile Geçerleme arasındaki farklılıkları belirtiniz. Birer örnekle açıklayınız.  Sınama Yöntemlerini açıklayınız. "Beyaz Kutu" sınama ile "Temel Yollar Sınama" yöntemleri arasındaki farlılıkları belirtiniz. Sınama Yöntemleri ile sınama belirtimleri arasındaki farkı belirtiniz. Yukarıdan aşağıya doğru bütünleştirme ve aşağıdan yukarıya bütünleştirme yöntemlerinin zorluklarını ve kolaylıklarını belirtiniz.  Sınama belirtimlerinin önemi nedir. Kullanıcı sınaması sırasında yaşanabilecek sorunları belirtiniz. Yazılım Mühendisliği


"Ders 7: Yazılım Doğrulama ve Geçerleme" indir ppt

Benzer bir sunumlar


Google Reklamları