SlideShare a Scribd company logo
1 of 23
Download to read offline
Test Driven
Development
ve
Unit Test
serhatleventyavas@gmail.com
https://www.linkedin.com/in/serhatleventyavas
https://github.com/serhatleventyavas
Serhat Levent Yavaş
Tasarım Kodlama Test
Eski Yaklaşım
Kaliteli Kod Nasıl Olur ?
• Kodlama standartlarına uygun

• Okunabilirliği yüksek

• Karmaşıklığı az

• Dökümante edilmiş

• Bakımı yapılabilir
Technical Debt
Test Driven Development
Nedir ?
1994 yılında ilk Test
Kütüphanesi yazdı
1998 Yılında XP’ de testleri
çoğunlukla ilk sırada yazmalıyız
dedi.
2002 yılında Test Driven
Development: By Test kitabını yazdı
Tasarım Test Kodlama
Yeni Yaklaşım
–Martin Fowler
“Herhangi bir şeyi debug etmeye kalktığınızda
bunun yerine test yazınız”
Test Driven Development
Döngüsü
Red
Refactor Green
TDD’da 3 Kural
Geçmeyen bir unit testi yazmadan, kod yazmamalısın.
Aynı anda bir fazla geçmeyen unit testi yazmamalısın.
Geçmeyen unit testi geçirecek kadar kod yazmalısın. Daha fazlası olmamalı.
TDD’de işlem döngüsü
1. Bir test yazılır.

2. Bütün testler çalıştırılır ve test
başarısız olur.

3. Hata düzeltilir ve test başarılı
hale getirilir.

4. Mevcut bütün testlerin başarılı
olması sağlanır.

5. Kod refactor edilir.
TDD - Faydaları
• Geliştirme sürecinde, birim testler tekrar tekrar çalıştırıldığından yazılım
gereksinimlerini karşılayıp karşılamadığı kolaylıkla kontrol edilebilir. 

• Yazılımı sadece ele alınan gereksinimi karşılayacak şekilde geliştirildiği için
gereksiz kod yazımı en aza indirilir.

• Her durum için bir birim testimiz olduğu için bakımı ve hata bulma
işlemleri kolaylaşacaktır.

• Sürekli testlere tabi tutulduğu için yazılım canlıya geçtiğinde gelebilecek
hata sayısı az olacaktır.

• İyi yazılmış bir birim test, test edilen tüm durumları tanımladığı için, iyi bir
dökümantasyon olacaktır.

• Genişletilebilir ve bağımlılıkları az olan kod yapımız olacaktır.
TDD, yazılım gelişim
sürecini yavaşlatır mı ?
Unit (Birim)
Test
Nedir ?
Test Case Yapısı
Execution
Setup
Validation
Cleanup
Arrange-Act-Assert (AAA)
Pattern
Arrange: Testleri çalıştırmak için gereken kurulumlar yapılır
Act: Test edilecek kod çağrılır
Assert: Testin geçmesi için gerekli koşul kriteri belirtilir
Unit Test Yazarken Dikkat Edilmesi
Gerekenler
• Test isimleri amacı yansıtmalı ve özellikleri yansıtmalı

• Bir unit test tek bir amacı test etmeli

• Testler okunabilir olmalı

• Birim testler kısa ve basit olmalı

• Bağımlılıklardan kaçının, izole ortam olmasını sağlayın
C# Unit Test Kütüphaneleri
• MsTest

• NUnit

• XUnit
Bundan Sonra;
• Test Doubles : Mock, Stub, Fake

• Integration Test

• System Test

• UI Test

• Refactoring
Okunması Gereken Kitaplar

More Related Content

What's hot

JUnit ve Docker yardimiyla kolay entegrasyon testleri
JUnit ve Docker yardimiyla kolay entegrasyon testleriJUnit ve Docker yardimiyla kolay entegrasyon testleri
JUnit ve Docker yardimiyla kolay entegrasyon testleriİlkin Balkanay
 
Test Driven Development
Test Driven Development Test Driven Development
Test Driven Development Nezir Yürekli
 
Yazilim Gelistirme Yöntemleri
Yazilim Gelistirme YöntemleriYazilim Gelistirme Yöntemleri
Yazilim Gelistirme Yöntemlerim_korkmaz
 
Kod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQubeKod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQubeEmre Dündar
 
Clean Code & Refactoring
Clean Code & RefactoringClean Code & Refactoring
Clean Code & Refactoringnedirtv
 
Açık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım GeliştirmeAçık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım GeliştirmeSerkan Kaba
 

What's hot (14)

Jenkins
JenkinsJenkins
Jenkins
 
Unit test
Unit testUnit test
Unit test
 
Visual Studio Developer Tools
Visual Studio Developer ToolsVisual Studio Developer Tools
Visual Studio Developer Tools
 
JUnit ve Docker yardimiyla kolay entegrasyon testleri
JUnit ve Docker yardimiyla kolay entegrasyon testleriJUnit ve Docker yardimiyla kolay entegrasyon testleri
JUnit ve Docker yardimiyla kolay entegrasyon testleri
 
Php unit ve tdd
Php unit ve tddPhp unit ve tdd
Php unit ve tdd
 
Test Driven Development
Test Driven Development Test Driven Development
Test Driven Development
 
Yazilim Gelistirme Yöntemleri
Yazilim Gelistirme YöntemleriYazilim Gelistirme Yöntemleri
Yazilim Gelistirme Yöntemleri
 
Kod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQubeKod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQube
 
Software/Yazılım Test
Software/Yazılım TestSoftware/Yazılım Test
Software/Yazılım Test
 
Jenkins Notlarım
Jenkins NotlarımJenkins Notlarım
Jenkins Notlarım
 
Keytorc Proje Ekibi Zubizu Sunumu - Emirhan Şen
Keytorc Proje Ekibi Zubizu Sunumu - Emirhan ŞenKeytorc Proje Ekibi Zubizu Sunumu - Emirhan Şen
Keytorc Proje Ekibi Zubizu Sunumu - Emirhan Şen
 
Selenium ile Web testi.
Selenium ile Web testi.Selenium ile Web testi.
Selenium ile Web testi.
 
Clean Code & Refactoring
Clean Code & RefactoringClean Code & Refactoring
Clean Code & Refactoring
 
Açık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım GeliştirmeAçık Kaynak Kodlu Yazılım Geliştirme
Açık Kaynak Kodlu Yazılım Geliştirme
 

Similar to Test Güdümlü Geliştirme ve Birim Testler

GDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme TeknikleriGDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme TeknikleriLemi Orhan Ergin
 
In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...
In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...
In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...Vahid Garousi
 
ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)
ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)
ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)İbrahim ATAY
 
Software development life cycle yazılım geliştirme yaşam döngüsü
Software development life cycle   yazılım geliştirme yaşam döngüsüSoftware development life cycle   yazılım geliştirme yaşam döngüsü
Software development life cycle yazılım geliştirme yaşam döngüsüMesut Günes
 
Yazılım mimarisi yazılım müh.
Yazılım mimarisi yazılım müh.Yazılım mimarisi yazılım müh.
Yazılım mimarisi yazılım müh.Hüseyin Örer
 
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriVisual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriMurat Başeren
 
Analist Eğitimi - Tüm Bölümler - [535 Slides]
Analist Eğitimi - Tüm Bölümler -  [535 Slides]Analist Eğitimi - Tüm Bölümler -  [535 Slides]
Analist Eğitimi - Tüm Bölümler - [535 Slides]Erol Bozkurt
 
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme PratikleriBaşarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme PratikleriLemi Orhan Ergin
 
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod YazmakSonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod YazmakMuhittin Özer
 
Yazılım Mimarileri - Yazılım Geliştirme Modelleri
Yazılım Mimarileri - Yazılım Geliştirme ModelleriYazılım Mimarileri - Yazılım Geliştirme Modelleri
Yazılım Mimarileri - Yazılım Geliştirme ModelleriKubra Kose
 
Yazılım Geliştirme Teknolojileri
Yazılım Geliştirme TeknolojileriYazılım Geliştirme Teknolojileri
Yazılım Geliştirme TeknolojileriYusuf AYTİN
 
Test Mühendisliğine Giriş Eğitimi - Bölüm 1
Test Mühendisliğine Giriş Eğitimi - Bölüm 1Test Mühendisliğine Giriş Eğitimi - Bölüm 1
Test Mühendisliğine Giriş Eğitimi - Bölüm 1Mesut Günes
 
Meteor.js Hakkinda
Meteor.js HakkindaMeteor.js Hakkinda
Meteor.js HakkindaUğur Oruc
 

Similar to Test Güdümlü Geliştirme ve Birim Testler (20)

GDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme TeknikleriGDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme Teknikleri
 
Selenium sunum
Selenium sunumSelenium sunum
Selenium sunum
 
Teste bakıs v01
Teste bakıs v01Teste bakıs v01
Teste bakıs v01
 
In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...
In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...
In Turkish: Yazılım Test-Kod Mühendisliği (YTKM): Kaliteli Test-Kodu Geliştir...
 
Test
TestTest
Test
 
ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)
ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)
ASP.Net MVC ile Web Uygulamaları -12(Test Drive Developmet)
 
Selenium
SeleniumSelenium
Selenium
 
Software development life cycle yazılım geliştirme yaşam döngüsü
Software development life cycle   yazılım geliştirme yaşam döngüsüSoftware development life cycle   yazılım geliştirme yaşam döngüsü
Software development life cycle yazılım geliştirme yaşam döngüsü
 
Yazılım mimarisi yazılım müh.
Yazılım mimarisi yazılım müh.Yazılım mimarisi yazılım müh.
Yazılım mimarisi yazılım müh.
 
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriVisual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
 
Analist Eğitimi - Tüm Bölümler - [535 Slides]
Analist Eğitimi - Tüm Bölümler -  [535 Slides]Analist Eğitimi - Tüm Bölümler -  [535 Slides]
Analist Eğitimi - Tüm Bölümler - [535 Slides]
 
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme PratikleriBaşarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
Başarılı Projelerin Anahtarı: Çevik Yazılım Geliştirme Pratikleri
 
Bilgi sis..
Bilgi sis..Bilgi sis..
Bilgi sis..
 
Atlassian Clover
Atlassian CloverAtlassian Clover
Atlassian Clover
 
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod YazmakSonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
 
Teams pitch3 (1)
Teams pitch3 (1)Teams pitch3 (1)
Teams pitch3 (1)
 
Yazılım Mimarileri - Yazılım Geliştirme Modelleri
Yazılım Mimarileri - Yazılım Geliştirme ModelleriYazılım Mimarileri - Yazılım Geliştirme Modelleri
Yazılım Mimarileri - Yazılım Geliştirme Modelleri
 
Yazılım Geliştirme Teknolojileri
Yazılım Geliştirme TeknolojileriYazılım Geliştirme Teknolojileri
Yazılım Geliştirme Teknolojileri
 
Test Mühendisliğine Giriş Eğitimi - Bölüm 1
Test Mühendisliğine Giriş Eğitimi - Bölüm 1Test Mühendisliğine Giriş Eğitimi - Bölüm 1
Test Mühendisliğine Giriş Eğitimi - Bölüm 1
 
Meteor.js Hakkinda
Meteor.js HakkindaMeteor.js Hakkinda
Meteor.js Hakkinda
 

Test Güdümlü Geliştirme ve Birim Testler