Merhaba,

Test yazılması tabiriyle sıklıkla karşılaşıyorum.Fakat anlamını henüz idrak edemedim. Yazılım geliştirilme sürecinde testlerin hayati önem arz etmekte olduğunu biliyorum.Peki, test yazılması tabiri yazılımı kontrol için yazılan ayrı programlar mıdır? Test yazılması ne demektir?

soruldu: 05 Tem '14, 12:39

ugurcanlacin's gravatar image

ugurcanlacin
816101625
cevap kabul oranı: 11%


Sana kısaca şöyle özetleyeyim. Yazdığımız kodu yine kendi yazdığımız başka bir kodun kontrol etmesidir test yazılması.

Şimdi bir örnek vereyim ki gerçek hayatta böyle basit metodlar karşımıza çıkmaz. Aşağıdaki gibi bir kod parçası olduğunu varsayalım. Bir toplama işlemi yapıyorum ve bu toplama işleminde sayi1=3,sayi2=4 gönderdiğimde 7 sonucunun dönmesi gerektiğini biliyorum.

public class Hesaplama
{
    public int Toplama(int sayi1, int sayi2)
    {
        return sayi1 + sayi2;
     }
}

Şimdide bu metodun bir tane unit testini NUnit kullanarak yazayım.

[Test]
public void ToplamaTest()
{
    Hesaplama hesaplama=new Hesaplama();
    var sonuc = hesaplama.Toplama(3, 4);

    //sonuc' un 7 olması gerektiğini kontrol ediyorum
    Assert.AreEqual(7,sonuc);
}

Eğer başka bir yazılımcı yada sen bu toplama metodunda bir değişiklik yaptığında farkında olmadan kodu bozduysan. Unit testleri çalıştırdığında seni uyaracaktır ve sende anında müdahale edebileceksin.

Ayrıca unit testleri inceleyerek metodun nasıl çalıştığını anlamak daha kolay oluyor.Unit test sayesinde daha az hata ile daha stabil çalışan uygulamalar geliştirebiliriz.

Update: Bu anlatımda değinilmesi gereken çok önemli bir nokta daha var aslında. Projemizin devasa boyutta olduğunu ve bu toplama metodunun bir çok yerde kullanıldığını ayrıca diğer tüm metodlarımızında unit testlerini de yazmış olduğunu varsayalım. Müşteri bu toplama metodunun değiştirilmesini istedi ve sizde bu talebe göre güncellediniz. Unit test yazdığımız için bu değişikliğin projenizde kaç yeri etkileyeceğini bulmanız çok kolay olacaktır. Testleri çalıştıracaksın ve toplama metodunun kullanıldığı tüm testler bu değişiklik üzerine patlayacaktır ve sisteminizin değişikliklerden nasıl etkilendiğini çok kolay takip edebileceksiniz.

Kısacası 'Unit Test candır'.

permanent link

cevaplandı: 05 Tem '14, 13:26

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

değiştirildi: 06 Tem '14, 17:03

1

O kadar güzel açıkladınız ki anlamamak elde değil :) Çok teşekkür ederim.

(05 Tem '14, 13:29) ugurcanlacin ugurcanlacin's gravatar image
1

Öylesine konuya bakmak için girdim,ama Müslüm ÖZTÜRK'ün verdiği cevabın anlaşılırlığını acizane takdir etmek için yazdım.Benim de sormak istediğim bir soruydu ve sormadan tek bir cevapla anladım.

(05 Tem '14, 22:13) azizc azizc's gravatar image
1

Güzel yorumlarınız için bende sizlere teşekkür ederim

(06 Tem '14, 07:15) Müslüm ÖZTÜRK M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

o halde bu tarz işlemler sadece static veriler || objeler için kullanılır mı diycez

(07 Tem '14, 10:15) özcan %C3%B6zcan's gravatar image

Anladığım kadarıyla unit test konusunda kafasında soru işareti olan arkadaşlar epeyce çoğunlukta. Bende hem özcan arkadaşımızın sorusuna cevaben hemde ilgilenen arkadaşlara ışık olması açısından Netbeans+Junit+Mockito kullanarak örnek bir uygulama üzerinden Unit Test konusuna giriş yaparak kafalardaki soru işaretlerini gidermeyi amaçladım. Yazarak değil de video ile daha anlaşılır olacağını düşünerek aşağıdaki videoyu hazırladım. İnşallah amacına ulaşır. Herkese iyi çalışmalar.

UnitTestVeMockInNetbeans.mp4

permanent link

cevaplandı: 07 Tem '14, 18:12

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

Hocam videoyu izledim. Random ile işlem yapmanız biraz daha komplike şeyleri anlama konusunda yardımcı oldu. Çok teşekkürler.

(07 Tem '14, 19:26) ugurcanlacin ugurcanlacin's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×14

Soruldu: 05 Tem '14, 12:39

Görüntüleme: 963 kez

Son güncelleme: 07 Tem '14, 19:55

powered by BitNami OSQA