Yazlm Mhendislii Ders 7 Yazlm Dorulama ve Geerleme

  • Slides: 43
Download presentation
Yazılım Mühendisliği Ders 7: Yazılım Doğrulama ve Geçerleme Yazılım Mühendisliği 1

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

Genel Bakış �Giriş �Sınama Kavramları �Doğrulama ve Geçerleme Yaşam Döngüsü �Sınama Yöntemleri �Sınama ve

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 2

Hedef ? Yazılım üretimi boyunca, "Doğru Yazılımı mı üretiyoruz? " ve "Yazılımı doğru olarak

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 3

Giriş � Geliştirilecek bilgi sistemi yazılımın doğrulanması ve geçerlenmesi işlemi üretim süreci boyunca süren

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 4

Doğrulama vs Geçerleme �Doğrulama: Doğru ürünü mü üretiyoruz? �Geçerleme: Ürünü doğru mu üretiyoruz? �Doğrulama

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 5

Sınama Kavramları �Sınama ve Bütünleştirme işlemlerinin bir strateji içinde gerçekleştirilmesi, planlanması ve tekniklerinin seçilmesi

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 6

Birim Sınama �Bağlı oldukları diğer sistem unsurlarından tümüyle soyutlanmış olarak birimlerin doğru çalışmalarının belirlenmesi

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 7

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

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 8

Sistem Sınaması �Üst düzeyde, bileşenlerin sistem ile olan etkileşiminde çıkacak hatalar aranmaktadır. �Ayrıca, belirtilen

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

Yansı - 10 Kabul Sınaması �Çalıştırılmadan önce sistemin son sınamasıdır. �Artık, yapay veriler yerine

Yansı - 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

Alfa vs Beta Sınaması �Alfa Sınamada; sistemin geliştirildiği yerde kullanıcıların gelerek katkıda bulunması sistemi

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 11

Sınama �Sınamalar, hatalardan kurtulmanın bir güvencesi değildir. Hatalardan bütünüyle arınıldığı gibi bir kanı elde

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 12

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

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 13

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 14

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 14

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 15

Yazılım Sınama Yöntemleri Sistem üzerinde sırasıyla fonksiyonel, performans ve dayanıklılık testleri uygulanmakta ve bunları

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 Yazılım Mühendisliği sınama yöntemine de saydam kutu 16

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

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

Saydam Kutu Testi ü Saydam kutu testi, modül düzeyinde uygulanmakta ve programın iç yapısını

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 18

Saydam Kutu Testi Saydam kutu testinde, işlemsel (procedural) tasarımın kontrol yapısı kullanılmaktadır. Bu test

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 19

Temel Yollar Testi Temel yollar testi, işlemsel tasarımın mantıksal karmaşıklığını ölçmek ve bu ölçüye

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 (Mc. CABE) ö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 20

Ortalama Alma Yöntemi Temel yollar test programları ve graf matrisin oluşturulması işlemi, program tasarım

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 21

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

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

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

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

Ortalama Alma Yöntemi-3. Adım Test programlarının düzenlenmesine de yardımcı olacak karar düğümleri ise 2,

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 24

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

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

Ortalama Alma Yöntemi-5. Adım Graf matris, her düğümün bağlandığı diğer düğümleri gösteren bir kare

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 26

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ü

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 27

Kara Kutu Testi Kara kutu testi yöntemleri, yazılımın işlevsel gereksinimlerinin denenmesine yöneliktir. Programın bütün

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 28

Kara Kutu Testi Giriş Test Verisi Anormal davranışa sebep olan girişler SİSTEM Çıkış Test

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

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

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

Ünite Testi Ünite (birim) testi, yazılım tasarımının en küçük birimi olan modül üzerinde uygulanmaktadır.

Ü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 31

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

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

Ünite Testi- Test Sürücü Test sürücü (test driver); test programı verisini alarak test edilecek

Ü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 33

Bütünleme Testi Modüller bağımsız olmayıp, birbirlerine ya da bir donanım öğesine veya işlemciye bağlı

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 34

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

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 35

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

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

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

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 37

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

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

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

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

Sistem Testi Düzeltme Testi • Yazılımı çeşitli yollarla hata yapmaya zorlamak ve bu hataların

Sistem Testi Düzeltme 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 40

Hata ve Eksikliklerin Giderilmesi Sınama sonucu saptanan hata ve eksiklerin nedenlerinin bulunup, düzeltilmesi gerekmektedir.

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 41

Yaşam Döngüsü Boyunca Sınama Sistem Sınam a Planı P • Modül Sınama Planı •

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

Çalışma Soruları 1. Doğrulama ile Geçerleme arasındaki farklılıkları belirtiniz. Birer örnekle açıklayınız. 2. Sınama

Çalışma Soruları 1. Doğrulama ile Geçerleme arasındaki farklılıkları belirtiniz. Birer örnekle açıklayınız. 2. Sınama Yöntemlerini açıklayınız. 3. "Beyaz Kutu" sınama ile "Temel Yollar Sınama" yöntemleri arasındaki farlılıkları belirtiniz. 4. Sınama Yöntemleri ile sınama belirtimleri arasındaki farkı belirtiniz. 5. 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. 6. Sınama belirtimlerinin önemi nedir. 7. Kullanıcı sınaması sırasında yaşanabilecek sorunları belirtiniz. Yazılım Mühendisliği 43