Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Doğrulama ve Geçerlilik
2
Doğrulama ve Geçerlilik
Doğrulama: “Ürün doğru mu geliştiriliyor?" Yazılım, belirteçlere uygun geliştirilmelidir Geçerlilik: “Doğru ürün mü geliştiriliyor?" Yazılım kullanıcı isteklerini yerine getirmelidir Doğrulama ve Geçerlilik (Validation & Verification) yöntemleri yazılım sürecinin her adımına uygulanmalıdır İki önemli hedef: Sistemdeki kusurların (defect) bulunması Sistemin kullanıcı için yararlı olabileceğinin kestirimi
3
V & V amaçları Doğrulama ve geçerlilik, kullanıcıda yazılımın amacına uygun olması güvenini oluşturmalıdır Ama bu güven yazılımın bütünlükle kusursuz olacağı anlamına gelmez Gereken güvenin seviyesi yazılımın kullanım amacına bağlıdır: Uçağın kontrolü yazılımı ve restoranda masa rezervasyonu yazılımı
4
V & V güveni Sistemin amacına, kullanıcı beklentilerine ve pazarlama ortamına bağlıdır Yazılım işlevi Güven seviyesi, yazılımın kullanılacağı ortam (kurum) için ne kadar önemli olmasına bağlıdır Kullanıcı beklentileri Bazı yazılımlar için kullanıcıların beklentileri düşük olabilir Pazarlama ortamı Ürünün kusurlu halde erken pazara sürülmesi, kusurların bulunmasından bazen daha önemli olabilir
5
Statik ve dinamik V&V STATİK – yazılımı gözden geçirme
Sorunları bulmak için statik sistem çözümlemesi Araç desteği ve kod çözümlemesi DİNAMİK – yazılımın denenmesi Ürünün davranışının izlenilmesi Sistem deneme verileri ile çalıştırılır ve onun davranışı gözlemlenir
6
Statik ve dinamik V&V Statik doğrulama Dinamik geçerlilik
Gereksinimlerin belirteci yüksekseviye tasarımı formal belirteç ayrıntılı tasarım program prototip Dinamik geçerlilik
7
V & V planlama Deneme ve gözden geçirme süreçlerinden daha iyi sonuç ala bilmek için ciddi planlama gerekmektedir Planlama geliştirme sürecinin erken aşamalarında başlanılmalıdır Plan, statik doğrulama ve deneme arasındaki dengeyi tanımlamalıdır Deneme planlamasında deneme süreci için standartlar tanımlanmalıdır
8
Geliştirme için V-model
Gereksinim belirteci sistem belirteci sistem tasarımı ayrıntılı tasarım Modül kodlama ve deneme teslim denemesi planı sistem bütünleşme denemesi planı alt sistemlerin bütünleşme deneme planı Hizmetler teslim denemesi sistem bütünl. denemesi altsistem büt. denemesi
9
Yazılımın gözden geçirilmesi
Sapmaları ve kusurları ortaya çıkarmak için kaynakların incelenmesi Sistemin yürütülmesini gerektirmez Çalıştırmadan önce kullanıla bilir Kusurlar Mantıksal hatalar Kodlardaki sapmalar( örn., başlangıç değer verilmemiş değişken) Standartlarla uyumsuzluk Sistemin her türlü kaynaklarına uygulana bilir gereksinimler, tasarım, deneme verileri ve s. Hataları ortaya çıkarmak için etkili yöntem Basit gözden geçirme ile çok farklı kusurları ortaya çıkarmak mümkündür Alan ve programlama bilgilerinin yeniden kullanımı Gözden geçirenler, sıklıkla ortaya çıka bilecek kusurları seze bilirler
10
Gözden geçirme ve deneme
Gözden geçirme ve deneme biri birini tamamlar Her ikisi V & V sürecinde kullanılır Gözden geçirme, müşterinin gerçek gereksinimlerine uyumluluğu değil, belirteçlere uyumluluğu yoklar; Gözden geçirme işlevsel olmayan niteliklerin (başarım, kullanılabilirlik) denemesini yapamaz
11
Gözden geçirme grubu En azı 4 kişi Kodun yazarı
Gözden geçiren(Inspector) hataları ve uyumsuzlukları bular Okuyucu (Reader) kodu grup üyelerine anlatır Yönetici (Moderator) toplantılara başkanlık yapar ve hataları kaydeder
12
Gözden geçirme grubu-devamı
Sistem, gözden geçirme grubuna anlatılır Kod ve uygun belgeler grup üyelerine dağıtılır Gözden geçirme zamanı bulunan hatalar kaydedilir Bulunan hataları gidermek için güncellemeler yapılır
13
Otomatik statik çözümleme
STATİK çözümleyiciler –kaynak kodu işlemek için yazılım araçları Onlar program metnini taramakla olası hatalı koşulları bulmaya çalışır ve bu hataları V&V grubuna bildirir Gözden geçirme sürecinde çok etkilidir. Gözden geçirme yerine kullanılamaz
14
Statik çözümleme-hata türleri
statik çözümlemeler Veri hataları Başlangıç değerlerini almamış değişkenlerin kullanılması, Değişkenler ilan edilmiş ama kullanılmamıştır, Değişkenlere iki kez değer verilmiş ama arada hiç kullanılmamışlar Dizilerin sınırlarında olası hatalar, İlan edilmemiş değişkenler Denetim hataları erişilemez program (modül, fonksiyon) Döngüde koşulsuz dallanma Giriş-çıkış hataları aynı değişken iki kez çıkış değişkeni olarak kullanılsa da arada ona yeni değer verilmemiş Arayüzü hataları parametrenin türü yanlış, parametreler sayısı yanlış, işlevlerin sonucu kullanılmayıp çağrılmayan fonksiyon ve yordam Bellek ile bağlı hatalar atanmamış göstergeler, göstergelerin doğru hesaplanmaması
15
Statik çözümleme adımları
Denetim akışlarının çözümlenmesi Çok girişli veya çıkışlı döngüleri yoklamalı, erişilemeyen kodları bulmalı ve s. Verilerin kullanımının çözümlenmesi Başlangıç değerler verilmemiş, tanımlanmış, ama hiç zaman kullanılmayan değişkenlerin ve s. bulunması Arayüzü çözümlenmesi Altprogram ve yordamların belirtilmesi ve kullanımındaki tutarlılığının yoklanılması Bilgi akışının çözümlenmesi Çıkış değişkenlerinin bağımlılığının tanımlanması Yol çözümlenmesi Programdaki yolların ve bu yollarda yürütülen komutların araştırılması
16
Deneme ve kod ayıklama-Testing and debugging
Kusur denemesi ve kod ayıklama farklı süreçlerdir Denemenin amacı programda kusurların varlığını tespit etmektir Kod ayıklama hataları yerelleştirmek ve aradan kaldırmak içindir
17
Deneme Denemenin amacı, hataların var olmasını araştırmaktır
Denemenin başarısı ,onun hatayı bulması ile ölçülür Deneme, işlevsel olmayan gereksinimlerin geçerliliğini değerlendirmenin tek yöntemidir Statik doğrulama ile birlikte kullanıla bilir
18
Deneme türleri Kusur denemesi İstatistiksel deneme
Sistemin kusurlarını bulmak için tasarlanır. Başarılı kusur denemesi sistemde hataların varlığının belirlenmesinde çok önemlidir İstatistiksel deneme Güvenilirliği değerlendirmek için; Kullanıcı girişlerinin sıklığını ifade etmek; Güvenliğin tahmini için kullanılır
19
Yazılım deneme planının yapısı
Deneme süreci Gereksinimlerin izlenebilirliği Denenen birimler Deneme zaman çizelgelemesi Deneme yordamları Donanım ve yazılım gereksinimleri Kısıtlamalar
20
Önemli hususlar Doğrulama ve geçerlilik aynı şey değildir.
Doğrulama sistemin belirtece uygunluğunu gösteriyor Geçerlilik, programın müşteri isteklerini karşılamasını gösteriyor Deneme sürecini yerine getirmek ve kontrol etmek için deneme planları hazırlanır Statik doğrulama yöntemleri hataları bulmak için programın çözümlenmesini kapsar Programın gözden geçirilmesi, hataları bulmak için çok etkili yoldur Gözden geçirme zamanı program kodu küçük grup tarafından kontrol edilir Statik çözümleme araçları program sapmalarını bula biliyor
21
YAZILIM KALİTESİ YAZILIM HATALARI DENEME
Sarı arka planlı sayfalar bilgi amaçlıdır; içeriği sınav soruları kapsamına dahil değil
22
Yazılım Hataları ve ya “Böcek”(Bug)
Yazılım hataları- ürününün kalitesinin gereksiz veya sebepsiz yere düşmesine neden olan her şey Yazılım «böceği» bilgisayar programı veya sisteminde oluşan, yanlış, beklenmedik sonuçlara neden olan hatalar, kusurlardır. Böceklerin büyük kısmı insan hatalarından (kaynak kodları ve tasarım hataları) kaynaklanmaktadır. Az bir kısmı ise doğru kod üretmeyen derleyici hatalarından kaynaklanıyor. Programda oluşmuş «böcekler» hakkında bilgiler hata (kusur) raporlarında yer alıyor.
23
There is some controversy over the origin of the term "debugging."
«Böcek» tarihçesi There is some controversy over the origin of the term "debugging." In 1946, when Hopper was released from active duty, she joined the Harvard Faculty at the Computation Laboratory where she continued her work on the Mark II and Mark III. Operators traced an error in the Mark II to a moth trapped in a relay, coining the term bug. This bug was carefully removed and taped to the log book. Stemming from the first bug, today we call errors or glitch's in a program a bug. The Oxford English Dictionary entry for "debug" quotes the term "debugging" used in reference to airplane engine testing in a 1945 article in the Journal of the Royal Aeronautical Society, Hopper's bug was found on the 9th of September in The term was not adopted by computer programmers until the early 1950s. The seminal article by Gill in 1951 is the earliest in-depth discussion of programming errors, but it does not use the term "bug" or "debugging". In the ACM's digital library, the term "debugging" is first used in three papers from 1952 ACM National Meetings
25
Ayıklama-Debugging Beklenen hedefleri sağlamaları amacıyla bilgisayar programında veya donanım parçalarında kusurları (böcekleri) bulmak veya azaltmak için yapılan süreç Ayıklamanın, özellikle sıkı birleşimli altsistemlerde yapılması zordur; bir altsistemdeki değişmeler diğerlerinde pek çok “böceğe” sebep olabilir
26
Kalite nedir? Gereksinimlere uymak
Gerçek gereksinimler (yazılı veya yazılı olmayan) Bir ürünün özellikleri bütünü Belirli bir ihtiyacı karşılama yeteneği Ürün ve hizmetlerin müşteri isteklerini karşılaması Ürünün ve hizmetin içeriği…
27
Kalitenin çokboyutluluğu
• güvenilirlik • kullanılabilirlik • bakımı yapılabilirlik • denene bilirlik • işlevsellik/yetenek • işlem hızı • ölçeklenebilirlik • yerelleştirile bilirlik • belgelene bilirlik • öğrenile bilirlik • teknik desteklenebilirlik
29
Kaliteye farklı bakış açıları
Yerelleştirme Yöneticisi (Localization Manager): İyi ürünün diğer bir ülkeye,dile, kültüre uygun değiştirilmesi çok kolay olmalıdır Teknik Belgeleyici (Tech Writers): İyi ürün kolaylıkla anlatıla bilmelidr. Her türlü belirsizlikler, tutarsızlıklar ve açıklamalardaki zorluklar ,ürünün kalitesini düşürecektir. Pazarlama (Marketing): İyi ürünleri alıcılar satın almakta isteklidirler ve bu ürünü almak için diğerlerini de teşvik ederler. Müşteri Hizmeti (Customer Service): İyi ürün destekleyici olmalıdır: insanlara kendi sorunlarını çözmekte yardımcı olmalıdır. Programcı (Programmers): İyi program kodu bakımı yapılabilir olmalı, kolay anlaşılmalı, hızlı çalışmalı ve kompakt olmalıdır.
30
DENEME STRATEJİLERİ DENEME
31
Yazılım testi, bir yazılımın bütününün veya kodun belli bir kısmının gereksinimleri karşılayıp karşılamadığını, uygun şekilde hazırlanmış testler sayesinde öğrenme amaçlı yapılan birim çalışmalardır. Yazılım testinin yapılma amaçları olarak; ileriye dönük kodun geliştirilme masraflarını azaltmak, ürün çalıştırılmadan önce kalitesini ve senaryolara uygunluğunu denetlemek, geliştirme sırasında gözden kaçan yanlışları bularak bu yanlışların ileride de tekrarlanmasını önleyerek zaman ve maliyet tasarrufu yapmak sayılabilir.
32
Yazılım projeleri değerlendirilirken test sürecine gelen ürünler, süreçlere uygun olarak teste tabi tutulur fakat ideal bir test süreci kodlama sürecinden ayrı değerlendirilmemelidir. İdeal bir test sürecinde olması gereken kodlama ve test süreçlerinin birbirinden koparılmamasıdır. Bu süreçte analiz, tasarım, teste hazırlık süreci, kodlama süreci, dinamik test süreci, testin bitirilmesi ve yazılımın ürün haline gelmesi şeklinde değerlendirilebilir.
33
Yazılım Denemesine Strateji Yaklaşım
Deneme- önceden planlaştırılan ve düzenli yapılan girişimler kümesi Deneme modül seviyesinde başlar ve “içten dışa” doğru tüm bilgisayarlı sistemi kapsar Farklı geliştirme süreçlerinde farklı deneme teknikleri uygulana bilir Deneme ve Kod ayıklama (debugging) farklı girişimlerdir ve kod ayıklama her bir deneme stratejisinde kullanıla bilir Deneme yazılım geliştirici tarafından ve (büyük projeler için) bağımsız deneme grubu tarafından gerçekleştirilir
34
Yazılım Kalitesinin Sağlanması
Ölçme Formal Teknik İnceleme Yazılım Mühendisliği Yöntemleri Yazılım sistemi Deneme Yazılım Kalite Yöneticiliği ve Yazılım kalite Güvencesi Standartlar ve Yöntemler
35
Yazılımın Denenmesi Mekanizmasının oluşturulması
Yapıcı işler- yazılım çözümleme ve tasarım “Dağıtıcı” iş- deneme Yazılım geliştirici program birimlerinin (modüllerinin) denenmesinde sorumludur Geliştirici, bütünleme denemesine de katılır Yazılım Mimarisi bittikten sonra bağımsız deneme grubu devreye girer
36
Yazılım Deneme Adımları
gereksinimler Sistem Denemesi Bütünleme Denemesi tasarım Birim d. kod Deneme yönü
37
Deneme Belirteci Denemenin Kapsamı Deneme Planı Deneme Yordamı
Bütünleme sırası Modüller için Birim denemesi Deneme Ortamı Deneme Durumu verileri Beklenen sonuçlar Gerçek Deneme Sonuçları
38
Deneme Ölçekleri Arayüzü bütünlüğü İşlevsel geçerlilik Bilgi tamlığı
Başarım
39
Sistem kusurlarının varlığını ortaya çıkaran deneme programları
Kusurların denenmesi Sistem kusurlarının varlığını ortaya çıkaran deneme programları
40
Kusur denemesi sureci deneme durumları deneme verileri deneme sonuçları deneme raporları Deneme durumlarının deneme verilerinin hazırlanması deneme verileri ile durum sonuçlarının Tasarlanması programın çalıştırılması karşılaştırılması
41
Birim Denemesi: Ayrı-ayrı program bileşenlerinin denenmesi Genelde bileşenin geliştiricisi sorumludur (kritik sistemler dışında) Denemeler geliştiricinin deneyimlerine dayanmaktadır Amaç: Altsistemlerin doğru kodlaştırıldığının ve gereken işlevleri yerine getirdiğinin doğrulanması
42
Birim Denemesi Birim Denemesi yazılım ürününün en küçük birimi üzere doğrulama işlemlerini yapmak içindir Arayüzü Yerel veri yapısı Sınır koşulları Bağımsız yollar Modul Deneme durumları
43
Bütünleme Denemesi: Geliştirici tarafından yerine getirilir
Sistemi veya altsistemi oluşturmak için bir araya getirilmiş bileşenler grubunun denenmesi Bağımsız deneme grubu sorumludur Deneme sistem belirteçleri üzere gerçekleştirilir Amaç: Altsistemler arasında arayüzlerinin denenmesi
44
Türleri: Sistem Denemesi:
Sistem geliştirici tarafından yerine getirilir Amaç: Sistemin, gereksinimleri (işlevsel ve genel) karşıladığının belirlenmesi Türleri: Kurtarma (recovery) Denemesi Güvenirlik (security) Denemesi Stres Denemesi Başarım Denemesi
45
Geçerlilik (validation) Denemesi
Geliştiricinin teslim ettiği sistemin değerlendirilmesi Kara kutu denemeleri ardışıklığı Geçerlilik denemesi sonucu: işlev veya başarım belirteçlere uygundur; kabul edilir belirteçten sapmalar var ve yetersizlik listesi oluşturulur Amaç: Sistemin gereksinimleri karşıladığını ve kullanım için hazır olduğunu göstermek
46
Deneme öncelikleri Yalnız “tepeden-tırnağa” deneme, programın kusurlarının olmadığını göstere bilir. Ama , böyle deneme mümkün değil. Deneme ilk öncelikle bileşenlerinin değil, sistemin kendisinin yeteneklerinin sınanmasına yönelmelidir Tipik durumların denenmesi, sınır değerlerine uygun durumların denemesinden daha önemlidir
47
Deneme verileri ve deneme durumları
Deneme verisi- Sistem denemesi için giriş değerleri Deneme durumları- Sistemi denemek için giriş verileri ve eğer sistem, belirtecine uygun işlerse, bu veriler sonucu öngörülen çıkışlar
48
Eşit parçalama Sistemin giriş ve çıkışlarının “eşit kümelere” parçalanması Eğer giriş 10,000 ve 99,999 arasında 5 rakamlı tam sayıdırsa , eşdeğerli kısımlar <10,000, 10,000-99, 999 ve > 10, 000 olacak Deneme durumlarını bu kümelerin sınırlarında seçmeli 00000, 09999,10000, 10001, 99999,
49
Eşit parçalama-örnek
50
İkili arama programı için koşullar
procedure Search (Key : ELEM ; T: ELEM_ARRAY; Found : in out BOOLEAN; L: in out ELEM_INDEX) ; önkoşul -- dizide en az bir eleman vardır T’FIRST <= T’LAST sonkoşul -- aranan eleman bulunmuştur ve dizinin L.ci elemanıdır ( Found ve T (L) = Key) veya -- aranan eleman dizide yoktur ( not Found ve not (exists i, T’FIRST >= i <= T’LAST, T (i) = Key ))
51
İkili arama-eşit parçalama
Aranan eleman dizidedir Aranan eleman dizide değil Giriş dizisi tek bir değerden oluşuyor Giriş dizisinde çift sayıda değer vardır Giriş dizisinde tek sayıda değer vardır
52
İkili arama-deneme durumları
53
Arama modülü-girişlerin parçalanması
54
İkili arama-eşit parçalama
55
Kutu Yaklaşımı Kutu yaklaşımı, test mühendislerinin testi geliştirirken ve test gerçekleştirilirken hangi açıdan baktıklarıyla ilgilidir. Bu bakış açısı kodun, algoritmanın, içsel bileşenlerin (değişken, yapılar, veriler, vb.) mi yoksa sadece girdi ve çıktıların mı göz önünde tutularak testin yapılacağıyla ilgilidir. Temel olarak “kara kutu” ve “beyaz kutu” yaklaşımlarından bahsedilir. Ancak son günlerde bir de “gri kutu” yaklaşımından bahsedilmeye başlanmıştır. Kara kutu yaklaşımı; adı üzerinde işlevi kapalı bir yapı olarak kabul eder ve içsel olarak neye sahip olduğu veya ne yaptığıyla ilgilenmez. Sadece verilen girdiler için doğru çıktılar üretiliyor mu? Diye bakar. Beyaz kutu yaklaşımı; işlevin doğru çalışmasının yanında, içsel değişkenlerini ve algoritmasının da doğru/uygun olup olmadığını denetler. Gri kutu yaklaşımı; testin tasarımıyla ilgilidir. Gri kutu testleri aynı kara kutu gibi uygulanır. Ancak test tasarlanırken işlevin içsel veri ve algoritma yapısı da göz önünde bulundurulmaktadır.
56
Kara kutu denemesi Programa kara kutu gibi bakılır
Program deneme durumları sistem belirtecine dayanmaktadır Deneme planlaması yazılım sürecinin erken aşamalarında başlamalıdır
57
Kara kutu denemesi Giriş deneme verileri Çıkış deneme sonuçları
Normal olmayan durumlara neden olan girişler Çıkış deneme sonuçları Kusurların varlığını ortaya çıkaran çıkışlar
58
Kara kutu Birim denemesi teknikleri
Amaç: küçük boyutlu deneme durumları kümelerinin seçilmesi Sınır değerlerinin çözümlenmesi ile eşit parçalamanın kullanılması. Bu yaklaşım, denemeye tabi tutulan yazılımın giriş ve çıkış belirteçlerine dayanmaktadır. Giriş verilerinin seçilmesi (örnek): Eğer yazılım birimi (modülü) 1-25 arasındaki tam sayılarla işlerse, hatanın bulunma riskinin 1 ve 25 arasında olacağını kabul ediyoruz . Bu aralık, eşdeğer sınıfı belirler. Birimin işlemeli olduğu 3 eşdeğer sınıf: 1. <1 2. 1…25 3. >25
59
her sınıfın her bir üyesi deneme girişi gibi seçile bilir, örn
her sınıfın her bir üyesi deneme girişi gibi seçile bilir, örn.,-567, 1 ve 2356. Programlama deneyimleri,hataların sıklıkla sınıfların her iki sınırında da var ola bileceğini gösteriyor. Uygun olarak aşağıdaki deneme girişleri kullanılmalıdır: Giriş 1: 0 Giriş 2: 1 Giriş 3: 2 Giriş 4: 17 Giriş 5: 24 Giriş 6: 25 Giriş 7: 26
60
Çıkış verilerinin seçilmesi
Çıkış verilerinin seçilmesi. Giriş verilerinde olduğu gibi çıkışlar için de sınır koşulları seçilmelidir. Deneme verisi yalnız doğru ve yanlış giriş verilerini değil, çıkış için sınır koşulları denemesini de içermelidir Genelde, her R1 … R2 aralığı, giriş ve çıkış belirteçleri ile belirlenir. 5 deneme durumu seçile bilir: R1 ‘den küçük R1’ e eşit R1’den büyük, R2’den küçük R2’ye eşit R2’den büyük
61
Beyaz kutu denemesinin 4 türü: İfade (komut) Denemesi Döngü denemesi
Cam kutu, mantıksal veya yol yönlü deneme de denir.En yaygın biçimi her kod ardışıklığı yolunun en azından bir kez yürütülmesini gerektirir. Beyaz kutu denemesinin 4 türü: İfade (komut) Denemesi Döngü denemesi Yol Denemesi Koşul Denemesi
62
Beyaz kutu denemesi Denemeler alınıyor Bileşenin (modülün) kodu
63
Beyaz kutu denemesi – Döngü denemesi:
–İfade Denemesi (Cebri Deneme) : Tek elemanın denenmesi – Döngü denemesi: – Döngünün bütünlükle yürütülmesi – Yol Denemesi: – Programdaki tüm yolların yürütüldüğüne emin olmak - Koşul denemesi: Koşulun her mümkün sonucunun en azından bir kez denenmesi Örnek: if ( i = TRUE) printf("YES\n"); else printf("NO\n"); Deneme durumları: 1) i = TRUE; 2) i = FALSE
64
Beyaz kutu Birim Denemesi Teknikleri
Deneme verileri programın iç yapısına göre seçilir Yapı, programdaki ardışıklığı, kararları, döngüleri ifade eden akış çizgesi ile gösterile bilir. Akış çizgesini program kodlarından almak mümkündür Mantıksal bütünlük oluşturan komutlar ardışıklığı tek düğümle ifade edile biler. Her düğümün böyle bir özelliği vardır ki, o bir kez yürütülse, ondaki her bir komut da bir kez yürütülmelidir. Her hangi kenar bir düğümde sonlanmalıdır (düğüm yordamsal ifadeyi anlatmaya da bilir) Her karmaşık koşul basit koşullara parçalanmalıdır. Tek düğüm tek (sade) koşulu ifade ediyor.
65
Yol Denemesi Yol Denemesinde amaç,öğle deneme durumları kümelerini oluşturmaktır ki, bu kümelerle programın her bir yolu en azından bir kez denenmiş olsun Yol Denemesi için başlangıç nokta programın akış çizgesidir.Çizgede düğümler program komutlarını (komutlar ardışıklığını), kenarlar kontrol akışlarını ifade eder Koşul ifadeleri de kenarlardır
66
Programın akış çizgesi
Programın denetim akışını ifade ediyor. Her dal ayrı yolla gösteriliyor. Döngüsel karmaşıklığı (cyclomatic complexity ) hesaplamak için temeldir Döngüsellik = kenarlar sayısı – düğümler sayısı +2
67
İKİLİ ARAMA ALGORİTMASI
Binary search (Java)
68
İkili arama modülü için akış çizgesi
Bağımsız yollar 1, 2, 3, 8, 9 1, 2, 3, 4, 6, 7, 2 1, 2, 3, 4, 5, 7, 2 1, 2, 3, 4, 6, 7, 2, 8, 9 Deneme durumları öğle seçilmelidir ki, tüm bu yollar yürütülmüş olsun
69
Beyaz kutu denemesi (örnek)
Böyle bir akış çizgesine bakalım: Akış çizgesine göre 12 milyondan fazla yol bulunuyor. Bir döngüde dörtgenlerden geçen 5 yol var. Çizge üzere dörtgenlerden geçen yolların toplam sayısı: … = Tüm yolların denenmesi mümkünsüzdür. Ama beyaz kutu uygulamasının diğer gerekçeleri vardır.
70
Tüm yolların yürütülmesi herzaman hatanın bulunması anlamına gelmez.
Örneğin, aşağıdaki kod parçasına bakalım; ‘eğer 3 tamsayının ortalaması birinciye eşitse, bu sayılar eşittir’ varsayımına dayanarak 3 tam sayının eşitliğinin hesaplanması if ((x+y+z)/3==x) printf("x, y, z eşittir"); else printf("x, y, z eşit değillerl); Test 1: x=1, y=2, z=3 Test 2: x=y=z=2 deneme verileri kullanılırsa kod parçasındaki tüm yollar denenecek, fakat parçada hata meydana çıkarılamayacak. (örn., x=2, y=1, z=3) Diğer bir örnek: (a) if (d==0) zero_division_routine; x=n/d; (b) x=n/d; (a) halinde d = 0 ve d != 0 denenmelidir. (b) halinde ise yalnız bir yol denenecek,bu halde hata ortaya çıkmayabilir
71
Beyaz Kutu Denemesine örnek
/*artı sayılarının ortalamasının bulunması*/ FindMean(float Mean, FILE ScoreFile) { SumOfScores = 0.0; NumberOfScores = 0; Mean = 0; Read(ScoreFile, Score); /* veri dosyasından sayının okunması */ while (! EOF(ScoreFile) { if ( Score > 0.0 ) { SumOfScores = SumOfScores + Score; NumberOfScores++; } Read(ScoreFile, Score); /* ortalamayı hesaplamalı ve sonucu yazdırmalı */ if (NumberOfScores > 0 ) { Mean = SumOfScores/NumberOfScores; printf(“ortalama sayı %f \n", Mean); } else printf(“dosyada sayı bulunmadı\n");
72
Beyaz Kutu denemesi örneği-yolların belirlenmesi
73
Örnek için akış çizgesi
74
Beyaz Kutu Denemesi (bir örnek daha)
1-8 sayıları düğümleri ifade ediyor. void main() { /* giriş sayılarının sayısını ve küçük sayılarla büyük sayıların ayrılıkta toplamını hesaplayan bir program */ int big_tot, small_tot, count, number; 1 big_tot = 0; small_tot = 0; count = 0; number = 1; 2 while (number) { 3 scanf(“%d”, &number); if (number > 100) 4 big_tot += number; 5 else if (number < 50) 6 small_tot += number; 7 count ++; } 8 printf(“%d %d %d”, count, big_tot, small_tot);
75
İfade denemesi Programın her bir cümlesi (ifadesi) en azından bir kere yürütülmüş olmalıdır. Basit ifadelere atama, giriş-çıkış, yordam çağırma ifadeleri ait edile biler. İfade denemesi için kıstas formal olarak böyledir: İfade denemesi kıstası. Öyle bir T deneme kümesi seçilmelidir ki, P programı yürütülürken T’deki her bir d giriş verileri için programın her bir basit ifadesi en az bir kere yürütülmüş olsun.
76
İfade denemesi yönteminin yetersizliği
Kontrol akışı grafında 1 düğümü while ifadesi ve 2 düğümü if ifadesi içermektedir. 1,2,3,4,5 yolu ile program yürütülürken ifade denemesi kıstası sağlanmış oluyor. Ama bu halde do-while ve if ifadeleri denenmemiş durumdadırlar
77
Kenar denemesi İfade denemesinin geliştirilmesidir. Kenar denemesi tüm kenarların (veya dalların) en azından bir kere (kenar ifade içermediği durumda da) denenmesini gerektiriyor. Örneğin, while veya if ifadelerinin doğru ve yanlış tarafları en azından bir kere yürütülmelidir. Bu kıstas formal olarak böyle ifade edile bilir: Kenar denemesi kıstası: Öyle bir T deneme durumu seçilmelidir ki, P programı yürütülürken T’deki her bir d verileri için P’nin akış grafındaki her bir kenar en azından bir kere taranmış olsun
78
Koşul denemesi if c1 and c2 then s1; else s2; if c1 then if c2 then
Öyle deneme durumları seçilmelidir ki, bu durumlara uygun verilerle programın akış çizgesindeki her bir kenar taranmış olsun ve karmaşık koşullardaki her bir alt koşulun mümkün değerleri en azından bir kere yürütülmüş olsun. Bu amaçla karmaşık koşul basit koşullara parçalanmalıdır: Örnek: if c1 and c2 then s1; else s2; karmaşık koşul yapısı deneme sürecinde aşağıdaki gibi ifade edilmelidir: if c1 then if c2 then
79
Kenar denemesine örnek
Kenar denemesi kıstasını sağlamak için öyle deneme durumları seçilmelidir ki, çizgedeki her bir kenar en azından bir kere taranmış olsun: 1, 2, 3, 4, 6, 7 1, 2, 4, 5, 6, 7 1, 2, 4, 6, 1, 2, 4, 6, 7 Göründüğü gibi deneme kümesindeki veriler her bir koşul için doğru ve yanlış değerleri kontrol edecek. Bu bakımdan kenar denemesi ifade denemesi ile nispette daha iyi bir yöntemdir
80
Koşul denenmesi Kenar denemesi daha fazla hata bula bilmesi için güçlendirile bilir. Verilmiş bir elemanı tabloda arayan böyle bir programa göz atalım: found = 0; counter = 0; while ((!found) && (counter < number_of_items - 1)) { if (table[counter] == desired_element) found = 1; counter++; } if (found) printf(“the desired element exists in the table”); else printf (“the desired element does not exist in the table”); Bu program parçasında yanlış olarak while-ifadesinde "<=“ yerine "<" kullanılmıştır. T = {<number_of_items = 0, desired_element = 2>, <number_of_items = 3, desired_element = table[1]>} deneme kümesi kenar denemesi kıstasını sağlamaktadır. Ama hatayı bulmayacaktır. Bunun nedeni ise koşulun karmaşık olması- "!found" ve "counter < number_of_items - 1“ gbi iki kısımdan oluşmasıdır. Baktığımız deneme kümesi bu karmaşık koşulun her bir kısmının doğru ve yanlış değerleri için yürütülmeği sağlamıyor
81
Beyaz ve kara kutu deneme teknikleri hataların yalnız var olduklarını göstere bilir. Ama, bu teknikler hataları ortaya çıkaran nedenleri aradan kaldırmaz.
82
Deneme yaklaşımları Deneme çalıştırması Mimari geçerlilik
Sistem mimarisinde hataları bulmak için yukarıdan aşağı deneme iyidir Sistemin gösterişi Yukarıdan aşağı deneme ile, geliştirmenin ilk aşamalarında sistemin sınırlı gösterimi yapıla biler Deneme çalıştırması Aşağıdan yukarıya deneme ile daha kolaydır Denemenin incelenmesi Her iki yaklaşımda sorunlar var.İnceleme için ilave programlar yapmak gerekiyor
83
Arayüzü Denemesi Modüller veya altsistemler, daha büyük sistemleri oluşturmak için bütünleştirildikte gerek ola bilir Arayüzü hatalarını veya arayüzleri hakkındaki yanlış varsayımları meydana çıkarmak için kullanılır Nesneler, arayüzleri ile tanımlandığı için nesneye yönelik geliştirmede önemlidir
84
Arayüzü denemesi
85
Arayüzü türleri Parametre arayüzleri: Ortak bellek arayüzleri
Veriler bir yordamdan diğerine gönderilir Ortak bellek arayüzleri Belleğin bir kısmı yordamlar arasında ortak kullanılır Yordamsal arayüzleri Altsistem, diğer altsistemleri çağırmak için yordamlar kümesini ihtiva eder Haber gönderme arayüzleri Altsistemler diğer altsistemlerden hizmetler istemektedir
86
Arayüzü hataları Arayüzü yanlış kullanılıyor Arayüzü anlaşılmazdır
Bir bileşenin diğer bileşeni çağırması zamanı arayüzü yanlış kullanılır (parametreler sırası yanlıştır) Arayüzü anlaşılmazdır Bileşen, çağrılan bileşenin davranışı hakkında doğru olmayan bilgiler içermektedir Zamanlama hataları Çağıran ve çağrılan bileşenlerde işlem süratleri farklıdır veya zamanı geçmiş verilere erişilir
87
Arayüzü Denemesi için tavsiyeler
Çağrılan yordama parametrelerin uç değerleri verilmelidir Bileşeni başarısızlığa götüren deneme tasarlamalı Haber aktarma sistemlerinde gerilim (stres) denemesini kullanmalı Ortak bellekli sistemlerde, bileşenlerin farklı ardışıklıkla belleğe erişimin denemeli
88
Stres denemesi Sistemi en fazla tasarım yüklenmesinde çalıştırmalı
Sistemler felaket biçiminde çökmemelidir. Gerilim denemesi, hizmet veya verilerin kabul edilemeyecek kaybını yoklamak içindir Özellikle, dağıtık sistemlerde kullanılması uygundur. Bu sistemler, ağın aşırı yüklenmesi ile bozulmalara çok meyillidir
89
Nesneye-yönelik deneme
Deneme bileşenleri nesne sınıflarıdır Beyaz kutu denemesi daha büyük boyutlarda kullanıla bilir
90
Bütünleşik denemesi Bütünleşen bileşenlerden oluşan sistemlerin veya altsistemlerin denemesi Bütünleşik denemesi kara kutu denemesidir ve belirteçler üzere gerçekleştirilir Hataların yerelleştirilmesi zordur Gelişen bütünleşik denemesi bu sorunu aradan götürür
91
Yazılım Mühendisliği Yönetimi
Alfa ve Beta Deneme Alfa Denemede; sistemin geliştirildiği yerde kullanıcıların gelerek katkıda bulunması sistemi test etmesi amaçlanmaktadır. Beta Denemede; kullanıcı, geliştirilen sistemi kendi yerleşkesinde, bir gözetmen eşliğinde yapar. Yazılım Mühendisliği Yönetimi Güray YILMAZ
92
Gelişen bütünleşik denemesi
93
Bütünleşik denemesi yaklaşımları
Yukarıdan aşağıya deneme Yüksek seviye sistemle başlayarak ve nerede gerekiyorsa ayrı-ayrı bileşenlerin yerine kütükler kullanarak yukarıdan aşağıya doğru bütünleşme Aşağıdan yukarıya deneme Aşağı seviyelerde ayrı-ayrı bileşenleri bütün sistem oluşuncaya dek bütünleştirme Uygulamalarda, genelde her iki strateji bir yerde kullanılır
94
Yukarıdan-aşağıya deneme
95
Aşağıdan yukarıya deneme
96
Deneme Seviyeleri Nesnelerle bağlı işlemleri denemeli
Nesne sınıflarını denemeli Birlikte çalışan (cooperating) nesneler kümelerini denemeli Nesneye Yönelik sistemi bütünlükte denemeli
97
Nesne sınıflarının denemesi
Nesnelerin tümüyle denenmesi için Nesneyle bağlı tüm işlemleri denemeli Tüm nesne özellikleri tanımlanmalı ve incelenmeli Nesne tüm mümkün durumlarda çalıştırılmalı Kalıtımlık nesne denemelerini zorlaştıran etkendir.
98
Küme (cluster) denemesi yaklaşımları
Kullanım durumlarının veya senaryolarının denenmesi Deneme, kullanıcının sistemle etkileşimine dayanmaktadır Kullanıcının beklediği sistem özelliklerinin denenmesi Tehlike denemesi Sistemin tehlikeli durumlarda tepkisinin denenmesi system
99
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 Yönetimi Güray YILMAZ
100
Önemli Noktalar Sistemin daha çok kullanılan kısımlarını dene Eşit parçalama, programın eşit yollarla davranışını denemek içindir. Kara kutu denemesi sistem belirteçleri üzere yapılır Yapısal deneme, programın tüm yollarının çalıştırılacağı deneme durumlarını belirler.
101
Önemli noktalar Deneme ölçümleri her ifadenin en az bir kez yürütülmesini sağlamalıdır. Arayüzlerinde hatalar, belirteçlerin yanlış okunulması, yanlış anlaşılması, doğru olmayan zamanlamalardan dolayı meydana gelmektedir Nesne sınıflarını denemek için tüm işlemleri, özellikleri ve durumları denemeli Nesneye yönelik sistemleri nesneler kümelerinde bütünleştirmeli
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.