SlideShare a Scribd company logo
Test Driven Development
Test Driven Development Nedir ?
TDD'nin Tercih Edilmeme Nedenleri ?
TDD Zaman Kullanımı
TDD'nin Maddi Acidan Tercih Edilmeme Nedeni ?
TDD'nin Bize Getirileri
TDD'nin Cesitleri
Test Driven Development
Nedir ?
Test Driven Development diğer adlarıyla Test First Development, Test Driven Design olarak
anılmaktadır. İlk olarak Extreme Programming (XP) yazılım sürecinin oluşturucusu üstad Kent
Beck tarafından ortaya atılmıştır.Extreme programming(XP) ve günümüzdeki birçok Agile(çevik)
modern yazılım geliştirme süreçlerinin kodlama bakımından bel kemiğini oluşturmaktadır.
Test Driven Development’ın dışarıdan adını ilk duyduğunuzda geliştirdiğiniz yazılımı test etme ile
ya da yazılım ekibindeki Tester arkadaşlarla alakalı olduğunu düşünebilirsiniz fakat gerçekte
geliştirilmiş yazılımı test etmekten ziyade onu geliştirirken kullanılan yöntemidir. Kısaca
tanımlarsak kodu yazmadan önce testlerini yazıyoruz ardından bu testleri geçecek kodu
yazıyoruz.TDD bu şekilde devam eden bir yazılım geliştirme yöntemidir.Bu testleri kim yazacak?
Tabi ki kodu geliştiren yazılımcılar yani biz. Yeni bir fonksiyon ya da geliştirmeyi tanımlamak için
fail eden otomatik test yazma tekniği büyük ya da küçük birçok firmanın sundukları servislerin
kalitesini arttırmak ve geliştirme yapmak için mükemmel yöntemlerden biridir.
TDD'nin Tercih Edilmeme
Nedenleri
Test kodu yazmak genelde gereksiz, çok zaman alan, maliyetli ve
öğrenmesi/uygulaması zor olarak görülür. Bu yüzden bir çok kişi/şirket
TDD’den kaçınmayı tercih ediyor. Aslında düşünüldüğünde, TDD
uygulandığında az önce saydığım etkenlerden uzun vadede daha karlı
çıkılacağı artık bilinmeyen birşey değil.
Günümüzde kurumsal projelerin büyük bir bölümü geleneksel yazılım metotları ile
gerçekleştirilmektedir. Müşteri gereksinimleri en son detayına kadar kağıda döküldükten sonra,
programcılar dokumente edilen gereksinimler doğrultusunda yazılımı gerçekleştirmektedirler. Eğer
proje bütçesi yeterli ise, yazılım süreci sona erdikten sonra testler hazırlanarak, yazılım sistemi tes
edilmektedir. çoğu zaman hiçbir unit testin yapılmadığı sistemlerin firmalar tarafından kritik iş
alanlarında kullanıldığını görmek mümkündür. Bu tür yazılım sistemlerinde oluşan hatalar (Bug)
firmanın sunduğu hizmetleri kısıtlamakta ve en kötü ihtimalle firmanın para kaybetmesine sebep
olmaktadır
TDD Zaman Kullanimi
''TDD bize zaman kaybettiriyor. Deadline’a yetişmesi
gereken bir sürü iş var.''
Bu anti-TDD’cinin en önemli savunma mekanizmasıdır.
Kendisi bir konuda haklıdır. TDD ile yazdığınız kodun 2-3
katı kadar (belki daha çok) test kodu yazarsınız. Ancak
gözden kaçırdığı ise, kendisinin sadece günü kurtardığıdır.
Yazdığınız kodda değişiklik yaptığınızda diğer parçaların
hala beklenen bir şekilde çalıştığından emin olabilir misiniz?
TDD ile olabilirsiniz. Çünkü her bir birimin kendine özgü testi
vardır. Kod değiştiğinde tek yapmanız gereken daha
önceden hazır olan testleri bir kez daha çalıştırmak. Kısa
vadede günü kurtarıyorsunuz, ancak yazılımınız belki yıllarca
çalışacak.
TDD'nin Maddi Acidan Tercih
Edilmeme Nedeni ?
Geleneksel tarzda oluşturulan yazılım sistemlerinde oluşan hataları gidermek çok
pahalıya mal olabilmektedir, çünkü yazılım bittikten sonra tespit edilen hatalar
yazılım sistemindeki tasarım açıklarını gözler önüne serebilir ve bu gibi kardinal
hataların ortadan kaldırılması ya imkansız yada çok zor olabilir. Bunun yanı sıra
yazılım sona erdikten sonra oluşturulan testlerin test kapsama alanı geniş olmadığı
için kodun bazı bölümleri test edilememekte ve böylece hata tespiti zorlaşmaktadır.
Bu şekilde yazılım esnasında ortaya çıkmayan hatalar, daha sonra sistem
kullanıcıları tarafından keşfedilmektedirler. Bu aşamada geç kalınmıştır: ya sistem
çalışmaz durumdadır, yada sistem kullanıcısı istediği işlemi doğru olarak
gerçekleştirememiştir. Durumu kısaca şöyle özetleyebiliriz: “yazılım sistemi
müşterinin gereksinimlerini tatmin edecek kaliteye sahip değildir”.
Ne yazık ki birçok firma için kullandıkları yazılım sistemlerindeki kalite problemleri
firmaya zarar verici durumdadır. Bu kalite problemleri bir taraftan oluşan sistem
hataları, diğer taraftan kodun bakımı ve geliştirilmesinin zor olmasından
kaynaklanmaktadır. Oluşan sistem hataları firmanın giderlerini artırmakta ve yazılım
sisteminin istikrarsız ve güvenilmez olmasına sebep vermektedir. Bu sorunların
temelinde test konseptlerinin bir yazılım sistemi için hayat sigortası olduğunun
anlaşılamamış olması yatmaktadır
TDD'nin Bize Getirileri Maddeler Halinde Sunlardir;
●
Sadece ilgili birim testlerin yapılarak kodun güvenli hale getirilmesi.
● Kod tasarımından kaynaklanabilecek problemlerin ortadan kaldırılması.
●
Testlerin bir bütün haline getirilerek, geriye dönük testlerin sürecin önemli bir parçası haline getirilmesi.
● Yeni eklenen kodlar, ya da değiştirilen kodlarda mevcut kodların işlevlerinin bozulmaması.
●
Kodların güvenli ortamda nesneye yönelik tasarı mimarisine uygun üretilmesini azami ölçüde
kolaylaştırması.
●
Kodların dokümantasyon yerine, test senaryolarından daha kolay anlaşılabilir olması.
● Sağlanan güvenli ortam sayesinde, refactoring işlemlerinin güvenli hale getirilmesi.
●
Bug oluşması ihtimalinin azaltılması.
● Her an live ortama geçilebilecek kodların çıkarılması.
●
Gereksiz kod kalabalığının ortadan kaldırılması.
● Test ekibinin gerçek test işlemlerine odaklanmasının sağlanması.
● Proaktif çalışma sayesinde, sıkıcı bir geliştirme ortamı yerine, eğlenceli ve güvenli bir ortamda
motivasyonu yüksek ekiplerin oluşturulabilmesi.
TDD'nin Cesitleri
Unit Testing (Birim Testler)
Bir yazılımın her bir biriminin kendine özgü testler ile dışa bağımlı olmadan test edilmesi
anlamına geliyor. Yani bir kullanıcı login mekanizmasını test ediyorsanız, veritabanı ve
cookielere bağlı olmadan kodunuzun beklendiği aşamaları kaydedip kaydetmediğinize
bakıyorsunuz.
Functional Testing (Fonksiyon Testi)
Adından da anlaşılabileceği üzere, bir işlevin gerektiği gibi çalışıp çalışmadığını test
etmemize yarıyor. Az önce unit testte veritabanı ve cookie’ye bağlı olmadan login
mekanizmasını test etmiştik. Functional testler ile veritabanı ile bağlantıya geçtiğinde
gerçekten doğru bir şekilde login olup cookieleri doğru bir şekilde kaydedip
kaydetmediğini de test ediyoruz.
Tümleyim Testi (Integration Testing) : Bir uygulamanın farklı bileşenlerinin beraberce
uyum içinde çalışıp çalışmadığını sınamak için yapılan bir testtir. Bileşenler, modüller,
bağımsız uygulamalar, istemci/sunucu uygulamaları biçiminde olabilirler. Bu tür testlere,
özellikle istemci/sunucu uygulamaları ve dağıtık sistemlerin testinde başvurulmaktadır.
Bunun yanısıra uygulamaya yeni işlevsel elemanlar ya da program modülleri eklendikçe
sürekli test edilmesi işlemine de “Artımsal Tümleyim Testi” adı verilir. Test uzmanları
ve/veya programcılar tarafından gerçekleştirilen testlerdir.
Regresyon Testi (Regression Testing) : Uygulamada ve uygulama ortamlarında
gerekli değişiklikler ve sabitlemeler yapıldıktan sonra yeniden yapılan testlere çekilme
(regresyon) testi denilir. Böylece, önceki testlerde belirlenen sorunların giderildiğinden ve
yeni hatalar oluşmadığından emin olunur. Uygulamanın kaç kez yeniden test edilmesi
gerektiğini belirlemek güçtür ve bu nedenle, özellikle uygulama geliştirme döneminin
sonlarına doğru yapılır.
Zorlanım – Performans Testi (Performance Testing) : Bu test, çoğu kez "yük testi" ile
aynı anlamda kullanılmaktadır. Aynı zamanda, beklenmedik (normal olmayan) ağır
yükler, belirli eylemler ve taleplerin çok fazla artışı, çok yoğun sayısal işlemler, çok
karmaşık sorgulamalar vb. ağır koşullar altında olan bir sistemin işlevsellik testi (iş
yapabilme testi) olarak da tanımlanabilmektedir. Bir web sitesi için sistem tepkisinin
hangi noktada azaldığı veya yanıt veremez olduğunu belirlemek için yapılan testler,
performans testine örnek teşkil edebilir.
Kullanıcı Kabul Testi (User Acceptance Testing) : Son kullanıcı veya müşteri
siparişine (veya isteklerine) dayanan son test işlemidir. Kullanıcıların, uygulamayı
“kabul” etmeden önce, söz konusu uygulamanın gereksinimlerini ne ölçüde
karşılayıp karşılamadığını belirleyip, geri dönüş yapabileceği testlerdir.
Beyaz Kutu Test Tekniği (White Box Testing Technic) : Beyaz kutu test
tekniğinin en genel tabiri kod testidir. Projenin hem kaynak kodu, hem de derlenmiş
kodu test edilir. Bu tür testler, uygulama kodunun iç mantığı üzerindeki bilgiye
bağlıdır. Yazılım kodundaki deyimler, akış denetimleri, koşullar vb. elemanlar
sınanır.
Kara Kutu Test Tekniği (Black Box Testing Technic ) : Test ekipleri tarafından en
çok kullanılan teknik olan kara kutu test tekniği adından da anlaşılacağı gibi
uygulamanın sadece derlenmiş kodu üzerinden test edilmesi olarak bilinir. Bu test
tekniğinde, yazılımın programatik yapısı, tasarımı veya kodlama tekniği hakkında
herhangi bir bilgi olması gerekli değildir. Yazılımın gereksinimine duyulan şeylere
yanıt verip veremediği ve işlevselliği sınanmaktadır.
Giray KÜREKÇİ No : 13125026
Bolum : Bilgisayar Programcılığı

More Related Content

What's hot

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
 
Test Güdümlü Geliştirme ve Birim Testler
Test Güdümlü Geliştirme ve Birim TestlerTest Güdümlü Geliştirme ve Birim Testler
Test Güdümlü Geliştirme ve Birim Testler
serhatlevent910
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
Sistek Yazılım
 
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
Kubra Kose
 
50 Soruda Yazılım Testi
50 Soruda Yazılım Testi50 Soruda Yazılım Testi
50 Soruda Yazılım Testi
Keytorc Software Testing Services
 
Yazılım projeleri süreç performans ölçümü
Yazılım projeleri süreç performans ölçümüYazılım projeleri süreç performans ölçümü
Yazılım projeleri süreç performans ölçümü
TUBITAK
 
PhpSpec ve TDD
PhpSpec ve TDDPhpSpec ve TDD
PhpSpec ve TDD
YolcuIskender
 
SDLC - Software Development Life Cycle
SDLC - Software Development Life CycleSDLC - Software Development Life Cycle
SDLC - Software Development Life Cycle
Dilaver Demirel
 
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
Mesut Günes
 
Yazılım geliştirme süreçleri2
Yazılım geliştirme süreçleri2 Yazılım geliştirme süreçleri2
Yazılım geliştirme süreçleri2 canevzat
 
Test Mühendisliğine Giriş Eğitimi - Bölüm 2
Test Mühendisliğine Giriş Eğitimi - Bölüm 2Test Mühendisliğine Giriş Eğitimi - Bölüm 2
Test Mühendisliğine Giriş Eğitimi - Bölüm 2
Mesut Günes
 
Yazılım Projelerine Scrum Yazılım Geliştirme Modelinin Uygulanması ve Scrum Y...
Yazılım Projelerine Scrum Yazılım Geliştirme Modelinin Uygulanması ve Scrum Y...Yazılım Projelerine Scrum Yazılım Geliştirme Modelinin Uygulanması ve Scrum Y...
Yazılım Projelerine Scrum Yazılım Geliştirme Modelinin Uygulanması ve Scrum Y...
Cenk Derinozlu
 
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders NotlarıCBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
Tuğrul Can Şöllü
 
ISTQB PROJELERDE HATA YÖNETİMİ
ISTQB PROJELERDE HATA YÖNETİMİISTQB PROJELERDE HATA YÖNETİMİ
ISTQB PROJELERDE HATA YÖNETİMİ
PEM Proje Eğitim Merkezi
 
Yazilim Gelistirme Yöntemleri
Yazilim Gelistirme YöntemleriYazilim Gelistirme Yöntemleri
Yazilim Gelistirme Yöntemleri
m_korkmaz
 

What's hot (18)

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ü
 
Test Güdümlü Geliştirme ve Birim Testler
Test Güdümlü Geliştirme ve Birim TestlerTest Güdümlü Geliştirme ve Birim Testler
Test Güdümlü Geliştirme ve Birim Testler
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
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
 
50 Soruda Yazılım Testi
50 Soruda Yazılım Testi50 Soruda Yazılım Testi
50 Soruda Yazılım Testi
 
Yazılım projeleri süreç performans ölçümü
Yazılım projeleri süreç performans ölçümüYazılım projeleri süreç performans ölçümü
Yazılım projeleri süreç performans ölçümü
 
PhpSpec ve TDD
PhpSpec ve TDDPhpSpec ve TDD
PhpSpec ve TDD
 
Test
TestTest
Test
 
SDLC - Software Development Life Cycle
SDLC - Software Development Life CycleSDLC - Software Development Life Cycle
SDLC - Software Development Life Cycle
 
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
 
Yazılım geliştirme süreçleri2
Yazılım geliştirme süreçleri2 Yazılım geliştirme süreçleri2
Yazılım geliştirme süreçleri2
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test Mühendisliğine Giriş Eğitimi - Bölüm 2
Test Mühendisliğine Giriş Eğitimi - Bölüm 2Test Mühendisliğine Giriş Eğitimi - Bölüm 2
Test Mühendisliğine Giriş Eğitimi - Bölüm 2
 
Php unit ve tdd
Php unit ve tddPhp unit ve tdd
Php unit ve tdd
 
Yazılım Projelerine Scrum Yazılım Geliştirme Modelinin Uygulanması ve Scrum Y...
Yazılım Projelerine Scrum Yazılım Geliştirme Modelinin Uygulanması ve Scrum Y...Yazılım Projelerine Scrum Yazılım Geliştirme Modelinin Uygulanması ve Scrum Y...
Yazılım Projelerine Scrum Yazılım Geliştirme Modelinin Uygulanması ve Scrum Y...
 
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders NotlarıCBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
CBÜ - Yazılım Mimarisi ve Tasarımı Ders Notları
 
ISTQB PROJELERDE HATA YÖNETİMİ
ISTQB PROJELERDE HATA YÖNETİMİISTQB PROJELERDE HATA YÖNETİMİ
ISTQB PROJELERDE HATA YÖNETİMİ
 
Yazilim Gelistirme Yöntemleri
Yazilim Gelistirme YöntemleriYazilim Gelistirme Yöntemleri
Yazilim Gelistirme Yöntemleri
 

Viewers also liked

Target audienec prezi
Target audienec preziTarget audienec prezi
Target audienec prezi
Mia Jones
 
New pages
New pagesNew pages
New pages
xxgogoxxbg1
 
A social media blueprint for you and your job
A social media blueprint for you and your jobA social media blueprint for you and your job
A social media blueprint for you and your job
Chris Myers
 
Contact Ministry
Contact MinistryContact Ministry
Contact Ministry
Pushkar Patil
 
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ایارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
javid13l
 
bảng giá làm tvc quảng cáo kiến trúc
bảng giá làm tvc quảng cáo kiến trúcbảng giá làm tvc quảng cáo kiến trúc
bảng giá làm tvc quảng cáo kiến trúcgary228
 
9788499640327
97884996403279788499640327
9788499640327
diosbeto
 
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ایارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
javid13l
 
THE POWER OF THOUGHTS- spired by Rhonda Byrne's - The Power
THE POWER OF THOUGHTS- spired by Rhonda Byrne's - The PowerTHE POWER OF THOUGHTS- spired by Rhonda Byrne's - The Power
THE POWER OF THOUGHTS- spired by Rhonda Byrne's - The PowerSesilia Nekwaya
 
Alessandro Manzoni
Alessandro ManzoniAlessandro Manzoni
Alessandro Manzoni
Selene98
 
L'illuminismo nella letteratura italiana
L'illuminismo nella letteratura italianaL'illuminismo nella letteratura italiana
L'illuminismo nella letteratura italiana
Selene98
 
Giacomo Leopardi
Giacomo LeopardiGiacomo Leopardi
Giacomo Leopardi
Selene98
 
Jason charles bernard CV 2016
Jason charles bernard CV 2016Jason charles bernard CV 2016
Jason charles bernard CV 2016
Jason Bernard
 
Ugo foscolo
Ugo foscoloUgo foscolo
Ugo foscolo
Selene98
 

Viewers also liked (15)

Target audienec prezi
Target audienec preziTarget audienec prezi
Target audienec prezi
 
New pages
New pagesNew pages
New pages
 
A social media blueprint for you and your job
A social media blueprint for you and your jobA social media blueprint for you and your job
A social media blueprint for you and your job
 
Contact Ministry
Contact MinistryContact Ministry
Contact Ministry
 
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ایارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
 
bảng giá làm tvc quảng cáo kiến trúc
bảng giá làm tvc quảng cáo kiến trúcbảng giá làm tvc quảng cáo kiến trúc
bảng giá làm tvc quảng cáo kiến trúc
 
9788499640327
97884996403279788499640327
9788499640327
 
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ایارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
ارزیابی تخریب عایق کابل های مورد استفاده در نیروگاه های هسته ای
 
THE POWER OF THOUGHTS- spired by Rhonda Byrne's - The Power
THE POWER OF THOUGHTS- spired by Rhonda Byrne's - The PowerTHE POWER OF THOUGHTS- spired by Rhonda Byrne's - The Power
THE POWER OF THOUGHTS- spired by Rhonda Byrne's - The Power
 
Alessandro Manzoni
Alessandro ManzoniAlessandro Manzoni
Alessandro Manzoni
 
TERRITORY MANGT
TERRITORY MANGTTERRITORY MANGT
TERRITORY MANGT
 
L'illuminismo nella letteratura italiana
L'illuminismo nella letteratura italianaL'illuminismo nella letteratura italiana
L'illuminismo nella letteratura italiana
 
Giacomo Leopardi
Giacomo LeopardiGiacomo Leopardi
Giacomo Leopardi
 
Jason charles bernard CV 2016
Jason charles bernard CV 2016Jason charles bernard CV 2016
Jason charles bernard CV 2016
 
Ugo foscolo
Ugo foscoloUgo foscolo
Ugo foscolo
 

Similar to Sunum tdd

Test Driven Development
Test Driven Development Test Driven Development
Test Driven Development
Nezir Yürekli
 
BTRisk Yazılım Güvenliği Yönetimi Eğitimi
BTRisk Yazılım Güvenliği Yönetimi EğitimiBTRisk Yazılım Güvenliği Yönetimi Eğitimi
BTRisk Yazılım Güvenliği Yönetimi Eğitimi
BTRisk Bilgi Güvenliği ve BT Yönetişim Hizmetleri
 
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
 
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
 
Jenkins Notlarım
Jenkins NotlarımJenkins Notlarım
Jenkins Notlarım
Cem Topkaya (MSc)
 
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
Lemi Orhan Ergin
 
PHPUnit ve Laravel
PHPUnit ve LaravelPHPUnit ve Laravel
PHPUnit ve Laravel
Osman Yuksel
 
Developer Tools
Developer ToolsDeveloper Tools
Developer Tools
Burak Erol
 
Cevik Yaklasim, Scrum ve XP Pratikleri
Cevik Yaklasim, Scrum ve XP PratikleriCevik Yaklasim, Scrum ve XP Pratikleri
Cevik Yaklasim, Scrum ve XP Pratikleri
Osman DÖNER, PMP, PMI-ACP
 
Unit testing
Unit testingUnit testing
Unit testing
Serdar Sönmez
 
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
Serkan Kaba
 
Atlassian Clover
Atlassian CloverAtlassian Clover
Atlassian Clover
OBSS Bilişim
 
Sge Technology (SGE Teknoloji Tanıtım Sunumu)
Sge Technology (SGE Teknoloji Tanıtım Sunumu)Sge Technology (SGE Teknoloji Tanıtım Sunumu)
Sge Technology (SGE Teknoloji Tanıtım Sunumu)
SGE Technology
 
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimiYazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Betul Kesimal
 
E-ticarette Yazılım ve Altyapı
E-ticarette Yazılım ve AltyapıE-ticarette Yazılım ve Altyapı
E-ticarette Yazılım ve Altyapı
Murat Kader
 
Bilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma Testleri
BGA Cyber Security
 
Bilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBGA Cyber Security
 
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine Giriş
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine GirişSilk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine Giriş
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine Giriş
Burak AVCI, MEM, PSM I®
 
Gartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
Gartner EEE - Yazılım Geliştirme - SoftTech DeneyimleriGartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
Gartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
halilaksu
 

Similar to Sunum tdd (20)

Test Driven Development
Test Driven Development Test Driven Development
Test Driven Development
 
Bilgi sis..
Bilgi sis..Bilgi sis..
Bilgi sis..
 
BTRisk Yazılım Güvenliği Yönetimi Eğitimi
BTRisk Yazılım Güvenliği Yönetimi EğitimiBTRisk Yazılım Güvenliği Yönetimi Eğitimi
BTRisk Yazılım Güvenliği Yönetimi Eğitimi
 
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]
 
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)
 
Jenkins Notlarım
Jenkins NotlarımJenkins Notlarım
Jenkins Notlarım
 
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
 
PHPUnit ve Laravel
PHPUnit ve LaravelPHPUnit ve Laravel
PHPUnit ve Laravel
 
Developer Tools
Developer ToolsDeveloper Tools
Developer Tools
 
Cevik Yaklasim, Scrum ve XP Pratikleri
Cevik Yaklasim, Scrum ve XP PratikleriCevik Yaklasim, Scrum ve XP Pratikleri
Cevik Yaklasim, Scrum ve XP Pratikleri
 
Unit testing
Unit testingUnit testing
Unit testing
 
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
 
Atlassian Clover
Atlassian CloverAtlassian Clover
Atlassian Clover
 
Sge Technology (SGE Teknoloji Tanıtım Sunumu)
Sge Technology (SGE Teknoloji Tanıtım Sunumu)Sge Technology (SGE Teknoloji Tanıtım Sunumu)
Sge Technology (SGE Teknoloji Tanıtım Sunumu)
 
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimiYazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
Yazılım mühendisliğinde i̇nsan bilgisayar etkileşimi
 
E-ticarette Yazılım ve Altyapı
E-ticarette Yazılım ve AltyapıE-ticarette Yazılım ve Altyapı
E-ticarette Yazılım ve Altyapı
 
Bilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma Testleri
 
Bilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma TestleriBilgi Güvenliğinde Sızma Testleri
Bilgi Güvenliğinde Sızma Testleri
 
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine Giriş
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine GirişSilk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine Giriş
Silk Test Framework Kurulumu ve Yazılım Test Otomasyon Mimarisine Giriş
 
Gartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
Gartner EEE - Yazılım Geliştirme - SoftTech DeneyimleriGartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
Gartner EEE - Yazılım Geliştirme - SoftTech Deneyimleri
 

Sunum tdd

  • 1. Test Driven Development Test Driven Development Nedir ? TDD'nin Tercih Edilmeme Nedenleri ? TDD Zaman Kullanımı TDD'nin Maddi Acidan Tercih Edilmeme Nedeni ? TDD'nin Bize Getirileri TDD'nin Cesitleri
  • 2. Test Driven Development Nedir ? Test Driven Development diğer adlarıyla Test First Development, Test Driven Design olarak anılmaktadır. İlk olarak Extreme Programming (XP) yazılım sürecinin oluşturucusu üstad Kent Beck tarafından ortaya atılmıştır.Extreme programming(XP) ve günümüzdeki birçok Agile(çevik) modern yazılım geliştirme süreçlerinin kodlama bakımından bel kemiğini oluşturmaktadır. Test Driven Development’ın dışarıdan adını ilk duyduğunuzda geliştirdiğiniz yazılımı test etme ile ya da yazılım ekibindeki Tester arkadaşlarla alakalı olduğunu düşünebilirsiniz fakat gerçekte geliştirilmiş yazılımı test etmekten ziyade onu geliştirirken kullanılan yöntemidir. Kısaca tanımlarsak kodu yazmadan önce testlerini yazıyoruz ardından bu testleri geçecek kodu yazıyoruz.TDD bu şekilde devam eden bir yazılım geliştirme yöntemidir.Bu testleri kim yazacak? Tabi ki kodu geliştiren yazılımcılar yani biz. Yeni bir fonksiyon ya da geliştirmeyi tanımlamak için fail eden otomatik test yazma tekniği büyük ya da küçük birçok firmanın sundukları servislerin kalitesini arttırmak ve geliştirme yapmak için mükemmel yöntemlerden biridir.
  • 3. TDD'nin Tercih Edilmeme Nedenleri Test kodu yazmak genelde gereksiz, çok zaman alan, maliyetli ve öğrenmesi/uygulaması zor olarak görülür. Bu yüzden bir çok kişi/şirket TDD’den kaçınmayı tercih ediyor. Aslında düşünüldüğünde, TDD uygulandığında az önce saydığım etkenlerden uzun vadede daha karlı çıkılacağı artık bilinmeyen birşey değil. Günümüzde kurumsal projelerin büyük bir bölümü geleneksel yazılım metotları ile gerçekleştirilmektedir. Müşteri gereksinimleri en son detayına kadar kağıda döküldükten sonra, programcılar dokumente edilen gereksinimler doğrultusunda yazılımı gerçekleştirmektedirler. Eğer proje bütçesi yeterli ise, yazılım süreci sona erdikten sonra testler hazırlanarak, yazılım sistemi tes edilmektedir. çoğu zaman hiçbir unit testin yapılmadığı sistemlerin firmalar tarafından kritik iş alanlarında kullanıldığını görmek mümkündür. Bu tür yazılım sistemlerinde oluşan hatalar (Bug) firmanın sunduğu hizmetleri kısıtlamakta ve en kötü ihtimalle firmanın para kaybetmesine sebep olmaktadır
  • 4. TDD Zaman Kullanimi ''TDD bize zaman kaybettiriyor. Deadline’a yetişmesi gereken bir sürü iş var.'' Bu anti-TDD’cinin en önemli savunma mekanizmasıdır. Kendisi bir konuda haklıdır. TDD ile yazdığınız kodun 2-3 katı kadar (belki daha çok) test kodu yazarsınız. Ancak gözden kaçırdığı ise, kendisinin sadece günü kurtardığıdır. Yazdığınız kodda değişiklik yaptığınızda diğer parçaların hala beklenen bir şekilde çalıştığından emin olabilir misiniz? TDD ile olabilirsiniz. Çünkü her bir birimin kendine özgü testi vardır. Kod değiştiğinde tek yapmanız gereken daha önceden hazır olan testleri bir kez daha çalıştırmak. Kısa vadede günü kurtarıyorsunuz, ancak yazılımınız belki yıllarca çalışacak.
  • 5. TDD'nin Maddi Acidan Tercih Edilmeme Nedeni ? Geleneksel tarzda oluşturulan yazılım sistemlerinde oluşan hataları gidermek çok pahalıya mal olabilmektedir, çünkü yazılım bittikten sonra tespit edilen hatalar yazılım sistemindeki tasarım açıklarını gözler önüne serebilir ve bu gibi kardinal hataların ortadan kaldırılması ya imkansız yada çok zor olabilir. Bunun yanı sıra yazılım sona erdikten sonra oluşturulan testlerin test kapsama alanı geniş olmadığı için kodun bazı bölümleri test edilememekte ve böylece hata tespiti zorlaşmaktadır. Bu şekilde yazılım esnasında ortaya çıkmayan hatalar, daha sonra sistem kullanıcıları tarafından keşfedilmektedirler. Bu aşamada geç kalınmıştır: ya sistem çalışmaz durumdadır, yada sistem kullanıcısı istediği işlemi doğru olarak gerçekleştirememiştir. Durumu kısaca şöyle özetleyebiliriz: “yazılım sistemi müşterinin gereksinimlerini tatmin edecek kaliteye sahip değildir”. Ne yazık ki birçok firma için kullandıkları yazılım sistemlerindeki kalite problemleri firmaya zarar verici durumdadır. Bu kalite problemleri bir taraftan oluşan sistem hataları, diğer taraftan kodun bakımı ve geliştirilmesinin zor olmasından kaynaklanmaktadır. Oluşan sistem hataları firmanın giderlerini artırmakta ve yazılım sisteminin istikrarsız ve güvenilmez olmasına sebep vermektedir. Bu sorunların temelinde test konseptlerinin bir yazılım sistemi için hayat sigortası olduğunun anlaşılamamış olması yatmaktadır
  • 6. TDD'nin Bize Getirileri Maddeler Halinde Sunlardir; ● Sadece ilgili birim testlerin yapılarak kodun güvenli hale getirilmesi. ● Kod tasarımından kaynaklanabilecek problemlerin ortadan kaldırılması. ● Testlerin bir bütün haline getirilerek, geriye dönük testlerin sürecin önemli bir parçası haline getirilmesi. ● Yeni eklenen kodlar, ya da değiştirilen kodlarda mevcut kodların işlevlerinin bozulmaması. ● Kodların güvenli ortamda nesneye yönelik tasarı mimarisine uygun üretilmesini azami ölçüde kolaylaştırması. ● Kodların dokümantasyon yerine, test senaryolarından daha kolay anlaşılabilir olması. ● Sağlanan güvenli ortam sayesinde, refactoring işlemlerinin güvenli hale getirilmesi. ● Bug oluşması ihtimalinin azaltılması. ● Her an live ortama geçilebilecek kodların çıkarılması. ● Gereksiz kod kalabalığının ortadan kaldırılması. ● Test ekibinin gerçek test işlemlerine odaklanmasının sağlanması. ● Proaktif çalışma sayesinde, sıkıcı bir geliştirme ortamı yerine, eğlenceli ve güvenli bir ortamda motivasyonu yüksek ekiplerin oluşturulabilmesi.
  • 7. TDD'nin Cesitleri Unit Testing (Birim Testler) Bir yazılımın her bir biriminin kendine özgü testler ile dışa bağımlı olmadan test edilmesi anlamına geliyor. Yani bir kullanıcı login mekanizmasını test ediyorsanız, veritabanı ve cookielere bağlı olmadan kodunuzun beklendiği aşamaları kaydedip kaydetmediğinize bakıyorsunuz. Functional Testing (Fonksiyon Testi) Adından da anlaşılabileceği üzere, bir işlevin gerektiği gibi çalışıp çalışmadığını test etmemize yarıyor. Az önce unit testte veritabanı ve cookie’ye bağlı olmadan login mekanizmasını test etmiştik. Functional testler ile veritabanı ile bağlantıya geçtiğinde gerçekten doğru bir şekilde login olup cookieleri doğru bir şekilde kaydedip kaydetmediğini de test ediyoruz.
  • 8. Tümleyim Testi (Integration Testing) : Bir uygulamanın farklı bileşenlerinin beraberce uyum içinde çalışıp çalışmadığını sınamak için yapılan bir testtir. Bileşenler, modüller, bağımsız uygulamalar, istemci/sunucu uygulamaları biçiminde olabilirler. Bu tür testlere, özellikle istemci/sunucu uygulamaları ve dağıtık sistemlerin testinde başvurulmaktadır. Bunun yanısıra uygulamaya yeni işlevsel elemanlar ya da program modülleri eklendikçe sürekli test edilmesi işlemine de “Artımsal Tümleyim Testi” adı verilir. Test uzmanları ve/veya programcılar tarafından gerçekleştirilen testlerdir. Regresyon Testi (Regression Testing) : Uygulamada ve uygulama ortamlarında gerekli değişiklikler ve sabitlemeler yapıldıktan sonra yeniden yapılan testlere çekilme (regresyon) testi denilir. Böylece, önceki testlerde belirlenen sorunların giderildiğinden ve yeni hatalar oluşmadığından emin olunur. Uygulamanın kaç kez yeniden test edilmesi gerektiğini belirlemek güçtür ve bu nedenle, özellikle uygulama geliştirme döneminin sonlarına doğru yapılır. Zorlanım – Performans Testi (Performance Testing) : Bu test, çoğu kez "yük testi" ile aynı anlamda kullanılmaktadır. Aynı zamanda, beklenmedik (normal olmayan) ağır yükler, belirli eylemler ve taleplerin çok fazla artışı, çok yoğun sayısal işlemler, çok karmaşık sorgulamalar vb. ağır koşullar altında olan bir sistemin işlevsellik testi (iş yapabilme testi) olarak da tanımlanabilmektedir. Bir web sitesi için sistem tepkisinin hangi noktada azaldığı veya yanıt veremez olduğunu belirlemek için yapılan testler, performans testine örnek teşkil edebilir.
  • 9. Kullanıcı Kabul Testi (User Acceptance Testing) : Son kullanıcı veya müşteri siparişine (veya isteklerine) dayanan son test işlemidir. Kullanıcıların, uygulamayı “kabul” etmeden önce, söz konusu uygulamanın gereksinimlerini ne ölçüde karşılayıp karşılamadığını belirleyip, geri dönüş yapabileceği testlerdir. Beyaz Kutu Test Tekniği (White Box Testing Technic) : Beyaz kutu test tekniğinin en genel tabiri kod testidir. Projenin hem kaynak kodu, hem de derlenmiş kodu test edilir. Bu tür testler, uygulama kodunun iç mantığı üzerindeki bilgiye bağlıdır. Yazılım kodundaki deyimler, akış denetimleri, koşullar vb. elemanlar sınanır. Kara Kutu Test Tekniği (Black Box Testing Technic ) : Test ekipleri tarafından en çok kullanılan teknik olan kara kutu test tekniği adından da anlaşılacağı gibi uygulamanın sadece derlenmiş kodu üzerinden test edilmesi olarak bilinir. Bu test tekniğinde, yazılımın programatik yapısı, tasarımı veya kodlama tekniği hakkında herhangi bir bilgi olması gerekli değildir. Yazılımın gereksinimine duyulan şeylere yanıt verip veremediği ve işlevselliği sınanmaktadır.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15. Giray KÜREKÇİ No : 13125026 Bolum : Bilgisayar Programcılığı