1 / 36

YZM 320 - Yazılım Doğrulama ve Geçerlileme

YZM 320 - Yazılım Doğrulama ve Geçerlileme. Hazırlayan:Emin BORANDAĞ. 6.Bölüm White Box Testting. White box Testi. Test kodun çalıştırılmasına dayanır.

amato
Download Presentation

YZM 320 - Yazılım Doğrulama ve Geçerlileme

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. YZM 320 - Yazılım Doğrulama ve Geçerlileme Hazırlayan:Emin BORANDAĞ

  2. 6.Bölüm White Box Testting

  3. White box Testi • Test kodun çalıştırılmasına dayanır. • Bu testin temel amacı, yazılımın cümlelerinin,Kodun izleyebileceği bütün yolların, koşul cümlelerinin ve veri akışının doğruluğunun onaylanmasıdır.

  4. Akış Kontrol Testi • Akış Kontrol testi(Control-flow testing): Yapısal bir test stratejisidir. Programın akışı üzerinden yapılmaktadır. • Akış kontrol testleri, veri akışı üzerinde sorun olması düşünülen kısımlarının alınıp test edilmesine dayanmaktadır. • Seçilen yollar üzerinde belirlenen test kümesi ile test işlemi gerçekleştirilir. • Her bir veri program içerisindeki değerleri gözden geçirilir ve bu verilerin doğru çalışıp çalışmadıklarını belirlemek için veri yolları seçilir.

  5. Motivasyon • Yeni yazılımlar için en çok kullanılan unit test yöntemidir. • Kontrol akış test varsayımları • özellikleri doğru • Veri tanımlanır düzgün • Kontrol akışını etkileyecek hatalar haricinde başka hata yok. • Yapısal ve OO diller akış ile ilgili hataları azaltmayı ön görecek şekilde geliştirililmişir.

  6. Kontrol Akış Grafiği • Programın kontrol yapısını gösteren grafiksel bir çizimdir.

  7. Akış grafiği üç temel ilkeden oluşmaktadır. • Program içerisinde if yada case gibi program akışını etkileyen durumlar olacaktır. • End if, end loop, goto label gibi statementler program akışını etkilemektedir. • Süreç blokarı ise kesintisiz kodlardır. Herhangi bir şekilde akışı değiştirmezler.

  8. Üst Algoritması 1 scanf(“%d %d”,&x, &y); 2 if (y < 0) pow = -y; else pow = y; 3 z = 1.0; 4 while (pow != 0) { z = z * x; pow = pow - 1; 5 } 6 if (y < 0) z = 1.0 / z; 7 printf (“%f”,z); 1 2 3 5 4 6 7

  9. Bubble Sort Algoritması 1 for (j=1; j<N; j++) { last = N - j + 1; 2 for (k=1; k<last; k++) { 3 if (list[k] > list[k+1]) { temp = list[k]; list[k] = list[k+1]; list[k+1] = temp; 4 } 5 } 6 } 7 print(“Done\n”); 1 2 3 4 5 6 7

  10. Yollar. • Bir program aracılığıyla bir yol, bir giriş, kavşak veya karar başlar veya biter. Farklı değişkenler ile bu kavşaklar ve değerler değişmesi mümkündür. • Yollar durumları içermektedir. Bir yol birçok, kavşak, süreç veya karar, bir veya birkaç kez geçebilir. • En küçük statment bir linkdir. Tek bir durumdur iki nokta(node) arasını gösterir. • Bir yolun uzunluğu onan sahip olduğu bağlantı sayısını gösterir. • Yollar bir giriş, çıkış yolu veya komple bir yol rutin üyeliğine sahiptir. (Başlangıç,bitiş yada bir sonraki süreci gösterirler)

  11. Yollar(Paths) devamı. • Yolun tamamlanması test için gereklidir. • Bu sayede kollar üzerinde oluşan değerlerin ne şekilde değiştikleri incelene bilir. • Dinamik test olduğundan isteğe bağlı olarak durdurulup farklı değerler ile test edilmesi zordur.

  12. Yol Seçme Kriteri • Yazılım içerisinde onlarca farklı yol vardır. • Küçük bir routine olsa bile onlarca farklı yola sahip olabilir.

  13. Tamamlama testtini nasıl gerçekleştireceğiz! • Her bir yolun bir bitiş noktası vardır. • Her bir statments en az bir kere çalıştırılmalıdır. • Her bir dal en az bir kere çalıştırılmalıdır.

  14. Akış Kontrol Test Kriterleri • Path Testing ( ): • %100 bütün yollardan geç değerler oluştur doğruluğuna bak. • Bütün olası akışları belirle ve belirlediğin o akışlar üzerinden gitmeye çalış. 1 2 3 4 5 6 7

  15. Akış Kontrol Test Kriterleri • Durum(Statement) Testti ( ): • %100 Statment(Covarage) • Bütün kodları en az bir kere çalıştır. • Koşul testi(Branch) • Bütün koşulları en az bir kere test et. • Koşul içi sonuç durumu 2 den fazla ise daha fazla test datası ile test et(Case)

  16. Durum (Statement)veKoşul (branch coverage) testleri 20 yılı aşkın bir süredir kullanılmaktadır. Pek çok yazılım şirketinde yeni bir yazılım geliştirildiğinde temel unit testler olarak kullanılmaktadır. • Yazılımlar yüksek oranda koşullara sahip olduğu için koşul kaplama tekniği daha çoğunluk ile tercih edilmektedir.

  17. “The more we learn about testing, the more we realize that statement and branch coverage are minimum floors below which we dare not fall, rather that ceilings to which we should aspire.” - B. Beizer.

  18. Hangi Yol • Doğru bir Path Testing yapılması için; öncellikle yazılım içerisinde yeterli sayıda yol seçimi yapılması gerekmektedir. • Soru: Yazılım içerisinde kaç adet test oluşturulmalı. • Cevap: Karmaşık olan az test yerine kolay olan fazla test yapılmalıdır.

  19. a b c d e 1 3 4 5 6 2 h f i g l k j 10 9 8 7 T F T F m P1 and P2 Coverage

  20. Branch ve Statement Coverage • Soru:Eğer bir karar [ T (true) yadaF (false)] varsa hangi tür test yapılmalıdır? • Cevap:Koşul testi [Branch coverage.] • Soru:Eğer her bir durum en az bir kere değer verilip sonuç alınmak isteniyorsa hangi tür aklımıza gelmeli? • Cevap:Durum testi [statement coverage.]

  21. Guidelines • Öncelikli olarak bir yol seç ve her seferinde bir ufak değişiklik yap.

  22. Kontrol Akış testinin etkinliği • Yaklaşık olarak hataların %65 unit testler ile bulunur. • Unit testler içerisinde en çok kullanılanı (control-flow testing) akış kontrol testidir. • Araştırmalar göstermiştir ki hataların %50 si akış kontrol [control-flow testing] testtisayesinde bulunmaktadır. • Bu teknik; yapısal programlama dillerinde yapısal olmayan dillere göre daha etkilidir.

  23. Akış testinin Limitleri • Ara yüz karışıklıkları ve hataları yakalanamaz! • Initialization hatalarının tamamı yakalanamaz! • Tanımlama ile ilgili hatalar yakalanamaz!

  24. Test Sonuçları • Testten hangi sonuçları istiyoruz? • Test sonuçları oldukça detaylı olmalı ! • Testti tasarlarken test sonucunda ortaya çıkacak değerler test dizayn sürecinden önce belirlenmeli!

  25. Test Süreci • Testti çalıştır. • Programın verdiği sonuçları al. • Bunu daha önceden beklenen sonuçlar ile karşılaştır.

  26. Test Süreçleri Sonu ile İlgili Sorular. • Soru: Bizim beklediğimiz sonuçları program bize vermesi durumunda test programının doğru çalıştığını söyleye bilir miyiz? • Cevap: • Soru: Farz edin biz covering test için bir test seti hazırladık ve her bir durum için istenilen sonuçları elde ettik. Bütün koşulları kapsamış olur muyuz? • Cevap:

  27. Yol(Path) Araçları /* ABS This program function returns the absolute value of the integer passed to the function as a parameter. INPUT: An integer. OUTPUT: The absolute value if the input integer. */ 1int ABS(int x) 2{ 3if (x < 0) 4 x = -x; 5return x; 6}

  28. Hata Normalde doğru olarak gözüken bir fonksiyon sınır değerinden daha fazla bir sayı ile test edilince taşma hatası oluştu. Çünkü girilen değer integer olarak alınmakta idi.

  29. PATHS PROCESS LINKS TEST CASES a b c d INPUT OUTPUT abc    A Negative Integer, x -x adc    A Positive Integer, x x

  30. PATHS DECISIONS TEST CASES INPUT OUTPUT abc T A Negative Integer, x -x adc F A Positive Integer, x x

  31. Özet

  32. Sonuçlar • Akış kontrol testi ile [control-flow testing] yazılımlar içerisindeki hataların önemli bir kısmı buluna bilir. • Akış kontrol testi kullanıldığında koşul ve durum testleri de beraber kullanılması elde edilecek başarıyı arttıracaktır. Bu nedenle 3 test yöntemi de bir arada kullanılmalıdır. • Test işlemini yaparken tek bir yol üzerine bağlı kalmayıp olabilecek diğer yolları da test etmek gerkelidir.

  33. Sonuçlar devam • Araçlar ve manual kullanarak diğer yolarında doğruluğunu test etmek önemlidir. • Bütün testleri ve test öncesinde belirlenen datalar ile test sonuçlarında elde edilen veriler saklanmalıdır. • Bir testtin doğru çalışması o yapı üzerinde hata olmadığını göstermez!

  34. Son incelenen konular… • … control flow testing • … statement coverage • … branch coverage

  35. Etc • 10.1.1.82 www.hurriyet.com.tr # deneme

More Related