SlideShare a Scribd company logo
1 of 27
Download to read offline
PhpSpec ve TDD
TDD nedir?
Test-driven development, kod yazmadan önce,
kodun davranışını belirleyen testi, ardından bu
testin geçmesini sağlayan doğru kodun
yazılması ve bu işlemlerin otomatik olarak
denetlenmesidir.
TDD’ye basitçe başlama
1. Kod yazmadan önce, kodun nasıl
davranacağını belirleyen bir test yazın.

2. Kodu yazdıktan sonra bu test başarıyla
geçmeli.

3. Refactor edin.
Red Green Loop
Eksileri
• Başlarken TDD’ye vakit ayırmak gerekebilir, yavaş ilerliyormuş
izlenimi verebilir.

• Sade kod yazmaya odaklanmak ilerde sık refactor etmeyi
gerektirebilir.

• Sade test yazmayı öğrenmek zaman alabilir.

• Yazılım gereksinimleri sürekli değişiyorsa testleri tekrar tekrar
uyarlamak zaman alabilir.

• Tüm takımın katılması gerekir, tek başına olmaz.

• Legacy kodlara uygulanması çok zordur.
Artıları
• Modüler ve test edilebilir kod yazmanızı sağlar.

• Hataları daha erken tespit etmenizi sağlar ve maliyetleri
azaltır.

• Uzun vadede development süresini ciddi oranda kısaltır.

• Testler “live documentation” olur ve documentation olarak
kullanılabilir.

• Dalgınlık ile yapılmış hataların anında tespit edilmesini sağlar.

• Kod refactor etmeyi gerçek anlamda mümkün kılar.
PhpSpec
PhpSpec
• Ciaran McNulty, Marcello Duarte ve Konstantin
Kudryashov tarafından yazılmıştır.

• Ciaran McNulty tarafından maintain edilmektedir.

• Version 5 stable
Ana özellikleri
• Opinionated bir design aracıdır.

• Ana özelliği test etmek değildir, design etmeye
yardımcı olmaktır.

• Kodun yazılmasına yardımcı olur. Class, function
vb. kendi oluşturabilir, işleri hızlandırır.
Nasıl yüklenir?
composer require --dev phpspec/phpspec
Composer nedir?
https://medium.com/kodcular/kısaca-composer-ade8414e7789!
İlk class’ı yaratalım
./vendor/bin/phpspec describe CalculatorClass
Çalıştıralım
./vendor/bin/phpspec run
CalculateClassSpec.php
CalculateClass.php
Beklenen sonucu tanımlama
PhpSpec otomatik yaratıyor
Fonksiyonu yarattı, fail oldu
Yaratılan fonksiyon
Kodu yazdık
Test başarılı
Canlı kod
• İki rakamı birbiriyle çarpan bir özellik eklemek istiyoruz.

• Yapmamız gereken şeyler sırasıyla nelerdir?
PhpSpec Matchers
• Identity Matcher, === enforce eder.

shouldBe(), shouldReturn(), shouldEqual() & etc.

• Comparison Matcher, == kullanır, strict değildir.

shouldBeLike() & etc.

• Type matcher, dönen değerin tipini kontrol eder.

shouldBeAnInstanceOf(), shouldBeArray() & etc.

• Throw Matcher, exception throwlanmasını tespit edebilir.

shouldThrow() & etc.
Matcher’lar ile neredeyse her şey kontrol edilebilir.
Tüm matcherlar
Bütün matcher’lara değinmemiz bu sunum için olanaksız.

Ayrıntılı liste: 

http://www.phpspec.net/en/stable/cookbook/matchers.html
Kaynaklar
•https://www.phpspec.net/en/stable/

•https://www.slideshare.net/CiaranMcNulty/

•PHP UK 2018
Farklı PHP test tool’ları:

•PhpSpec

•PHPUnit

•CodeCeption

•SimpleTest

•Kahlan

•Atoum
Sorular
Teşekkür ederim
@yolcuiskender

More Related Content

What's hot (8)

Php unit ve tdd
Php unit ve tddPhp unit ve tdd
Php unit ve tdd
 
Kod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQubeKod Kalitesinin Sürekli Denetimi: SonarQube
Kod Kalitesinin Sürekli Denetimi: SonarQube
 
DevOps Pratikleri ile Yazılım Dünyasında Neler Değişiyor?
DevOps Pratikleri ile Yazılım Dünyasında Neler Değişiyor?DevOps Pratikleri ile Yazılım Dünyasında Neler Değişiyor?
DevOps Pratikleri ile Yazılım Dünyasında Neler Değişiyor?
 
Sunum tdd
Sunum tddSunum tdd
Sunum tdd
 
Test'le Yürüyen Geliştirme (TDD)
Test'le Yürüyen Geliştirme (TDD)Test'le Yürüyen Geliştirme (TDD)
Test'le Yürüyen Geliştirme (TDD)
 
Clean Code & Refactoring
Clean Code & RefactoringClean Code & Refactoring
Clean Code & Refactoring
 
Jasminebdd
JasminebddJasminebdd
Jasminebdd
 
Php projelerinde ci_uygulama
Php projelerinde ci_uygulamaPhp projelerinde ci_uygulama
Php projelerinde ci_uygulama
 

Similar to PhpSpec ve TDD

Similar to PhpSpec ve TDD (18)

Test Driven Development
Test Driven Development Test Driven Development
Test Driven Development
 
Clean code & refactoring
Clean code & refactoringClean code & refactoring
Clean code & refactoring
 
Temiz Kod
Temiz KodTemiz Kod
Temiz Kod
 
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)
 
Clean Code
Clean CodeClean Code
Clean Code
 
Unit test
Unit testUnit test
Unit test
 
Yazılımcı Gözüyle Scrum
Yazılımcı Gözüyle ScrumYazılımcı Gözüyle Scrum
Yazılımcı Gözüyle Scrum
 
Atlassian Clover
Atlassian CloverAtlassian Clover
Atlassian Clover
 
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
 
Tersine Mühendislik 101
Tersine Mühendislik 101Tersine Mühendislik 101
Tersine Mühendislik 101
 
Selenium sunum
Selenium sunumSelenium sunum
Selenium sunum
 
Visual Studio Developer Tools
Visual Studio Developer ToolsVisual Studio Developer Tools
Visual Studio Developer Tools
 
C# 5 Yeni özellikler
C# 5 Yeni özelliklerC# 5 Yeni özellikler
C# 5 Yeni özellikler
 
Meteor.js Hakkinda
Meteor.js HakkindaMeteor.js Hakkinda
Meteor.js Hakkinda
 
Test
TestTest
Test
 
Go Programlama Dili - Seminer
Go Programlama Dili - SeminerGo Programlama Dili - Seminer
Go Programlama Dili - Seminer
 
Web Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liğiWeb Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liği
 

PhpSpec ve TDD