76
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

YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Embed Size (px)

DESCRIPTION

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. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

YAZILIM KALİTESİYAZILIM HATALARIDENEME

Sarı arka planlı sayfalar bilgi amaçlıdır; içeriği sınav soruları kapsamına dahil değil

Page 2: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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.

Page 3: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

«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 1947. 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

Page 4: YAZILIM KALİTESİ YAZILIM HATALARI DENEME
Page 5: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 6: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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…

Page 7: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 8: YAZILIM KALİTESİ YAZILIM HATALARI DENEME
Page 9: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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.

Page 10: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

DENEMEDENEME STRATEJİLERİ

Page 11: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 12: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Yazılım Kalitesinin Sağlanması

Yazılım Mühendisliği

Yöntemleri

Formal Teknik İnceleme

Standartlar ve Yöntemler

Deneme

Ölçme

Yazılım Kalite Yöneticiliği ve Yazılım kalite Güvencesi

Yazılım sistemi

Page 13: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Yazılım Deneme Adımları

Sistem Denemesi

Bütünleme Denemesi

Birim d.

Deneme yönü

gereksinimler

tasarım

kod

Page 14: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 15: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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ı

Page 16: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Deneme Ölçekleri

Arayüzü bütünlüğü İşlevsel geçerlilik Bilgi tamlığı Başarım

Page 17: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Kusurların denenmesi

Sistem kusurlarının varlığını ortaya çıkaran deneme programları

Page 18: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Kusur denemesi sureci

Design testcases

Prepare testdata

Run programwith test data

Compare resultsto test cases

Testcases

Testdata

Testresults

Testreports

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ı

deneme durumları deneme verileri deneme sonuçları deneme raporları

Page 19: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Birim Denemesi:Ayrı-ayrı program bileşenlerinin

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

Page 20: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Birim Denemesi Birim Denemesi yazılım ürününün en

küçük birimi üzere doğrulama işlemlerini yapmak içindir

ModulArayüzü

Yerel veri yapısı

Sınır koşulları

Bağımsız yollar

Deneme durumları

Page 21: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 22: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 23: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 24: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Deneme öncelikleri

Page 25: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Deneme verileri ve deneme durumları

Page 26: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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çmeli00000, 09999,10000, 10001, 99999, 100000

Eşit parçalama

Page 27: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Eşit parçalama-örnek

Between 10000 and 99999Less than 10000 More than 99999

999910000 50000

10000099999

Input values

Between 4 and 10Less than 4 More than 10

34 7

1110

Number of input values

Page 28: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

İ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ırT’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 ))

Page 29: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

İkili arama-eşit parçalama

Page 30: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

İkili arama-deneme durumları

Page 31: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Arama modülü-girişlerin parçalanması

Dizi Eleman Tek değer Dizinin ortasında Tek değer Dizide yok 1’den çok değer Dizinin birinci elemanı 1’den çok değer Dizinin sonuncu elemanı 1’den çok değer Dizinin orta elemanı 1’den çok değer Dizide yok

Giriş dizini (T) Aranan (Key)

Sonuç (Found, L)

17 17 true, 1 17 0 false, ?? 17, 21, 23,29 17 true, 1 9,16,18, 30,31,41,45 45 true, 7 17, 18, 21, 23, 29, 38,41 23 true, 4 21, 23, 29, 33, 38 25 false, ??

Page 32: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

İkili arama-eşit parçalama

Mid-point

Elements < Mid Elements > Mid

Equivalence class boundaries

Page 33: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 34: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Kara kutu denemesi

Ie

Input test data

OeOutput test results

System

Inputs causinganomalousbehaviour

Outputs which revealthe presence ofdefects

Normal olmayan durumlara neden olan girişler

Kusurların varlığını ortaya çıkaran çıkışlar

Çıkış deneme sonuçları

Giriş deneme verileri

Page 35: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 36: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 37: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 38: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Beyaz kutu 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

Page 39: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Beyaz kutu denemesi

Componentcode

Testoutputs

Test data

DerivesTests

Bileşenin (modülün) kodu

Denemeler alınıyor

Page 40: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Beyaz kutu 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

Page 41: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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.

Page 42: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 43: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Programın akış çizgesi

Page 44: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Binary search (Java)

class BinSearch {

// This is an encapsulation of a binary search function that takes an array of// ordered objects and a key and returns an object with 2 attributes namely// index - the value of the array index// found - a boolean indicating whether or not the key is in the array// An object is returned because it is not possible in Java to pass basic types by// reference to a function and so return two values// the key is -1 if the element is not found

public static void search ( int key, int [] elemArray, Result r ){

int bottom = 0 ;int top = elemArray.length - 1 ;int mid ;r.found = false ; r.index = -1 ;while ( bottom <= top ){

mid = (top + bottom) / 2 ;if (elemArray [mid] == key){

r.index = mid ;r.found = true ;return ;

} // if partelse{

if (elemArray [mid] < key)bottom = mid + 1 ;

elsetop = mid - 1 ;

}} //while loop

} // search} //BinSearch

İKİLİ ARAMA ALGORİTMASI

1

2

3

4

65

7

while bottom <= top

if (elemArray [mid] == key

(if (elemArray [mid]< key8

9

bottom > top

Page 45: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

İkili arama modülü için akış çizgesi

1

2

3

4

65

7

while bottom <= top

if (elemArray [mid] == key

(if (elemArray [mid]< key8

9

bottom > top

1, 2, 3, 8, 91, 2, 3, 4, 6, 7, 21, 2, 3, 4, 5, 7, 21, 2, 3, 4, 6, 7, 2, 8, 9Deneme durumları öğle seçilmelidir ki, tüm bu yollar yürütülmüş olsun

Bağımsız yollar

Page 46: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Beyaz kutu denemesi (örnek)Böyle bir akış çizgesine bakalım:

loop <= 10 times

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ı:5 1 + 5 2 + 5 3 + … + 5 10 = 12207030Tüm yolların denenmesi mümkünsüzdür. Ama beyaz kutu uygulamasının diğer gerekçeleri vardır.

Page 47: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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; else 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

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ı

Page 48: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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);} elseprintf(“dosyada sayı bulunmadı\n");}

Page 49: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Beyaz Kutu denemesi örneği-yolların belirlenmesi

Page 50: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Örnek için akış çizgesi

Page 51: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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); }

Beyaz Kutu Denemesi (bir örnek daha)

1

2

3

4 5

6

7 8

1-8 sayıları düğümleri ifade ediyor.

Page 52: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

İ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.

Page 53: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

İfade denemesi yönteminin yetersizliği

1

2

4

3

5

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

Page 54: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 55: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

1

2

4

5

3

6

7

Kenar denemesi kıstasını sağlamak için aşağıdaki yollar öyle yürütülmelidir ki, çizgenin her bir kenarı en azından bir kere taranmış olsun:

1, 2, 3, 4, 6, 71, 2, 4, 5, 6, 71, 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

Kenar denemesine örnek

Page 56: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 57: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Koşul denemesi kıstasıÖyle bir T deneme durumu seçmeli ki, P programının yürütülürken T2deki her

bir d giriş verileri için 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 deneme kıstasını,karmaşık koşulu basit koşullara parçalamakla daha iyi anlamak mümkündür.

Örnek:if c1 and c2 then

s1;else

s2;İfadesi aşağıdaki ifadeye eşittir:if c1 then

if c2 thens1;

elses2;

elses2;

Page 58: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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.

Page 59: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Deneme yaklaşımları 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

Page 60: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Arayüzü Denemesi

Page 61: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Arayüzü denemesi

Testcases

BA

C

Page 62: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Arayüzü türleri Parametre 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üzleriAltsistem, diğer altsistemleri çağırmak için

yordamlar kümesini ihtiva eder Haber gönderme arayüzleri

Altsistemler diğer altsistemlerden hizmetler istemektedir

Page 63: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Arayüzü hataları Arayüzü yanlış kullanılıyor

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ırBileş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

Page 64: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 65: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 66: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Deneme bileşenleri nesne sınıflarıdır Beyaz kutu denemesi daha büyük

boyutlarda kullanıla bilir

Nesneye-yönelik deneme

Page 67: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 68: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Gelişen bütünleşik denemesi

T3

T2

T1

T4

T5

A

B

C

D

T2

T1

T3

T4

A

B

C

T1

T2

T3

A

B

Test sequence1

Test sequence2

Test sequence3

Page 69: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Bütünleşik denemesi yaklaşımları

Yukarıdan aşağıya denemeYü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 denemeAş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

Page 70: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Yukarıdan-aşağıya deneme

Level 2Level 2Level 2Level 2

Level 1 Level 1Testing

sequence

Level 2stubs

Level 3stubs

. . .

Page 71: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Aşağıdan yukarıya deneme

Level NLevel NLevel NLevel NLevel N

Level N–1 Level N–1Level N–1

Testingsequence

Testdrivers

Testdrivers

Page 72: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

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

Page 73: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Nesne sınıflarının denemesi

Nesnelerin tümüyle denenmesi içinNesneyle bağlı tüm işlemleri denemeliTüm nesne özellikleri tanımlanmalı ve

incelenmeliNesne tüm mümkün durumlarda çalıştırılmalı

Kalıtımlık nesne denemelerini zorlaştıran etkendir.

Page 74: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Küme (cluster) denemesi yaklaşımları Kullanım durumlarının veya senaryolarının

denenmesiDeneme, kullanıcının sistemle etkileşimine

dayanmaktadırKullanıcının beklediği sistem özelliklerinin

denenmesi Tehlike denemesi

Sistemin tehlikeli durumlarda tepkisinin denenmesi system

Page 75: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Ö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.

Page 76: YAZILIM KALİTESİ YAZILIM HATALARI DENEME

Ö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