Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
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
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.