31 Ekim 2016 Pazartesi

Yazılım Testine İlişkin


Murphy kanunu: (Eğer yazılım hatalı bir sonuç üretiyorsa bundan yazılımı üreten kişiler sorumludur ve bu sorunu onlar halletmelidir!
Bu kural Edward Murphy tarafından yazılım geliştirimi ile ilgili bir ölçü geliştirmek için ortaya atılmıştır.)

“Program testti, ancak hataların varlığını göstermek için kullanılır onların yokluğunda göstermek için değil!” Edsger Wybe Dijkstra 



“Test ile hata bulabilirsin ama hala daha fazlası vardır”
Hatalar nerelerden kaynaklana bilir.
Programcılar kötü günleri olabilir.
Programcılar aynı hataları yapmak eğilimindedir.
Bazı hatalar buzdağının sadece ucu gibidir.
Boris Beizer yaklaşımı: Daha fazla yazılım daha fazla testti beraberinde getirir “pestisit paradoksu”. Bu nedenle Boris Beizer bağışıklık testleri kavramını ortaya attı. Çözüm sürekli yazılımın farklı bölgelerinde yazılım kullanımı ile ve test kodu ile yazılımları test edin.

Yazılım Testi ile ilgili zorluklar.


Kaç tane test case oluşturulmalı? (Cevabı o kadar kolaymı?)
Yazılımın mevcut olan bütün girişlerinin doğru olarak alındığından emin olup.
Bütün girişleri ve çıkışları kontrol etmek.
Tanımlamaların doğru olduğu bilinmesi
Yazılım üretiminin ilk safhasında oluşan isterler yorumlamaya açık olması
Yazılım içerisine alınan giriş sayıları çok fazla olması.
Yazılımda oluşturulan çıkış sayıları çok fazla olması.
Yazılım içerisinde oluşan yol (path) sayısı çok fazla olması.
Girişleri test etmedin ve bir hata ile karşılaştın ne olur?
(Risk:Güven kaybı,para,zaman,vb . Bu yüzden testi yapan kişi üzerinde baskı kodlayan kişiye göre daha fazladır.)
Yazılım geliştirmede isterler oldukça sıra dışı ve özgürdür.
(Rekabet çok fazladır, Yaşam döngüleri çok hızlıdır. Yazılımı değiştirme yazılımcılara dışarıdan bakan kişiler için “kolaydır.”)

Yazılım Testine İlişkin…

Yazılımın testi yazılım risk temelli olarak yapılmalıdır.
  • Eğer yazılım içerisindeki bütün girişleri test edemez ise yazılım içerisinde risk almış olursun!

Daha fazla hata bulduğunda daha fazla test yapmalısın. (Ne Kadar? Kaç tane test case oluşturulmalı.)
  • Bulunan bütün hataların düzeltildiği söylenemez. (Neden Bütün Hataları düzelttiğimiz söylenemez?)
Tanımlamalar nihaiyi değildir.
Yazılım geliştiriciler arasında Yazılım testleri popüler değildir.
  • Yazılım Test mühendisinin amacı: Hataları bulmak,Hataları erken safhalarda oluşmadan bulmak.Hataların düzeltildiğinden emin olmak.
  • Popülerlik için ipuçları: Hataları erken bul.,Ani sinirlenme.,Kötü haberleri erkenden proje yöneticisine ulaştırma
Yazılım testi bir disiplindir ve yazılım projeleri içerisinde profesyonelce incelenmelidir.
  • Yazılım kolay ve yönetilebilir olduğunda(parçaları birbirinden ayrılmış) yazılımı test etmek daha kolaydır. Aksi durumlarda test işlemi daha zordur.
  • Günümüzdeki yazılımlar çok büyük ve karmaşık o nedenle test için
    • Yöntemler
    • Araçlar

Yazılım Test Modellileri ve Yazılım Geliştirme Modelleri

Yazılım geliştirme modelleri her zaman kullanılır mı?İdeal midir?

Plato’nun “ideal” ile ilgili ilginç benzetmeleri

"Fiziksel nesneler ve fiziksel olaylar, ideal veya mükemmel formların gölgeleridir. Onlar ölçeğine yaklaşabildiği kadar mükemmeldirler."

Waterfall modeli mükemmelidir?

Müşterinin ihtiyaçları hiçbir zaman tam olarak tanımlanamaz! Mükemmel olmamasının ikinci neden ise; bütün durumların gerçekleştirilmesi için yeterli zaman ve kaynak yoktur.
Bu nedenlerden dolayı sadece waterfall modeli değil hiç bir yazılım geliştirme modeli mükemmel değildir. Ancak yazılım geliştirmede seçilecek bir yazılım geliştirme modeli kullanılmalıdır.


Klavyeden girilen bir sayının tek mi yoksa çift mi olduğunu tespit eden programın algoritmasını geliştirelim.

Klavyeden girilen bir sayının tek mi yoksa çift mi olduğunu tespit eden programın algoritmasını geliştirelim.
Bu algoritmanın;
Sözde Kodunu yazınız.
Akış Şemasını çiziniz.



BAŞLA
x değerini oku
Eğer x mod 2 = 0 ise ekrana "çift" yaz değilse "tek" yaz.
BİTİR

Ekrana 667 defa “Yazılım Mühendisliği” yazan programın algoritmasını yazınız.


BAŞLA
Sayac = 0
Sayac = Sayac + 1
Ekrana "Yazılım Mühendisliği" yaz.
Eğer Sayac <= 667 ise 3. Adıma GİT
BİTİR

Yarıçap değeri klavyeden girilen bir dairenin alanını bulup, sonucu ekrana yazan programın algoritmasını yazınız.

Yarıçap değeri klavyeden girilen bir dairenin alanını bulup, sonucu ekrana yazan  programın algoritmasını yazınız.

BAŞLA
r değerini oku
A = 3 * r * r
A’yı yaz.
BİTİR

Verilen algoritmaların ekran çıktısını bulunuz.

Aşağıda verilen algoritmaların ekran çıktısını bulunuz.

BAŞLA
a = 3 , b = 4
T = a + b
a = a – 1
Eğer a > 0 ise 3’e GİT
T’yi yaz.
BİTİR


BAŞLA
a = 8 , b = 5
c = a + b
Eğer c > 0 ise 3’e GİT
c’yi ekrana yaz.
BİTİR

2.Dereceden bir denklemin Köklerini bulan Algoritma


BAŞLA
Denklemin a, b, c katsayılarını oku.
Diskriminant = b * b – 4 * a * c
Eğer Diskriminant < 0 ise “kökler sanal” yaz, GİT 9
K = Diskriminant1/2
x1 = (-b + K) / (2 * a)
x2 = (-b – K) / (2 * a)
x1, x2 yaz.
BİTİR